一、结构化基本路径法的单元测试
程序代码段
折半查找
public int binSearch(int array[],int key){
1 int mid,low,high;
2 low = 0;
3 high = array.length - 1;
4 while(low <= high){
5 mid = (low + high)/2
6 if(key == array[mid])
7 return mid;
8 else if(key<array[mid])
9 high = mid - 1;
10 else
11 low = mid +1;
12 }
13 return -1;
14 }
控制流图
单元测试用例
R1:1-2-3-4-13-14
R2:1-2-3-4-5-6-7-12-4-13-14
R3:1-2-3-4-5-6-8-9-12-4-13-14
R4:1-2-3-4-5-6-8-10-11-12-4-13-14
测试路径 | 输入数据 | 预期输出 |
R1 | array[0]={} key=1 | -1 |
R2 | array[3]={2,4,6} key=4 | 1 |
R3 | array[4]={2,4,6,8} key=2 | 0 |
R4 | array[4]={2,4,6,8} key=6 | 2 |
二、面向对象程序的确认测试
案例:设计三角形
测试分析
1.构成三角形的条件:任意两边之和大于第三边。
2.构成等腰三角形的条件:任意两边相等。
3.构成等腰直角三角形的条件:任意两边相等,而且两条边的平方和等于第三边的平方和。
4.构成等边三角形的条件:三条边都相等。
分析一下三角形的等价类:
(1)有效等价类:
输入3个正整数或正小数:
S1:两数之和大于第三数,如A<B+C; B<C+A; C<A+B
S2:两数之和不大于第三数
S3:两数相等,如A=B或B=C或C=A
S4:三数相等,如A=B=C
S5:三数不相等,如A!=B, B!=C, C!=A
(2)无效等价类:
1.空
2.负整数
3.非数字
4.少于三个数
确认测试用例以及测试结构分析和测试结论
用例ID | A | B | C | 预期输出 | 覆盖等价类 |
1 | 2 | 4 | 6 | 非三角形 | S2 |
2 | 3 | 3 | 4 | 等腰三角形 | S3 |
3 | 5 | 5 | 5 | 等边三角形 | S4 |
测试结论:该程序测试通过
三、思考题
黑盒测试的等价划分测试用例设计,一个无效类要求必须给定一个测试用例,而有效类要求一个测试用例尽可能多的覆盖多个有效类,有何理由?
- 从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有佥的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。
- 有效等价类:
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 - 无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 - 设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。