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.?