一、 定义:
等价类划分的方法是将输入域划分为若干个区域,并从中选择少数(尽量少)具有代表性的数据作为测试用例。
二、 分类:
等价类划分将输入区域分为有效等价类和无效等价类。
有效等价类:指对于程序的规格说明是合理的、有意义的输入数据构成的集合。使用该等价类可检验程序是否实现了程序需求规格说明中所要求的功能和性能。
无效等价类:不合理的、无意义的输入数据构成的集合。
三、 前提条件:
经仔细分析和推敲需求说明书中的各项需求,能将需求说明中对输入的要求和对输出的要求区别开来并加以分解。
四、 使用方法:
步骤一:划分等价类
划分的原则:
1、在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
例如:程序要求输入的数值是从10到20之间的整数,则有效等价类为“大于等于10而小于等于20的整数”,两个无效等价类为“小于10的整数”和“大于20的整数”
从10到20之间的整数 | 有效等价类 | 无效等价类 |
10≤X≤20,(整数) | X<10,(整数) |
X>20,(整数) |
2、如果规定了输入值的集合或者规定了“必须如何”,则可以确定一个有效等价类和一个无效等价类。
例如:程序要进行平方根运算,则“大于等于0的数”为有效等价类,“小于0的整数”为无效等价类。
对X进行平方根运算 | 有效等价类 | 无效等价类 |
X≥0 | X<0 |
3、在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
4、如果规定了输入数据的一组值(假定n个),并且程序要求每一个输入值分别进行处理,则可以为每一个确定一个有效等价类(即n个),此外根据这组值确定一个无效等价类,即所有不允许的输入值的集合。
例如:程序规定某个输入条件x的取值只能为集合{1,3,5,7}中的某一个,则有效等价类为x=1,x=3,x=5,x=7,程序对这4个数值分别进行处理;无效等价类为x不等于1,3,5,7的值的集合。
5、如果规定了输入数据必须遵守的规则,则可以确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
例如:程序中某个输入条件规定必须4位数字,则可以划分一个有效等价类为输入数据为4位数字,3个无效等价类分别为输入数据中含有非数字字符、输入数据少于4位数字、输入数据多于4位数字。
必须4位数字 | 有效等价类 | 无效等价类 |
4位数字 | 少于4位数字 |
含有非数字字 |
多于4位数字 |
6、如果已知的等价类中各个元素在程序中的处理方式不同,则应将等价类进一步划分成更小的等价类。
比如5中已划分的有效等价类4位数字,若是全角数字,若程序将是自动识别为半角数字,则将该有效等价类再细分为4位半角数字、4位全角数字。
在确立了等价类之后,建立等价类表,列出所有划分的等价类
再根据列出的等价类表,按以下步骤确定测试用例:
(1)为每一个等价类规定一个惟一的编号;
(2)设计一个新的测试用例,合其尽可能多的覆盖未覆盖的有效等价类,重复这个过程,直到所有的有效等价类均被测试用例所覆盖;
(3)设计一个新的测试用例,使其覆盖一个无效的等价类,重复这个过程,直至所有的无效等价类均被测试用例所覆盖。
因此在划分等价类的时候从有效和无效两方面去考虑。一般在设计测试用例时,一条用例要尽量多的覆盖有效等价类,而无效等价类则要求一对一的覆盖。(为什么无效等价类不能用一条用例尽量多覆盖呢,原因是什么呢?)