从今天开始将会和大家分享如何设计测试用例,常见的设计测试用例的方法有等价类、边界值、因果图、判定表、正交试验和场景法,还有状态迁移法。今天介绍的是等价类,等价类是设计测试用例的最基础的方法,所以大家一定要掌握。
当我们测试Windows的计算器加法时,如果全部测试应该是从1+1、1+2、1+3……有无穷多个,是无法完全测试的。当我们测试了1+1、1+2、1+3之后,还有必要测试1+4、1+5吗?能否放心地认为他们是正确的吗?我们感觉1+4、1+5和1+2、1+3没什么区别都是简单的加法。所以这里就引入的等价类划分这个办法,所谓等价类划分就是把程序的输入域划分成若干部分,然后从每部分选取少量的具有代表性的数据作为测试用例。通过划分等价类可以大幅度的减少测试工作量。
等价类的划分一般有两种情况:有效等价类和无效等价类。有效等价类就是指对于程序的规格说明来时是合理的、有意义的输入数据。例如计算器中的1+1就是有效等价类中的一个,a+b就是无效等价类中的一个。
那么现在我们来看一下如何划分等价类把,这里给大家6条确定等价类的原则:
1. 在输入条件规定了输入值的范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
2. 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
3. 在输入条件是一个布尔量的时候,可确定一个有效等价类和一个无效等价类。
4. 在规定了输入数据的一组值(n个),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。
5. 在规定了输入数据必须遵守的规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
6. 在确知已划分的等价类中,各元素在程序中的处理方式不同的情况下,则应再将该等价类划分为更小的等价类。
在确立了等价类后,可以建立等价类表,然后就可以确定测试用例了,在确定测试用例时有个原则要注意:一条测试用例尽量覆盖所有的有效等价类,一个无效等价类对应一条测试用例。
OK。我们来看一个常考的面试题来看一下如何使用等价类划分的方法来设计测试用例把。判断是否构成三角形的例子,一个程序接受3个数作为输入,并判断这三个数是否构成三角形,并说明这个三角形是不等边的,等腰的还是等边的。
我们假设三条边是:A、B、C。如果构成三角形应该满足下面的条件:
A>0,B>0,C>0 并且A+B>C,A+C>B,B+C>A
等腰的还要满足A=B或A=C或B+C
等边的要满足A=B且A=C且B=C
根据这些条件我们来列出等价类表
输入条件 |
有效等价类 |
无效等价类 |
是否构成三角形 |
A>0 (1) |
A<=0 (7) |
B>0 (2) |
B<=0 (8) |
|
C>0 (3) |
C<=0 (9) |
|
A+B>C (4) |
A+B<=C (10) |
|
A+C>B (5) |
A+C<=B (11) |
|
B+C>A (6) |
B+C<=A (12) |
|
是否等腰三角形 |
A=B (13) |
A!=B and A!=C and B!=C (16) |
A=C (14) |
||
B=C (15) |
||
是否等边三角形 |
A=B and A=C and B=c (17) |
A!=B (18) |
A!=C (19) |
||
B!=C (20) |
根据这个表我们就可以确定测试用例了
序号 |
(A B C) |
覆盖的等价类 |
输出 |
1 |
3 4 5 |
1,2,3,4,5,6 |
一般三角形 |
2 |
0 1 2 |
7 |
不构成三角形 |
3 |
1 0 2 |
8 |
|
4 |
1 2 0 |
9 |
|
5 |
1 2 3 |
10 |
|
6 |
3 5 2 |
11 |
|
7 |
3 1 2 |
12 |
|
8 |
3 3 4 |
1,2,3,4,5,6,13 |
是等腰三角形 |
9 |
3 4 3 |
1,2,3,4,5,6,14 |
|
10 |
4 3 3 |
1,2,3,4,5,6,15 |
|
11 |
3 4 5 |
1,2,3,4,5,6,16 |
不是等腰三角形 |
12 |
3 3 3 |
1,2,3,4,5,6,17 |
是等边三角形 |
13 |
3 4 4 |
1,2,3,4,5,6,15,18 |
不是等边三角形 |
14 |
3 3 4 |
1,2,3,4,5,6,13,19 |
|
15 |
3 4 3 |
1,2,3,4,5,6,14,20 |
通过这个例子相信你应该已经掌握这种方法了吧。做个小作业来检验一下吧。
作业:
这个是注册163邮箱的界面,试着划分一下邮件地址的等价类吧。