3, 4, 3, 5, 6, 7, 6, 8

advertisement
The Application of Graph Criteria:
Source Code
 It is usually defined with the control flow graph
(CFG)
 Node coverage is used to execute every
statement
 Edge coverage is used to execute every branch
 Loops are used to execute looping structures
such as for loops, while loops, etc.
 Data flow coverage is the extended form of
control flow graph (CFG) with defs and uses
 defs are statements that assign values to variables
 uses are statements that use variables
Tests with Data Flow Criteria
Data flow criteria require tests that tour
subpaths from specific definitions of variables
to specific uses
Nodes where a variable is assigned a value
are called definitions (or defs)
Nodes where the value of a variable is
accessed are called uses.
Data Flow Coverage for Source
 def : A location where a value is stored into memory
 x appears on the left side of an assignment (x = 44;
 x is an actual parameter in a call and the method changes its value
 x is a formal parameter of a method (implicit def when method
starts)
 x is an input to a program
 use : A location where variable’s value is accessed
 x appears on the right side of an assignment
 x appears in a conditional test
 x is an actual parameter to a method
 x is an output of the program
 x is an output of a method in a return statement
 If a def and a use appear on the same node, then it is only a
DU-pair if the def occurs after the use and the node is in a
loop
3
A definition d for a variable x reaches a use u if
there is a path from d to u that has no other
definitions of x (def-clear).
The all-uses (AU) criterion requires tests to tour
at least one subpath from each definition to
each reachable use.
// EXAMPLE: return index of the last element in x that equals y.
// if y is not in x, return -1.
public int findLast (int []x, int y)
{
for (int i = x.length-1; i>=0; i--)
{
if (x[i] == y)
return i;
} return -1;
Annotated Control Graph
 Nodes 4 and 6 are final
nodes, corresponding to
the return statements.
 Node 2 is introduced to
capture the for loop; it
has no executable
use(3)=
statements.
 DU (def-use) pairs are
shown as a variable
name followed by the def
node, then the use node.
def (5) = { i }
use (5) = { i }
Def -Use Pairs = { (1, 1,x), (1,3,x), (1,3,y), (1, 2,i), (1, 3,i),
(1,5,i), (1,6,i), (5, 2,i), (5, 3,i), ( 5, 6,i), (5, 5,i)}
public static void computeStats (int [ ] numbers)
{
int length = numbers.length;
double med, var, sd, mean, sum, varsum;
sum = 0;
for (int i = 0; i < length; i++)
{
sum += numbers [ i ];
}
med = numbers [ length / 2];
mean = sum / (double) length;
1
2
i=0
3
varsum = 0;
for (int i = 0; i < length; i++)
4
{
5
varsum = varsum + ((numbers [ I ] - mean) * (numbers [ I ] - mean));
i=0
}
var = varsum / ( length - 1.0 );
sd = Math.sqrt ( var );
6
System.out.println ("length:
" + length);
i < length
System.out.println ("mean:
" + mean);
i >= length
System.out.println ("median:
" + med);
7
System.out.println ("variance:
" + var);
8
System.out.println ("standard deviation: " + sd); }
i++
6
Edge Coverage
1
TR = {[ 1, 2 ],[ 2, 3 ],[ 3, 4 ],
[ 3, 5 ], [ 4, 3 ], [ 5, 6 ],
[ 6, 7 ], [ 6, 8 ],[ 7, 6 ]}
2
3
4
5
Test Path , 3,
4, 3, 5, 6, 7, 6, 8 ]
[ 1, 2, 3,4, 3, 5, 6, 7, 6, 8] ]
6
7
8
7
Edge-Pair Coverage
TR={ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 2, 3, 5 ], [ 3, 4, 3 ],
[ 3, 5, 6 ], [ 4, 3, 5 ],[ 5, 6, 7 ],[ 5, 6, 8 ],
[ 6, 7, 6 ], [ 7, 6, 8 ], [ 4, 3, 4 ], [ 7, 6, 7 ]}
Test Paths
i.[ 1, 2, 3, 4, 3, 5, 6, 7, 6, 8 ]
ii. [ 1, 2, 3, 5, 6, 8 ]
iii. [ 1, 2, 3, 4, 3, 4, 3, 5, 6, 7, 6, 7, 6, 8 ]
Test Requirements Toured
i.[ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4, 3 ], [ 3, 5, 6 ], [ 4, 3, 5 ],
[ 5, 6, 7] , [ 6, 7, 6 ], [ 7, 6, 8 ]
ii. [ 1, 2, 3 ], [ 2, 3, 5 ], [ 3, 5, 6 ], [ 5, 6, 8 ]
iii. [ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4, 3 ], [ 3, 5, 6 ],
[ 4, 3, 5 ], [ 5, 6, 7 ],[ 6, 7, 6 ],[ 7, 6, 8 ],
[ 4, 3, 4 ], [ 7, 6, 7 ]
8
Prime Path Coverage
TR={ [ 3, 4, 3 ],[ 4, 3, 4 ],[ 7, 6, 7 ], [ 7, 6, 8 ],
[ 6, 7, 6 ], [ 1, 2, 3, 4 ], [ 4, 3, 5, 6, 7 ],
[ 4, 3, 5, 6, 8 ], [ 1, 2, 3, 5, 6, 7 ], [ 1, 2, 3, 5, 6, 8 ]}
Test Paths
i. [ 1, 2, 3, 4, 3, 5, 6, 7, 6, 8 ]
ii. [ 1, 2, 3, 4, 3, 4, 3, 5, 6, 7, 6, 7, 6, 8 ]
iii. [ 1, 2, 3, 4, 3, 5, 6, 8 ]
iv. [ 1, 2, 3, 5, 6, 7, 6, 8 ]
v. [ 1, 2, 3, 5, 6, 8 ]
Test Requirements Toured
i. [ 3, 4, 3 ], [ 7, 6, 8 ], [ 6, 7, 6 ], [ 1, 2, 3, 4 ], [ 4, 3, 5, 6, 7 ]
ii. [ 3, 4, 3 ], [ 4, 3, 4 ], [ 7, 6, 7 ], [ 7, 6, 8 ], [ 6, 7, 6 ], [ 1, 2, 3, 4 ]
[ 4, 3, 5, 6, 7 ]
iii. [ 3, 4, 3 ], [ 1, 2, 3, 4 ], [ 4, 3, 5, 6, 8 ]
iv. [ 7, 6, 8 ], [ 6, 7, 6 ], [ 1, 2, 3, 4 ], [ 1, 2, 3, 5, 6, 7 ]
v. . [ 1, 2, 3, 5, 6, 8 ]
9
Download