1.定义
所谓等价类(Equivalence Class Partitioning)是指输入域的某个互不相交的子集合,所有等价类的并集便是整个输入域。目的在于测试用例的无冗余性。
2.等价类划分
软件测试中的等价类划分就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。利用这一方法设计测试用例可以不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。等价类划分法是一种系统性的确定要输入的测试条件的方法。
由于等价类是在需求规格说明书的基础上进行划分的,并且等价类划分不仅可以用来确定测试用例中的数据的输入输出的精确取值范围,也可以用来准备中间值、状态和与时间相关的数据以及接口参数等,所以等价类可以用在系统测试、集成测试和组件测试中,在有明确的条件和限制的情况下,利用等价类划分技术可以设计出完备的测试用例。这种方法可以减少设计一些不必要的测试用例,因为这种测试用例一般使用相同的等价类数据,从而使测试对象得到同样的反映行为。
划分等价类( valid / invalid )
(1)有效等价类:检验程序是否实现了规格说明预先规定的功能和性能。
有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。以下是对有效等价类数据集的一些例子:
终端用户输入的命令
与最终用户交互的系统提示
接受相关的用户文件的名称
提供初始化值和边界等
提供格式化输出数据的命令
在图形模式(比如鼠标点击时)提供的数据
失败时显示的回应消息
(2)无效等价类:检查软件功能和性能的实现是否有不符合规格说明要求的地方
无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。以下是无效等价类数据集的一些例子:
在一个不正确的地方提供适当的值
验证边界值
验证外部边界的值
用户输入的命令
最终用户与系统交互的提示
验证与边界和外部边界值的数值数据
3.等价类划分的方法
常用的等价类划分原则
(1)按区间划分:
可以确定一个有效等价类、两个无效等价类。
例:学生允许选修4到7门课程,则可划分为
有效:4到7;
无效:不足4门;超过7门
(2)按数值划分:
如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类。
(3)按数值集合划分:
规格说明中规定了输入值的集合,则可以确定一个有效等价类,并划分一个无效等价类。
例:程序要求输入为TOM,DICK,HARRY的名字之一,则可划分为
有效:三个有效名字之一
无效:有效名之外的名字,如:JOE
(4)按限制条件或规则划分:
规格说明中规定了输入数据必须遵守的规则和限制条件,则可以确立一个有效等价类(符合规则)和若干个(≥ 1)无效等价类(不同角度的违反规则)。
(5)细分等价类:
如果我们确知,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将此等价类进一步划分成更小的等价类
4.等价类测试用例设计
(1)在确立了等价类之后,可列出所有划分出的等价类表。
(2)为每一个等价类规定一个唯一的编号。
(3)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,直到测试用例覆盖了所有的有效等价类。
(4)设计一个新的测试用例,使其覆盖且只覆盖一个尚未覆盖的无效等价类。重复这一步,直到测试用例覆盖了所有的无效等价类。