graph-based testing
TRANSCRIPT
![Page 1: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/1.jpg)
Graph-Based TestingCSE 5324
1CSE 5324, Ali Sharifara, UTA
![Page 2: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/2.jpg)
Graph-Based Testing
• Introduction• Basic Concepts• Control Flow Testing• Data Flow Testing• Summary
CSE 5324, Ali Sharifara, UTA 2
![Page 3: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/3.jpg)
Motivation
• Graph-based testing first builds a graph model for the program under test, and then tries to cover certain elements in the graph model.– Graph is one of the most widely used
structures for abstraction.– Graph is a well-defined, well-studied
structure and is one of the most fundamental data structures in computer science
CSE 5324, Ali Sharifara, UTA 3
![Page 4: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/4.jpg)
Major Steps
• Step 1: Build a graph model– What information to be captured, and how to
represent those information?• Step 2: Identify test requirements (TR)
– A test requirement is a structural entity in the graph model that must be covered during testing
• Step 3: Select test paths to cover those requirements
• Step 4: Derive test data so that those test paths can be executed
CSE 5324, Ali Sharifara, UTA 4
![Page 5: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/5.jpg)
Graph Models
• Control Flow Graph: Captures information about how the control is transferred in a program.
• Data Flow Graph: Augments a CFG with data flow information
• Dependency graph: Captures the data/control dependencies among program statements
• Cause-effect graph: Modeling relationships among program input conditions, known as causes, and output conditions, known as effects
CSE 5324, Ali Sharifara, UTA 5
![Page 6: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/6.jpg)
Graph-Based Testing
• Introduction• Basic Concepts• Control Flow Testing• Data Flow Testing• Summary
CSE 5324, Ali Sharifara, UTA 6
![Page 7: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/7.jpg)
Graph
• A graph consists of a set of nodes and edges that connect pairs of nodes.
• Formally, a graph G = <N, N0, Nf, E):– N: a set of nodes– N0 ⊆ N: a set of initial nodes– Nf ⊆ N: a set of final nodes– E ⊆ N × N: a set of edges
• In our context, N, N0, and Nf contain at least one node.
CSE 5324, Ali Sharifara, UTA 7
![Page 8: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/8.jpg)
Example
CSE 5324, Ali Sharifara, UTA
n0
n1 n2
n3
n3 n4
n7
n0 n1 n2
n5 n6
n8 n9
N = {n0, n1, n2, n3}N0 = {n0}Nf = {n3}E = {(n0, n1), (n0, n2), (n1, n3), (n2, n3)}
N = {n0, n1, n2, n3 , n4, n5, n6 , n7, n8, n9}N0 = {n0 , n1, n2}Nf = {n7, n8, n9}E = {(n0, n3), (n0, n4), (n1, n4), (n1, n5), …}
8
![Page 9: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/9.jpg)
Path, Subpath, Test Path
• Path– A sequence of nodes - [n1, n2, …, nM]
• Each pair of adjacent nodes (ni, ni+1) is an edge.• Length
– The number of edges in the path• A single node is a path of length 0
• Subpath – A subsequence of nodes in p, is a subpath of p.
• Test path– A path that starts at an initial node, and ends at a final
node• Represents a path that is executed during a test run
CSE 5324, Ali Sharifara, UTA 9
![Page 10: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/10.jpg)
Reachability
• A node n is syntactically reachable from node n’ if there exists a path from n’ to n.
• A node n is semantically reachable from node n’ if it is possible to execute a path from n’ to n with some input.
• reach(n): the set of nodes and edges that can be syntactically reached from node n.
CSE 5324, Ali Sharifara, UTA 10
![Page 11: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/11.jpg)
Example
CSE 5324, Ali Sharifara, UTA
n3 n4
n7
n0 n1 n2
n5 n6
n8 n9
p1 = [n0, n3, n7]p2 = [n1, n4, n8, n5, n1]p3 = [n4, n8, n5]reach(n0) = ? reach(n5) = ?
11
![Page 12: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/12.jpg)
SESE (Single Entry Single Exit) Graph
CSE 5324, Ali Sharifara, UTA
n0
n1 n2
n3
n4 n5
n6
12
• All test paths start at a single node and end at another node
• Single-Entry, Single-exit• N0 and Nf have exactly one
node
![Page 13: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/13.jpg)
Visiting & Touring
• Visit:– A test path p visits node n if n is in p– A test path p visits edge e if e is in p
• Tour:– A test path p tours subpath q if q is a subpath of p.
CSE 5324, Ali Sharifara, UTA 13
Path [0,1,3,4,6]Visits nodes 0,1,3,4,6Visit Edges (0,1),(1,3),(3,4),(4,6)Tours subpaths (0,1,3), (1,3,4), (3,4,6), (0,1,3,4), (1,3,4,6)
![Page 14: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/14.jpg)
Test Case vs. Test Path
CSE 5324, Ali Sharifara, UTA
n0 n1
n2n3
a < b
a > b a = b
t1: (a = 0, b = 1) => p1 = [n0, n1, n3, n2]t2: (a = 1, b = 1) => p2 = [n0, n3, n2]t3: (a = 2, b = 1) => p3 = [n0, n2]
14
![Page 15: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/15.jpg)
Graph-Based Testing
• Introduction• Basic Concepts• Control Flow Testing• Data Flow Testing• Summary
CSE 5324, Ali Sharifara, UTA 15
![Page 16: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/16.jpg)
Basic Block
• A basic block, or simply a block, is a sequence of consecutive statements with a single entry and a single exit point.
• Control always enters a basic block at its entry point, and exits from its exit point.
• If a basic block contains a single statement, then the entry and exit points coincide.
CSE 5324, Ali Sharifara, UTA 16
![Page 17: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/17.jpg)
Example
1. begin2. int x, y, power;3. float z;4. input (x, y);5. if (y < 0)6. power = -y;7. else8. power = y;9. z = 1;10. while (power != 0) {11. z = z * x;12. power = power – 1;13. }14. if (y < 0)15. z = 1/z;16. output (z);17.end;
CSE 5324, Ali Sharifara, UTA
How many blocks does this code have ?Which Lines ?, Which one is Entry ? and Exit ?
![Page 18: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/18.jpg)
Example
1. begin2. int x, y, power;3. float z;4. input (x, y);5. if (y < 0)6. power = -y;7. else8. power = y;9. z = 1;10. while (power != 0) {11. z = z * x;12. power = power – 1;13. }14. if (y < 0)15. z = 1/z;16. output (z);17.end;
Block Lines Entry Exit
1 2, 3, 4, 5 2 5
2 6 6 63 8 8 8
4 9 9 95 10 10 10
6 11, 12 11 12
7 14 14 148 15 15 15
9 16 16 16
CSE 5324, Ali Sharifara, UTA
![Page 19: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/19.jpg)
Function Calls
• Should a function call be treated like a regular statement or as a separate block of its own?
CSE 5324, Ali Sharifara, UTA 19
Function calls are often treated as blocks of their own because they cause the control to be transferred away from the currently executing function and hence raise the possibility of abnormal termination of the program.
![Page 20: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/20.jpg)
Control Flow Graph
• A control flow graph is a graph with two distinguished nodes, start and end.– Node start has no incoming edges, and node end
has no outgoing edges.– Every node can be reached from start, and can
reach end.• In a CFG, a node is typically a basic block,
and an edge indicates the flow of control from one block to another.
CSE 5324, Ali Sharifara, UTA 20
![Page 21: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/21.jpg)
Example
CSE 5324, Ali Sharifara, UTA
start
End
1
2 3
4
5
6
7
8
9
false
falsetrue
true
truefalse
21
![Page 22: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/22.jpg)
Node Coverage (NC)
• A test set T satisfies Node Coverage on graph G if and only if for every syntacticallyreachable node n in N, there is some path pin path(T) such that p visits n.– path(T): the set of paths that are exercised by the
execution of T• In other words, the set TR of test
requirements for Node Coverage contains each reachable node in G.
CSE 5324, Ali Sharifara, UTA 22
![Page 23: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/23.jpg)
Edge Coverage (EC)
• The TR for Edge Coverage contains each reachable path of length up to 1, inclusive, in a graph G.
• Note that Edge Coverage subsumes Node Coverage.
CSE 5324, Ali Sharifara, UTA 23
![Page 24: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/24.jpg)
Node Vs. Edge Coverage
CSE 5324, Ali Sharifara, UTA
n0
n1
n2
24
Node Coverage : TR = {n0,n1,n2}Test Path : [n0,n1,n2]
Edge Coverage:TR = {(n0,n1),(n0,n2),(n1,n2)}Test Path = [n0,n1,n2],[n0,n2]
x < y
x >= y
![Page 25: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/25.jpg)
Edge-Pair Coverage
• The TR for Edge-Pair Coverage contains each reachable path of length up to 2, inclusive, in a graph G.
• This definition can be easily extended to paths of any length, although possibly with diminishing returns.
CSE 5324, Ali Sharifara, UTA 25
![Page 26: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/26.jpg)
Complete Path Coverage
• The TR for Complete Path Coverage contain all paths in a G.
CSE 5324, Ali Sharifara, UTA
n0
n1
n3
n4
n2
How many paths do we need to cover in the above graph?
26
![Page 27: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/27.jpg)
Structural Coverage Example
Node CoverageTR = { 0, 1, 2, 3, 4, 5, 6 } Test Paths: [ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 5, 4, 6 ]
CSE 5324, Ali Sharifara, UTA
0
1
2
6
27
3 4
5
Edge CoverageTR = { (0,1), (0,2), (1,2), (2,3), (2,4), (3,6), (4,5), (4,6), (5,4) }Test Paths: [ 0, 1, 2, 3, 6 ] [ 0, 2, 4, 5, 4, 6 ]
Edge-Pair CoverageTR = { [0,1,2], [0,2,3], [0,2,4], [1,2,3], [1,2,4], [2,3,6], [2,4,5], [2,4,6], [4,5,4], [5,4,5], [5,4,6] } Test Paths: [ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 6 ] [ 0, 2, 3, 6 ] [ 0, 2, 4, 5, 4, 5, 4, 6 ]
Complete Path CoverageTest Paths: [ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 6 ] [ 0, 1, 2, 4, 5, 4, 6 ] [ 0, 1, 2, 4, 5, 4, 5, 4, 6 ] [ 0, 1, 2, 4, 5, 4, 5, 4, 5, 4, 6 ] …
![Page 28: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/28.jpg)
Simple Path
• A path p is simple if it has no repetitions of nodes other than (possibly) the first and last node.
• So a simple path p has no internal loops, but may itself be a loop
• Problem: there are too many simple paths, since many are just sub-paths of longer simple paths.
CSE 5324, Ali Sharifara, UTA 28
![Page 29: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/29.jpg)
Loops in Graphs
• If a graph contains a loop, it has an infinitenumber of paths
• Thus Complete Path Coverage (CPC) is notfeasible
• Simple Path Coverage (SPC) is not satisfactorybecause the results are subjective and vary with the tester
CSE 5324, Ali Sharifara, UTA 29
![Page 30: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/30.jpg)
Prime Path
• Prime Path– A path is a prime path if it is a simple path,
and it does not appear as a proper subpathof any other simple path.
– In other words, a path p is prime iff p is a maximal simple path
• This cuts down the number of cases to consider
CSE 5324, Ali Sharifara, UTA 30
![Page 31: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/31.jpg)
Prime Path Coverage (PPC)
• The TR for Prime Path Coverage contains each prime path in a G.
CSE 5324, Ali Sharifara, UTA 31
![Page 32: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/32.jpg)
Example
CSE 5324, Ali Sharifara, UTA
n0
n1
n3
n4
n2
Prime paths = (n0, n1, n2), (n0, n1, n3, n4),(n1, n3, n4, n1), (n3, n4, n1, n3), (n4, n1, n3, n4), (n3, n4, n1, n2)
32
![Page 33: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/33.jpg)
Exercise-1
1. Give the sets N, N0, Nf, and E for the following graph2. Give a path that is not a test path
CSE 5324, Ali Sharifara, UTA 33
![Page 34: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/34.jpg)
Exercise-2
• 1. Find test case inputs such that the corresponding test path visits edge (n1, n3).
• 2. Find test case inputs such that the corresponding test path visits edge (n0, n3).
• 2. Find test case inputs such that the corresponding test path visits edge (n3, n2).
CSE 5324, Ali Sharifara, UTA 34
n0 n1
n2n3
a < b
a > b a = b
![Page 35: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/35.jpg)
Graph-Based Testing
• Introduction• Basic Concepts• Control Flow Testing• Data Flow Testing• Summary
CSE 5324, Ali Sharifara, UTA 35
![Page 36: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/36.jpg)
Definition/Use
• A definition is a location where a value for a variable is stored into memory.– Assignment, input, parameter passing, etc.
• A use is a location where a variable’s value is accessed.– p-use: a use that occurs in a predicate expression,
i.e., an expression used as a condition in a branch statement
– c-use: a use that occurs in an expression that is used to perform certain computation
CSE 5324, Ali Sharifara, UTA 36
![Page 37: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/37.jpg)
Def., P-use, and C-use -Example
1. read(x,y)2. z = x+23. If(z<y)4. w = x+1
else5. y= y+16. print(x,y,w,z);
CSE 5324, Ali Sharifara, UTA 37
Line Def. C-use P-use1 x,y2 z x3 z,y4 w x5 y y6 x,y,z,w
![Page 38: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/38.jpg)
Data Flow Graph
• A data flow graph (DFG) captures the flow of data in a program
• To build a DFG, we first build a CFG and then annotate each node n in the CFG with the following two sets:– def(n): the set of variables defined in node n– use(n): the set of variables used in node n
CSE 5324, Ali Sharifara, UTA 38
![Page 39: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/39.jpg)
Example (1)1. begin2. float x, y, z = 0.0;3. int count;4. input (x, y, count);5. do {6. if (x <= 0) {7. if (y >= 0) {8. z = y * z + 1;9. }10. }11. else {12. z = 1/x;13. }14. y = x * y + z;15. count = count – 1;16. while (count > 0)17. output (z);18.end
CSE 5324, Ali Sharifara, UTA
Node Lines
1 1, 2, 3, 4
2 5, 63 7
4 8, 9, 105 11, 12, 13
6 14, 15, 16
7 17, 18
39
![Page 40: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/40.jpg)
Example (2)
CSE 5324, Ali Sharifara, UTA
1
2
3 5
64
7
def={x, y, z, count}
def={}use = {x}
def={}use = {y}
def={z}use = {y, z}
def={z}use = {x}
def={count, y}use = {count, x, y, z}
def={}use = {z}
count == 0
x <= 0 x > 0
y >= 0 y < 0
40
![Page 41: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/41.jpg)
Graph-Based Testing
• Introduction• Basic Concepts• Control Flow Testing• Data Flow Testing• Summary
CSE 5324, Ali Sharifara, UTA 41
![Page 42: Graph-Based Testing](https://reader036.vdocuments.us/reader036/viewer/2022081623/6157d588ce5a9d02d46f9c18/html5/thumbnails/42.jpg)
Recap
• Graph provides a good basis for systematic test selection.
• Control flow testing focuses on the transfer of control, while data flow testing focuses on the definitions of data and their subsequent use.
• Control flow coverage is defined in terms ofnodes, edges, and paths; data flow coverage is defined in terms of def, use, and du-path.
CSE 5324, Ali Sharifara, UTA 42