190 likes | 206 Views
Understand why path analysis is crucial for test case design, how to identify linearly independent paths and enhance decision-making effectively. Learn about statement and branch coverage methods and McCabe’s Cyclomatic Complexity.
E N D
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. 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: segments (1,4) Path2: segments (1,2,3) 4 S2 3 S3 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 S2 8 C1 2 Path1: segments (1,2,8) Path2: segments (1,5,3,9) Path3: segments (1,5,6,4,10) Path4: segments (1,5,6,7) Note that these are all linearly independent 5 C2 3 S3 9 6 C3 4 10 S4 7 S5
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 S2 8 C1 2 The 4 Linearly Independent Paths Covers: 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 5 C2 3 S3 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 - - - -
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 : B1 : Path1 : C1 – S3 B2 : Path2 : C1 – S2 – S3 1 Branch 1 C1 Branch 2 2 4 S2 3 S3 Path1 and Path2 are needed to cover both branches from C1?
Another Example of Branch Coverage The 3 Decisions: 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 C2 3 S3 9 6 C3 4 10 S4 The 4 Linearly Independent Paths Covers: 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
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 NumberEarlier Example We know there are 2 linearly independent paths from before: Path1 : C1 – S3 Path2 : C1 – S2 – S3 S1 1 • McCabe’s Cyclomatic Number: • a) # of binary decisions +1 = 1 +1 = 2 • b) # of edges - # of nodes +2 = 4-4+2 = 2 • c) # of closed regions + 1 = 1 + 1 = 2 C1 2 4 S2 Closed region 3 S3
McCabe’s Cyclomatic Complexity NumberAnother Example • McCabe’s Cyclomatic Number: • a) # of binary decisions +1 = 2 +1 = 3 • b) # of edges - # of nodes +2 = 7-6+2 = 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 6 3 S3
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 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 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) 7 C3 9 8 S5 S4 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 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: (S1,C1,S2, S3) path2 : S1-C1-S2-C1-S3 S2 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 “linearcombination” of these vectors: • [1,0] • [0,1] e.g. [2,4] = 2[1,0] + 4[0,1] [2,4] [1,0] [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 2 3 4 5 6 3 We picked path1, path2 and path3 as The Linearly Independent Set 1 path1 1 1 C2 5 path2 1 1 4 path3 1 1 1 S1 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)
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 2 3 4 5 6 3 1 path1 1 1 C2 5 path2 1 1 4 path3 1 1 1 S1 path4 1 1 1 1 6 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.?