110 likes | 266 Views
A Review of Graphs for Testing. Directed graphs. A directed graph G(V,E) A finite V = {n 1 , n 2 , …, n m } of nodes A finite set E = {e 1 , e 2 , …, e p } of edges Each edge e k = { n i , n j } is an ordered pair (start and end nodes) V = {n1, n2, n3}
E N D
Directed graphs • A directed graph G(V,E) • A finite V = {n1, n2, …, nm} of nodes • A finite set E = {e1, e2, …, ep} of edges • Each edge ek = {ni, nj} is an ordered pair (start and end nodes) • V = {n1, n2, n3} • E = {e1, e2, e3} = {(n1,2), (n2,n3), (n2,n4)} e1 e2 n1 n2 n3 e3 n4
Graph terminology • Indegree (ni): the number of distinct edges that have ni as a terminal node • Outdegree (ni): the number of distinct edges that have ni as starting node • Source node: a node with indegree={} • Sink node: a node with outdegree = {} • Transfer node: a node with indegree !={} and outdegree != {}
Graph terminology • Directed path: a sequence of edges such that for any adjacent pairs of ei, ej, the terminal node of ei is the start node of ej • Connectedness: for two odes ni, nj • 0-connected: iff there is no path between ni, nj • 2-connected: iff there is a path between ni, nj • 3-connected: iff there is a path from ni to nj and a path from nj to ni • Strongly connected graph: all pairs of nodes are 3-connected
Program graphs • Given a program in an imperative language, its graph is a directed graph in which noes are either entire statements or fragments of a statement and edges represent flow of control
Program graphs • Given a program in an imperative language, its graph is a directed graph in which noes are either entire statements or fragments of a statement and edges represent flow of control
Cyclomatic complexity • The cyclomatic number of a graph G is given by • V(G) = e – n + 2, where • e is the number of edges in G • n is the number of nodes in G • Cyclomatic complexity pertains to both ordinary and directed graphs • V(G) is sometimes called McCabe Complexity after Thomas McCabe
Cyclomatic complexity • Used for testing (identifying the number of independent paths) and design (reduce complexity) • It gives the number of independent paths from in a program (also called the basis path) • It provides the degree of complexity