Various examples in Basis Path Testing
Last Updated :
10 Jul, 2020
Prerequisite – Basis Path Testing
We have seen the steps involved in designing the test cases for a program using the basis path testing in the previous article. Now, let’s solve an example following the same steps.
Question : Consider the given program that checks if a number is prime or not. For the following program :
- Draw the Control Flow Graph
- Calculate the Cyclomatic complexity using all the methods
- List all the Independent Paths
- Design test cases from independent paths
int main()
{
int n, index;
cout << "Enter a number: " << endl;
cin >> n;
index = 2;
while (index <= n - 1) {
if (n % index == 0) {
cout << "It is not a prime number" << endl;
break ;
}
index++;
}
if (index == n)
cout << "It is a prime number" << endl;
}
|
Solution :
1. Draw the Control Flow Graph –
- Step-1:
Start numbering the statements after declaration of the variables (if no variables have been initialized in that statement). However, if a variable has been initialized and declared in the same line, then numbering should start from that line itself.
For the given program, this is how numbering will be done:
int main()
{
int n, index;
1 cout << "Enter a number: " <> n;
3 index = 2;
4 while (index <= n - 1)
5 {
6 if (n % index == 0)
7 {
8 cout << "It is not a prime number" << endl;
9 break;
10 }
11 index++;
12 }
13 if (index == n)
14 cout << "It is a prime number" << endl;
15 } // end main
- Step-2:
Put the sequential statements into one single node. For example, statements 1, 2 and 3 are all sequential statements and hence should be combined into a single node. And for other statements, we will follow the notations as discussed here.
Note –
Use alphabetical numbering on nodes for simplicity.
The graph obtained will be as follows :
2. Calculate the Cyclomatic complexity :
- Method-1:
V(G) = e - n + 2*p
In the above control flow graph,
where, e = 10, n = 8 and p = 1
Therefore,
Cyclomatic Complexity V(G)
= 10 - 8 + 2 * 1
= 4
- Method-2:
V(G) = d + p
In the above control flow graph,
where, d = 3 (Node B, C and F) and p = 1
Therefore,
Cyclomatic Complexity V(G)
= 3 + 1
= 4
- Method-3:
V(G) = Number of Regions
In the above control flow graph, there are 4 regions as shown below :
Therefore, there are 4 regions: R1, R2, R3 and R4
Cyclomatic Complexity V(G)
= 1 + 1 + 1 + 1
= 4
It is important to note that all three methods give same value for cyclomatic complexity V(G).
3. Independent Paths :
As the cyclomatic complexity V(G) for the graph has come out to be 4, therefore there are 4 independent paths.
Edges covered (marked with red) by Path 1 are:
Path 1 : A - B - F - G - H
Edges covered by Path 1 and Path 2 are shown below :
Path 2 : A - B - F - H
Edges covered by Path 1, Path 2 and Path 3 are :
Path 3 : A - B - C - E - B - F - G - H
Now only 2 edges are left uncovered i.e. edge C-D and edge D-F. Hence, Path 4 must include these two edges.
Path 4 : A - B - C - D - F - H
Each of these paths have introduced at least one new edge which has not been traversed before.
Note –
Independent paths are not necessarily unique.
4. Test cases :
To derive test cases, we have to use the independent paths obtained previously. To design a test case, provide input to the program such that each independent path is executed.
For the given program, the following test cases will be obtained:
Test case ID |
Input Number |
Output |
Independent Path covered |
1 |
1 |
No output |
A-B-F-H |
2 |
2 |
It is a prime number |
A-B-F-G-H |
3 |
3 |
It is a prime number |
A-B-C-E-B-F-G-H |
4 |
4 |
It is not a prime number |
A-B-C-D-F-H |
Share your thoughts in the comments
Please Login to comment...