Title: Path testing
1Path testing
- Path testing is a design structural testing in
that it is based on detailed design the source
code of the program to be tested. - The methodology uses the graphical representation
of the source code - Thus it is very much control flow or path
oriented - This methodology has been available since the
mid-1970s and is am important White Box testing
technique
2Transforming Code to Diagram
- In early chapter (chapter 4) on graph theory, we
mentioned condensation graph as a graph that was
derived by condensing a component into a node
as a way to simplify the graphical diagram of
source code. - We will
- address the issue of condensation later and
- assume that we have a condensed graph and discuss
path analysis first
3Path Analysis
- Why path analysis for test case design?
- Provides a systematic methodology of White Box
testing. - Reproducible
- Traceable
- Countable
- What is path analysis?
- Analyzes the number of paths that exist in the
system - Facilitates the decision process of how many
paths to include in the test
Reasons similar to why document test cases
Path, as previously defined, is a sequence of
connected nodes
4Linearly Independent Path
- A path through the system is Linearly
Independent from other paths only if it
includes some segment or edge that is not
covered in the other path.
S1
- The statements are represented by the
rectangular and diamond blocks. - The segments
between the blocks are labeled with numbered
circles.
1
2
C1
Path1 S1 C1 S3 Path2 S1 C1 S2 S3
OR Path1 edges (1,4) Path2 edges (1,2,3)
S2
4
3
S3
Path1 and Path2 are linearly independent because
each includes some edge that is not included in
the other. (note not necessarily nodes) This
definition will require more explanation later.
5Another Example of Linearly Independent Paths
S1
1
S2
8
C1
2
Path1 edges (1,2,8) Path2 edges
(1,5,3,9) Path3 edges (1,5,6,4,10) Path4
edges (1,5,6,7) Note that these are all
linearly independent
5
S3
C2
3
9
6
C3
4
10
S4
7
S5
6Statement Coverage Method
- Count all the linearly independent paths
- Pick the minimum number of linearly independent
paths that will include all the statements (Ss
and Cs in the diagram)
S1
Path1 S1 C1 S3 edges (1, 4) Path2 S1
C1 S2 S3 edges (1, 2. 3 )
1
2
C1
S2
4
3
S3
Are both Path1 and Path2 needed to cover all the
statements (S1,C1,S2,S3) ? What
would you say?
7Another Example of Statement Coverage
S1
1
S2
8
C1
2
The 4 Linearly Independent Paths Covers Path1
includes S1-C1-S2-S5
edges (1,2,8) Path2 includes S1-C1-C2-S3-S5
edges ( 1,5,3,9) Path3
includes S1-C1-C2-C3-S4-S5
edges (1,5,6,4,10) Path4 includes
S1-C1-C2-C3-S5 edges
(1,5,6,7)
5
S3
C2
3
9
6
C3
4
10
S4
7
S5
For 100 Statement Coverage, all we need are 3
paths Path1, Path2, and Path3 to cover all the
statements (S1,C1,S2,C2,S3,C3,S4,S5) - - -
no need for Path4 - - - - !!
8Statement Coverage
Now - - - What
do you think of a Software Company which boasts
that they test every statement in the software
before release? Try this on some students or
other professors and see their reaction.
9Branch Coverage Method(Also DD-Paths of our text
book)
- Identify all the decisions
- Count all the branches from each of the decisions
( out-degree of the decision node) - Pick the minimum number of paths that will cover
all the branches from the decisions.
10Branch Coverage Method
One decision C1 B1 Path1 C1
S3 B2 Path2 C1 S2
S1
1
C1
Branch 1
Branch 2
2 linearly independent paths cover
B1 Path1 C1 S3
B2 Path2 C1 S2 S3
2
S2
4
3
S3
Are both Path1 and Path2 needed to cover Branch1
and Branch2 from C1?
11Another Example of Branch Coverage
The 3 Decisions and the Branches C1
- B1 C1- S2 - B2 C1- C2
C2 - B3 C2 S3 - B4
C2 C3 C3 - B5 C3 S4
- B6 C3 S5
S1
1
S2
8
C1
2
5
S3
C2
3
9
6
C3
4
10
S4
The 4 Linearly Independent Paths Cover Path1
includes S1-C1-S2-S5 Path2 includes
S1-C1-C2-S3-S5 Path3 includes
S1-C1-C2-C3-S4-S5 Path4 includes S1-C1-C2-C3-S5
7
S5
We need Path1 to cover B1,
Path2 to cover B2 and B3,
Path3 to cover B4 and B5,
Path4 to cover B6
12Branch Coverage
How do you feel about a Software Company who
states that they test every branch in
the Software before release?
Does All Branch Coverage subsume All Statements
Coverage?
13McCabes Cyclomatic Number
- Is there a way to know how many linearly
independent paths exist? - McCabes Cyclomatic number used to study program
complexity may be applied. There are 3 ways to
get the Cyclomatic Complexity number from a flow
diagram. - of binary decisions 1
- of edges - of nodes 2
- of closed regions 1
14McCabes Cyclomatic Complexity NumberEarlier
Example
We know there are 2 linearly independent paths
from before Path1 C1 S3
Path2 C1 S2 S3
S1
1
- McCabes Cyclomatic Number
- a) of binary decisions 1 1 1 2
- b) of edges - of nodes 2 4-42 2
- c) of closed regions 1 1 1 2
C1
2
S2
4
Closed region
3
S3
15McCabes Cyclomatic Complexity NumberAnother
Example
- McCabes Cyclomatic Number
- a) of binary decisions 1 2 1 3
- b) of edges - of nodes 2 7-62 3
- c) of closed regions 1 2 1 3
S1
1
4
C1
2
C2
5
S2
There are 3 Linearly Independent Paths
Closed Region
Closed Region
S4
7
3
6
S3
16An example of 2n total path
Since for each binary decision, there are 2 paths
and there are 3 in sequence, there are 23 8
total logical paths path1
S1-C1-S2-C2-C3-S4 path2 S1-C1-S2-C2-C3-S5
path3 S1-C1-S2-C2-S3-C3-S4 path4
S1-C1-S2-C2-S3-C3-S5 path5 S1-C1-C2-C3-S4
path6 S1-C1-C2-C3-S5 path7
S1-C1-C2-S3-C3-S4 path8 S1-C1-C2-S3-C3-S5
S1
1
C1
2
3
S2
4
C2
5
6
S3
How many Linearly Independent paths are
there? Using Cyclomatic number 3 decisions 1
4 One set would be path1 includes edges
(1,2,4,6,9) path2 includes edges (1,2,4,6,8)
path3 includes edges (1,2,4,5,7,9) path5
includes edges (1,3,6,9)
7
C3
9
8
S4
S5
Note 1 with just 2 paths ( Path1 and Path8) all
the statements are covered. Note2 with just 2
paths ( Path1 and Path8) all the branches are
covered.
17Example with a Loop
Total number of paths may be infinite (very
large) because of the loop
S1
1
Linearly Independent Paths 1 decision 1 2
path1 S1-C1-S3 (segments 1,4 ) path2
S1-C1-S2-C1-S3 (segments 1,2,3,4 )
C1
4
S3
2
One path will cover all statements path2
S1-C1-S2-C1-S3 (S1,C1,S2,S3)
S2
3
One path will cover all branches path2
S1-C1-S2-C1-S3
branch1 (C1-S2) and branch 2
(C1-S3)
18More on Linearly Independent Paths
- In discussing dimensionality, we talks about
orthogonal vectors (or basis of vector space) .
- (e.g.) Two dimensional space has two orthogonal
vector from which all the other vectors in two
dimension can be obtained via linear
combination of these 2 vectors - 1,0
- 0,1
e.g. 2,4 21,0 40,1
2,4
1,0
0,1
19More on Linearly Independent Paths
- A set of paths is considered to be a Linearly
Independent Set if every path may be constructed
as a linear combination of paths from the
linearly independent set. For example
We already know a) there are a total of 224
logical paths. b)
1 path (path4) will cover all statements
c) 2 paths will cover all
branches. d) 2
branches 1 3 linearly independent paths.
C1
2
1
S1
1
2
3
4
5
6
3
We pick path1, path2 and path3 as
the Linearly Independent Set
1
path1
1
1
C2
5
path2
1
1
4
path3
1
1
1
S2
path4
1
1
1
1
6
path 4 path3 path1 path2
(0,1,1,1,0,0)(1,0,0,0,1,1)- (1,0,0,1,0,0)
(1,1,1,1,1,1) - (1,0,0,1,0,0)
(0,1,1,0,1,1)
20Other Sets of Linearly Independent Paths
1
2
3
4
5
6
1
path1
1
1
path2
1
1
path3
1
1
1
path4
1
1
1
1
- Consider the set of linearly independent paths
1, 2 4 instead. - Can we get Path3 (0,1,1,1,0,0)?
- Consider path3 path2 path4 path1
- (1,0,0,1,0,0,)(0,1
,1,0,1,1) (1,0,0,0,1,1) (0,1,1,1,0,0)
- Consider another set of linearly independent
paths 2, 3 4 instead. - Can we get Path 1 (1,0,0,0,1,1))?
- Consider path1 path2 path4 path3
- (1,0,0,1,0,0,)(0,1
,1,0,1,1) (0,1,1,1,0,0) (1,0,0,0,1,1)
21More on Linearly Independent Paths
We already know a) there are a total of 224
logical paths. b)
1 path (path4) will cover all statements
c) 2 paths will cover all
branches. d) 2
branches 1 3 linearly independent paths.
C1
2
1
1
2
3
4
5
6
S1
1
path1
1
1
3
path2
1
1
C2
5
path3
1
1
1
4
path4
1
1
1
1
S2
6
Note Although path1 and path3 are linearly
independent, they do NOT form a Linearly
Independent Set because no linear combination of
path1 and path3 can get , say, path4.
22More on Linearly Independent Paths
- Because the Linearly Independent Set of paths
display the same characteristics as the
mathematical concept of basis in n-dimensional
vector space, the testing using the Linearly
Independent Set of paths is sometimes called the
basis testing. - The main notion is that since the linear
independent set of paths as a set can span all
the paths for the design/code construct, then
basis testing covers the essence of the whole
structure.
Then ------ is there a way to find a Linearly
Independent Set ?
23An Algorithm to Find the Basis Set
- Select a baseline path, an arbitrary, normal
execution path that contains as many decisions as
possible. - Retrace the baseline path and flip each of the
decision encountered each flip creates a new
path. Continue until all the decisions are
flipped - The basis set is composed of all the paths
generated from steps 1 and 2 above
Cyclomatic 2 1 3 So there are 3 linearly
independent paths
C1
2
1
S1
1. pick baseline path P1 C1 S1- C2 S2
lt0,1,1,0,1,1gt 2. flip C1 P2
C1 C2 S2 lt1,0,0,0.1,1gt 3. flip C2
P3 C1 - C2
lt1,0,0,1,0,0gt
3
C2
5
4
Can we get the 4th path C1 S1 C2
lt0,1,1,1,0,0gt from the
above basis set? How about (P1 P3) P2
? (P1 P3) P2 (lt0,1,1,0,1,1gt
lt1,0,0,1,0,0gt) - lt1,0,0,0,1,1gt
lt1,1,1,1,1,1gt - lt1,0,0,0,1,1gt
lt0,1,1,1,0,0gt P4
S2
6
24Total Possible Logical Paths can be Big!
s1
There are 5 choices each time we process
through this loop. For passing through the loop
n times we have 5n possibilities of logical
paths. If we go through the loop just 3 times,
we have (5)3 125 possible paths!
c1
1
c3
c2
4
2
s2
5
3
s3
You also note that for n loops there are 3n
decisions, and we have 33 9 decisions
for looping 3 times.
c4
s4
25Paths Analysis
- Interested in total number of all possible
combinations of logical paths - Interested in Linearly Independent paths
- Interest in Branch coverage or DD-path
- Interested in Statement coverage
Which one do you think is the largest set, next
largest, - - - , etc.?
Compare this list with page 136 of your text - -
- what are we missing?
26Definition for DD-path
- DD (decision-decision) path is a path of nodes in
a directed graph. - A chain is a path in which
- Initial and terminal nodes are distinct (not just
one node) - All interior nodes have in-degree 1 and
out-degree 1 - A DD-path is a chain in a program graph such that
the following are included in the chain - It consists of a single node with in-degree 0
(initial node) - It consists of a single node with out-degree 0
(terminal node) - It consists of a single node with in-deg gt 2 or
out-deg gt 2 - It consists of a single node with in-deg 1 and
out-deg 1 - It is a maximal chain of length gt 1.
27Condensation of Code to Table then to Graph
Psuedo-code
Path/node name
DD-path Def.
code statement
1. Program Triangle 2. Dim a, b,c As Integer 3.
Dim IsTriangle As Boolean 4. Output ( enter
a,b, and c integers) 5. Input (a,b,c) 6. Output
(side 1 is, a) 7. Output (side 2 is, b) 8.
Output (side 3 is, c) 9. If (altbc) AND
(bltac) And (cltba) 10. then IsTriangle
True 11. else IsTriangle False 12.
endif 13. If IsTriangle 14. then if (ab) AND
(bc) 15. then Output
(equilateral) 16. else if (a NE b)
AND (a NE b) AND (b NE c) 17.
then Output ( Scalene) 18.
else Output (Isosceles) 19.
endif 20. endif 21. else
Output (not a triangle) 22. endif 23. end
Triangle2
Skip 1- 3 (or w/4) 4 first
1 5 8 A
5 9 B 3 10
C 4 11
D 4 12 E
3 13 F
3 14 H 3 15
I 4 16
J 3 17 K
4 18 L
4 19 M 3 20
N 3 21
G 4 22 O
3 23 last
2
Def of DD-paths on Page 140
28Condensation Graph from Table
Statements coverage - 4 paths Branch
(DD-path) coverage - 4 paths Cyclomatic 41
5 - 5 lin. Ind paths All combinations
- 8 paths
first
A
B
C
D
E
F
H
G
J
I
K
L
M
N
O
Last
29Closer Look into Path Testing
- Look at 2 paths from A to E. The paths of either
it is a triangle or not a triangle. - But there are many combinations to get not
triangle so we still need to consider
utilizing boundary values and equivalence
classes. Just one test case to cover the path may
not be enough - Look at the path that leads from D to L (D not
triangle and L Isosceles triangle). Is that path
possible - - - can you generate a test case for
that path? - Look at the path from C to G (C Is a triangle
and G output not triangle) - - - is this a
possible path? - There may be logical dependencies that prevent us
from generating test case to traverse certain
paths. Thus we also need to consider employing
decision tables from Black Box testing technique.