"older" lecture on Path Analysis

advertisement
Path Analysis
• Why path analysis for test case design?
– Provides a systematic methodology.
• 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
Linearly Independent Path
• A path through the system is Linearly Independent** from other
paths only if it includes some segment that is not covered in
the other path.
- The statements are represented
by the rectangular and diamond blocks.
- The segments between the blocks are
labeled with numbered circles.
S1
1
2
C1
4
S2
3
S3
Path1 : S1 – C1 – S3
Path2 : S1 – C1 – S2 – S3
OR
Path1: segments (1,4)
Path2: segments (1,2,3)
Path1 and Path2 are linearly independent because each includes some
segment that is not included in the other.
** This definition will require more explanation later.
Another Example of Linearly Independent Paths
S1
1
C1
2
S2
8
9
Path1:
Path2:
Path3:
Path4:
10
Note that these are all linearly independent
5
C2
3
S3
segments (1,2,8)
segments (1,5,3,9)
segments (1,5,6,4,10)
segments (1,5,6,7)
6
C3
7
S5
4
S4
Statement Coverage Method
• Count all the linearly independent paths
• Pick the minimum number of linearly independent paths that
will include all the statements (S’s and C’s in the diagram)
S1
Path1 : S1 – C1 – S3
Path2 : S1 – C1 – S2 – S3
1
2
C1
4
S2
3
S3
Path1 and Path2 are needed to cover all the statements: (S1,C1,S2,S3) ?
Another Example of Statement Coverage
S1
1
C1
2
8
S2
The 4 Linearly Independent Paths Covers:
5
C2
3
S3
9
6
C3
4
Path1:
Path2:
Path3:
Path4:
includes S1-C1-S2-S5
includes S1-C1-C2-S3-S5
includes S1-C1-C2-C3-S4-S5
includes S1-C1-C2-C3-S5
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 - - - -
Branch Coverage Method
• Identify all the decisions
• Count all the branches from the each of the
decisions
• Pick the minimum number of paths that will
cover all the branches from the decisions.
Branch Coverage Method
S1
Decision C1 :
1
Branch 1
C1
Branch 2
B1 : Path1 : C1 – S3
B2 : Path2 : C1 – S2 – S3
2
4
S2
3
S3
Path1 and Path2 are needed to cover both branches from C1?
Another Example of Branch Coverage
The 3 Decisions:
S1
C1:
1
C1
2
S2
- B1 : C1- S2
- B2 : C1- C2
8
C2:
5
C2
3
S3
9
7
S5
4
10
S4
C3:
- B5 : C3 – S4
- B6 ; C3 – S5
6
C3
- B3 : C2 – S3
- B4 : C2 – C3
The 4 Linearly Independent Paths Covers:
Path1:
Path2:
Path3:
Path4:
includes S1-C1-S2-S5
includes S1-C1-C2-S3-S5
includes S1-C1-C2-C3-S4-S5
includes S1-C1-C2-C3-S5
We need:
Path1 to cover B1,
Path2 to cover B2 and B3,
Path3 to cover B4 and B5,
Path4 to cover B6
McCabe’s Cyclomatic Number
• Is there a way to know how many linearly
independent paths exist?
– McCabe’s 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
- Reference: T.J. McCabe, “A complexity Measure,” IEEE
Transactions on Software Engineering, Dec. 1976
McCabe’s Cyclomatic Complexity Number
Earlier Example
We know there are 2 linearly independent
paths from before:
Path1 : C1 – S3
Path2 : C1 – S2 – S3
S1
1
McCabe’s Cyclomatic Number:
C1
2
a) # of binary decisions +1 = 1 +1 = 2
4
Closed region
S2
3
S3
b) # of edges - # of nodes +2 = 4-4+2 = 2
c) # of closed regions + 1 = 1 + 1 = 2
McCabe’s Cyclomatic Complexity Number
Another Example
McCabe’s Cyclomatic Number:
a) # of binary decisions +1 = 2 +1 = 3
S1
b) # of edges - # of nodes +2 = 7-6+2 = 3
1
4
C1
2
5
C2
7
c) # of closed regions + 1 = 2 + 1 = 3
S2
Closed
Region
Closed
Region
S4
6
3
S3
There are 3 Linearly
Independent Paths
An 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
S1
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
1
2
C1
3
S2
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
4
C2
5
6
S3
How many Linearly Independent paths are there?
Using Cyclomatic number = 3 decisions +1 = 4
7
C3
8
S5
One set would be:
9
S4
path1 : includes segments (1,2,4,6,9)
path2 : includes segments (1,2,4,6,8)
path3 : includes segments (1,2,4,5,7,9)
path5 : includes segments (1,3,6,9)
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.
Example with a Loop
Total number of paths may be “ infinite” (very large)
because of the loop
S1
1
C1
Linearly Independent Paths = 1 decision +1 = 2
4
S3
path1 : S1-C1-S3 (segments 1,4)
path2 : S1-C1-S2-C1-S3 (segments 1,2,3,4)
2
S2
One path will cover all statements: (S1,C1,S2, S3)
path2 : S1-C1-S2-C1-S3
3
One path will cover all branches:
path2 : S1-C1-S2-C1-S3
branch1 (C1-S2) and
branch 2 (C1-S3)
More on Linearly Independent Paths
• In discussing dimensionality, we talks about
orthogonal vectors.
– Two dimensional space has two orthogonal vector
from which all the other vectors in two
dimension can be obtained via “linear
combination” of these vectors:
• [1,0]
• [0,1]
[2,4]
[1,0]
[0,1]
e.g.
[2,4] = 2[1,0] + 4[0,1]
More 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 22=4 logical paths.
b) 2 paths that will cover all statements
and all branches.
c) 2 branches +1 = 3 linearly independent paths.
C1
2
1
S1
1
3
C2
5
4
S1
6
path1
1
path2
1
2
3
4
5
6
1
1
1
1
1
path3
1
1
path4
1
1
1
We picked path1,
path2 and path3 as
The Linearly
Independent Set
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)
More on Linearly Independent Paths
We already know: a) there are a total of 22=4 logical paths.
b) 2 paths that will cover all statements
and all branches.
c) 2 branches +1 = 3 linearly independent paths.
C1
2
1
S1
1
3
C2
5
4
S1
6
path1
1
path2
1
2
3
4
5
6
1
1
1
1
1
path3
1
1
path4
1
1
1
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.
More 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.
Paths Analysis
•
•
•
•
Interested in Total number of “logical” paths
Interested in Linearly Independent paths
Interest in Branch coverage
Interested in Statement coverage
Which one is the largest set, next largest set, - - - , etc.?
Download