基本概念:
等价类:对应用程序的规格(接口)的输入数据构成的集合
有效等价类:对应用程序的规格说明来说是合理的有意义的输入数据;
无效等价类:
六条确定等价类的原则
1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类(在范围之内的等价类)和两个无效等价类(有效范围的两侧)。
2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,则可以确立一个有效等价类和一个无效等价类。 (集合中的有效等价类和集合外的无效等价类)
3、在输入条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类。
4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立n个有效等价类和一个无效等价类(除了规定的这组值)。
5、在规定了输入数据必须遵守的规则(pattern)的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类(考虑一下if嵌套)。
等价类划分法确定测试用例的步骤:
1、按照上面的原则确立等价类;
2、建立等价类表,列出所有划分出的等价类;
3、从划分出的等价类中按以下的3个原则设计测试用例;
为每一个等价类规定一个唯一的编号;
设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
实例:
程序规定;输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程序进行测试用例设计。
步骤1:确定等价类
根据给出的程序输入的规定,可以划分如下等价类:
a. 输入值的集合:整数
b. 输入值的个数:3个
c. 要构成三角形,默认的输入值的范围:正数
d. 构成三角形的要素,输入值必须遵守下面的规则:两边之和大于第三边;
e. 一般三角形等价类
f. 等腰三角形
g. 等边三角形
步骤2:建立等价类表,给每个等价类编号
设a、b、c为三角形的三边
输入条件 |
| 有效等价类 | 编号 | 无效等价类 | 编号 | |
三个整数 | 整数 | 1 | 一边为非整数 | a非整数 | 11 | |
b非整数 | 12 | |||||
c非整数 | 13 | |||||
两边为非整数 | ab非整 | 14 | ||||
ac非整 | 15 | |||||
bc非整 | 16 | |||||
三边非整 | abc非整 | … | ||||
3个数 | 2 | 给出一个边 | 只有a |
| ||
只有b |
| |||||
只有c |
| |||||
给出两个边 | 只有ab |
| ||||
只有ac |
| |||||
只有bc |
| |||||
给超过3个边 |
| |||||
正数 | 3 | 一边<=0 | a<=0 |
| ||
b<=0 |
| |||||
c<=0 |
| |||||
两边<=0 | a|b<=0 |
| ||||
a|c<=0 |
| |||||
b|c<=0 |
| |||||
三边都<=0 | a|b|c<0 |
| ||||
一般三角形 | a+b>c | 4 | a+b<c |
| ||
a+b=c |
| |||||
a+c>b | 5 | a+c<b |
| |||
a+c=b |
| |||||
b+c>a | 6 | b+c<a |
| |||
b+c=a |
| |||||
等腰三角形 | a=b(一般三角形) | 7 |
|
|
| |
a=c(一般三角形) | 8 |
|
|
| ||
b=c(一般三角形) | 9 |
|
|
| ||
等边三角形 | a=b=c | 10 |
|
|
| |
|
|
|
|
|
|
输入条件 |
| 有效等价类 | 编号 | 无效等价类 | 编号 | |
三个整数 | 整数 | 1 | 一边为非整数 | a非整数 | 11 | |
b非整数 |