等价类划分法
1.等价类划分定义
将所有的输入域,划分为若干个子集,从每个子集中选取少量的具有代表性的数据作为测试用例。
可划分为两种等价类:有效等价类和无效等价类
有效等价类:完全满足产品规格说明的数据,有效的,有意义的的输入数据集合
无效等价类:不满足程序的程序的输入要求或者无效的输入数据构成的集合
2.等价类的划分方法
1) 输入值规定了取值范围或者对输入数据的个数有规定,可划分为一个有效等价类和两个无效等价类;
实例
输入学生成绩:0-100,有效等价类为输入值为“0~100”,无效等价类为:输入值>100 或 输入值<0
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
学生成绩 | 大于等于0且小于等于100的任意一个数字 | 小于0的任意一个数字 |
大于100的任意一个数字 |
2) 输入值已规定了“必须如何”条件的情况下,可划分为一个有效等价类和一个无效等价类;
实例
输入‘张三’的姓名,有效等价类为:“张三”,无效等价类为:非张三的任何字符内容
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
输入‘张三’的姓名 | 张三 | 非张三的任何字符内容 |
3) 输入值为布尔条件的情况下,可划分为一个有效等价类和一个无效等价类;
实例
输入值>10,有效等价类为:大于10 的任何一个数字,无效等价类为:小于等于10的任何一个数字
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
输入值>10 | 大于10 的任何一个数字 | 小于等于10的任何一个数字 |
4) 规定输入数据的一组值n个,并且程序对每个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类;
实例
规定输入学科条件说明学历可为:硕士,本科,大专三种之一,则把这三个值确定3个有效等价类,把这三个学历之外的任何学历作为无效等价类
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
硕士,本科,大专三种之一 | 硕士 | 三个学历之外的任何学历 |
本科 | ||
大专 |
5) 在规定输入数据必须遵守几个规则的情况下,可确认若干个有效等价类(遵守规则)若干个无效等价类(从不同角度违反规则)
实例
电子邮件规则:必须包含@,@后格式为x.y,地址中不能包含符号:#¥%
有效等价类:字母@x.y 数字@x.y
无效等价类:不包含@,@后面格式不为x.y ,包含特殊字符,#¥%
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
电子邮件规则:必须包含@,@后格式为x.y,地址中不能包含符号:#¥% | 字母@x.y | 不包含@ |
数字@x.y | @后面格式不为x.y | |
包含特殊字符:#¥% |
6) 在确认已划分的等价类中各元素在程序处理中的方式不同的情况下,可将该等价类划分为更小的等价类
实例
成绩及格的学生评级,80>=成绩>=60:一般;90>=成绩>80:良好;100>=成绩>90:优秀;
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
成绩及格的学生 | 100>=成绩>=60:及格 | 60>成绩>=0:不及格 |
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
成绩及格的学生评级 | 80>=成绩>=60:一般 | 60>成绩>=0:不及格 |
90>=成绩>80:良好 | ||
100>=成绩>90:优秀 |
等价类设计测试用例说明
按照输入条件建立有效等价类和无效等价类,列出所有划分出的等价类。
(1) 为每一个等价类规定一个唯一的编号。
(2) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
(3) 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
在使用等价类划分法设计测试用例的的重点在于划分有效等价类和无效等价类粗细的粒度。粒度越粗,设计测试用例越少,粒度越细,设计测试用例越多。相对来说,粒度越细能发现更多问题。