基本路径测试案例分析
Q:请使用基本路径测试对该程序进行测试:
二分查找
public int binSearch(int arr[], int objectValue) {
int left = 0;
int right = arr.length - 1;
int mid;
while (left < right) {
mid = (right - left) / 2 + left;
if (arr[mid] == objectValue) {
return mid;
} else if (objectValue < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
基本路径测试法的定义
基本路径测试是一种白盒测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。
1. 画出程序的流程图:

2. 将程序流程图转换为控制流图

3、确定环形复杂性度量V(G):
1)V(G)= 4 (个区域)
2)V(G)=E–N+2=11–9+2=4
其中E为流图中的边数,N为结点数;
3)V(G)=P+1=3+1=4
其中P为谓词结点(分支结点)的个数。在流图中,结点2、4、5是谓词结点。
步骤3:确定基本路径集合(即独立路径集合)。于是可确定4条独立的路径:
路径1:1-2-9
路径2:1-2-3-4-9
路径3:1-2-3-4-5-6-8-2…
路径4:1-2-3-4-5-7-8-2…
4、为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。
- 路径1(1-2-9)的测试用:
输入:arr={1} objectValue=1
期望结果:传入数组和目标值,不能使用该方法查到该目标值,返回:-1
Junit单元测试:
路径2(1-2-3-4-9)的测试用例:
输入:arr={1,3,5} objectValue=3
期望的结果:传入数组和目标值,能使用该方法在数组中查到该目标值,返回位置:1
Junit单元测试:
路径3(1-2-3-4-5-6-8-2…)的测试用例:
输入:arr={1,3,5} objectValue=4
期望结果:传入数组和目标值,不能在数组中查到该目标值,返回:-1
Junit单元测试:
路径4(1-2-3-4-5-7-8-2…)的测试用例:
输入:arr={1,3,5} objectValue=2
期望结果:传入数组和目标值,不能在数组中查到该目标值,返回:-1
Junit单元测试:
5、总结
基本路径测试法是在 程序控制流图 的基础上,通过分析控制构造的环路复杂性,导出 基本可执行路径 集合,从而 设计测试用例 的方法,设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%。路径覆盖可以对程序进行彻底的测试,比语句覆盖、判定覆盖、条件覆盖、判定条件覆盖以及条件组合覆盖的覆盖面都要广。