240 likes | 670 Views
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.
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.?