软件测试中的等价类划分方法是一种典型的黑盒测试策略,旨在通过合理划分输入数据的集合,用较少的测试用例来检测潜在的缺陷。
一、等价类的定义与类型
-
等价类定义:等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等价特性。测试某等价类的代表值就等于对这一类其它值的测试。
-
等价类类型:
- 有效等价类:包含合理、有意义的输入数据,这些数据符合软件需求规格说明。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
- 无效等价类:包含不合理、无意义的输入数据,这些数据不符合软件需求规格说明。利用无效等价类可检验程序对于无效数据的异常处理能力。
二、等价类划分的原则
- 按照区间划分:在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。例如,输入值是学生成绩,范围是0~100之间,那么有效等价类为0≤成绩≤100(如0、1、10等),无效等价类为<0或>100(如-1、101等)。
- 按照数值划分:在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。例如,输入条件说明输入学历为本科、硕士和博士三种之一,那么有效等价类为本科、硕士和博士其中一种,无效等价类为除这三种外的其他字符(如小学、专科等)。
- 按照数值集合划分:在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。例如,密码输入框要求密码必须是数字或字母,那么有效等价类为密码是数字和字母的组合,无效等价类为密码包括中文、密码包括其他符号等。
- 按限制条件或规则划分:在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,校内电话号码拨外线为9开头,那么有效等价类为9+外线号码,无效等价类为非9开头+外线号码、9+非外线号码等。
- 细分等价类:在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,应再将该等价类进一步划分为更小的等价类,并建立等价类表。
三、等价类测试用例的类别
根据测试用例的完整性,等价类测试用例可以划分为以下几类:
- 弱一般等价类测试:遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。
- 弱健壮等价类测试:在弱一般等价类的基础上,增加取值为无效值的情况。对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的。
- 强一般等价类测试:遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值。
- 强健壮等价类测试:在强一般等价类的基础上,增加取值为无效值的情况。
四、等价类划分法的应用步骤
- 确定输入条件的等价类:分析被测试的软件或系统的输入域,将输入数据划分为若干个等价类。
- 为每个等价类设计测试用例:确保测试用例能够覆盖所有等价类。设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。然后,设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
- 优先考虑无效等价类:在测试资源有限的情况下,优先测试无效等价类,因为它们更容易发现程序中的错误。
- 结合其他测试方法:等价类划分可以与其他测试方法(如边界值分析、错误猜测等)结合使用,以提高测试的效率和效果。
- 适时更新等价类:在软件需求变更或设计变更时,应及时更新等价类,确保测试用例的有效性。