等价类测试是功能性测试最基本、也是最重要的方法。
使用等价类作为功能测试的基础有两个动机:(1)完备测试;(2)避免冗余。边界值测试不能解决这两个问题中的任何一个。
等价类测试属于基于规格说明的测试方法,同时在考虑等价类测试时,在可能的情况下,尽可能的(1)贴近软件实现,或者结合软件实现,因为不同的实现方法关系到等价类是否划分的合理;(2)贴近用户使用,多站在用户的角度考虑问题,考虑等价类的划分。
6.1 等价类
等价类的重要问题是它们构成集合的划分,其中划分是指互不相交的一组子集,这些子集的并是整个集合。整个集合提供了完备性,互不相交保证了一种形式的无冗余性。
等价类测试的关键,就是选择和确定类的等价关系。常常通过预测可能的实现,并考虑在实现中必须提供的功能操作来做出这种选择。
以下讨论以如下问题作为例子进行:
两变量x1和x2函数F,F是一个程序,x1和x2是输入,定义域如下:
a≤x1≤d,区间[a,b),[b,c),[c,d],x1的无效值x1<a, x1>d
e≤x2≤g,区间[e,f),[f,g],x2的无效值x2<e,x2>g
将等价类分为四种形式,分别为:
- 弱一般等价类
- 强一般等价类
- 弱健壮性等价类
- 强健壮性等价类
其中,几个术语的含义如下:
- 弱:单缺陷假设
- 强:多缺陷假设
- 一般:不考虑无效值
-
健壮性:考虑无效值
6.1.1 弱一般等价类测试
基于单缺陷假设,弱等价类测试通过使用一个测试用例中的每个等价类的一个变量实现。
6.1.2 强一般等价类
基于多缺陷假设,需要笛卡尔积的每个元素对应的测试用例
好的等价类测试的关键是等价关系的选择。
6.1.3弱健壮性等价类测试
健壮:是因为这种测试考虑了无效值
弱:是因为有单缺陷假设
6.1.4强健壮性等价类测试
健壮:是因为这种测试考虑了无效值
强:是因为考虑了多缺陷