目录
一、等价类划分的概念
-
依照《需求规格说明书》的描述,找出程序所有的输入形成一个集合( 输入域);
-
然后依照程序的输入域划分出若干个子集,从每个子集中选出一个或者少数的测试数据代表对这个区域进行测试。
二、使用等价类划分的原因
-
通过较少的测试用例达到了尽量多的测试覆盖,解决了不能穷举测试的问题。
-
例如如果一个子集中的测试数据代表 测试通过了,则认为该测试数据所代表的整个子集测试通过了。
三、等价类划分的价值
-
能够有效的减少工作量,提高了工作效率,同时也保证了测试的覆盖强度。
四、相关概念
1、等价类
-
等价类指某个输入域的子集。
-
在该子集合中,各个输入数据对于揭露程序中的缺陷都是等效的(如果一个元素能够发现软件缺陷,其余的元素也可以;如果这个元素不可以的话,其余的元素也不能发现软件的缺陷)。
2、有效等价类
-
指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合;
-
指用户输入的有效数据,并得到预期的或正常的结果;
-
利用有效等价类验证程序是否实现了《需求规格说明书》中所规定的的功能和性能。
3、无效等价类
-
指对程序的规格说明来说是不合理的、或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。
-
异常的或不符合规定的输入,相应的也会得到异常的输出或提示信息。
五、等价类划分法使用步骤
1、先从程序规格说明书中找出各个输入条件
-
从需求规格说明书中找出所有的输入条件;有些输入条件是明确的,有些是隐含的,这些都要找出来。
2、再为每个输入条件划分等价类(划分时需遵循等价类的划分原则),形成若干互不相交的子集
3、列出等价表
![](https://i-blog.csdnimg.cn/blog_migrate/3b5804f278c690125233b4a131eaf4d8.png)
六、等价类的划分原则
原则2+原则6可以得到原则4。原则1中有效范围的指遇到程序分别处理时,也要参考原则6对有效范围进行进一步的划分。
1、原则1
-
在输入条件规定了 取值范围或 值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
-
例如输入条件中规定输入的数据需在[1,10]之间;那么一个1~10(包括1和10)之间的数值都是有效等价类;那么小于1或者大于10的数值都是无效等价类。
2、原则2
-
在输入条件规定了 输入值的集合或者规定了“ 必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
-
例如公司职级必须是按照初级、中级、高级进行划分;那么有效等价类就是初级、中级、高级中任意数值;无效等价类就是输入大师级。
3、原则3
-
在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价来。
4、原则4
-
在规定了 输入数据的一组值(假定n个),并且程序要对每一个输入值 分别处理的情况下,可确定n个有效等价类和一个无效等价类。
-
例如公司规定了出差期间乘坐公交、地铁、出租车都是可以报销的,但是报销的比例不同,公交100%报销、地铁90%报销、出租车80%报销,除此之外其他类型的交通工具不予报销;那么输入数据为(公交,地铁,出租车)时,3个有效等价类公交、地铁、出租车须分别进行测试;交通工具为飞机时是无效等价类。
5、原则5
-
在规定了输入数据必须遵守的规则的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
6、原则6
-
在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
七、测试用例的设计步骤
1、为每个等价类规定一个唯一编号
2、设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖。
-
一个测试用例可以覆盖1~n个有效等价类。
-
一个测试用例可以覆盖多个有效等价类的原因:通过有效等价类是为了验证程序功能的正确性。
3、设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
-
一个测试用例只可以覆盖一个无效等价类。
-
一个测试用例不可以覆盖多个无效等价类的原因:无效等价类系统不会接收,输入后系统会发生错误;当一个测试用例覆盖2个无效等价类时,程序会出现 错误的遮掩情况,出现错误掩盖时就无法判断是哪个无效等价类产生的错误信息。
-
错误掩盖情况:假设无效等价类a、b分别对应错误信息a、b;当等价类a判断正确时才会去判断等价类b输入程序是否正确;但是无效等价类a输入程序已经报错了,根本不会再去判断等价类b,所以错误信息中只包含无效等价类a的错误信息,其实无效等价类b也是错误的。
![](https://i-blog.csdnimg.cn/blog_migrate/28f48bfcabcdd0953a895acb4072c1b0.png)
八、等价类划分法考点
1、等价类划分的原则
![](https://i-blog.csdnimg.cn/blog_migrate/425c5e8337361754c59e83894f6a78ea.png)
2、等价类划分设计测试用例的步骤
![](https://i-blog.csdnimg.cn/blog_migrate/ae0d4a226b0f0b423f70c2f1596407f9.png)
九、举例说明等价类的应用
规格说明:
一个软件中要求用户输入以年月表示的日期,假定日期的输入范围限定在2000年1月至2100年12月之间,并且规定日期由6位数字字符组成,前4位表示年,后2位表示月,那么对应的“日期输入格式检查”这一功能的等价类。
![](https://i-blog.csdnimg.cn/blog_migrate/ce1b3433004f528fc05b983c90544900.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d2d0a13067d1870c0ccca11af71648bf.png)
注意:基于等价类划分法,有效等价类的测试用例确实应该只有一条,但这里加入了边界值的思想,所以写了3条测试用例,边界值法后续的文章会详细介绍。