Pairwise(后称:配对测试)可以看作是正交测试用例设计的拓展,其目的是为了缩减测试用例集大小,以较小的测试用例集覆盖较全的测试点,降低测试损耗。
01 配对测试理论基础
配对测试用例设计基于以下两个假设:1、每一个测试点/维度都是正交的,即相互间没有交集;2、根据数学统计分析,73%的缺陷是由单因子或两个因子相互作用产生的(其中单因子是35%,两个因子是38%)。因此,配对测试用例设计对于覆盖两因子交互产生的用例集性价比较高(这也在某些方面成为配对测试的一种局限)。
可能说到这里,还是对于测试维度、因子,有些似明非明、迷惑不解,我们用一个图来简单说下这两个是什么,它们之间什么关系。
一项试验中,基于正交理论:把影响试验结果的变量称为试验因素(因子),简称因素。在试验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称为因素的水平,简称水平。对应与配对测试用例的假设,测试维度即正交理论中的因素;因子即因素的水平。
02 举个栗子
某所大学某系共2个班级,想通过“性别”、“班级”和“成绩”这三个条件查询某课程的成绩分布。则“性别”、“班级”和“成绩”为3个测试点/测试维度;“性别”的“男、女“,”班级“的“1班、2班” 和“成绩”的“及格、不及格”分别为3个测试维度的2个影响因子。
01
正交测试法用例设计
正交测试法中,上述栗子,转化为测试用例可以用下表表示:
表1 正交法测试用例
正交法可以呈现较为完备的测试用例集,覆盖度较高,但是随着测试维度和因子的加大,测试用例集将会变得庞大,测试执行会变得十分耗时。此时,使用配对测试,可以在保证一定测试覆盖度的情况下,缩减测试用例,降低用例执行耗时。
02
配对测试法用例设计
1)从用例8开始分析
用例8是“女、2班、不合格”的组合,两两组合是“女2班”、“2班不合格”、“女不合格”。检查者三个组合在1-7的用例中是否出现过,可以看出“女2班”在4号用例,“2班不合格”在7号用例,“女不合格”在6号用例中出现过。因此,根据配对测试法思想,8号用例可以舍去。此时,剩下用例为:
表2 配对法测试用例删1次
2)接着分析用例7
用例7的两两组合“男2班”在3号用例出现过,“男不合格”在5号用例中出现过,但“2班不合格”仅此一个,因此7号用例需要保留。
3)接着分析用例6
同理分析可得,6号用例的组合“女1班”在2号出现过,“1班不合格”在5号用例出现过,“女不合格”仅此一个,因此6号用例需要保留。
4)接着分析用例5
同理分析可得,5号用例的组合“男1班”在1号出现过,“1班不合格”在6号用例出现过,“男不合格”在7号用例出现过,因此6号用例可以舍去,保留用例如下表。
表3 配对法测试用例删2次
5)接着分析用例4、3、2、1
同理接着从下往上分析用例4、3、2、1可得,最终保留用例如下表所示:
表4 配对法测试用例删3次
此时,可以看出,经过配对测试设计筛选后的测试用例数为原来的50%,用例成本大大缩减。
经过L.L.ThurStone证明,配对测试最终剩下的用例数肯定相同,但可以有不同的组合。
如,将上述用例从上往下(1->8)进行分析,最终保留用例如下表所示:
表5 配对测试用例从上往下筛选
对比表4从下往上筛选用例后结果和表5从上往下筛选后结果,可以看出,使用从下往上筛选后剩余用例为1、4、6、7,而从上往下筛选后剩余用例为2、3、5、8。
表6 两种筛选路径保留测试用例对比
03 还有什么不足
配对测试设计虽然对于多维度的用例集有降低用例成本的作用,但它要求测试人员必须对业务很熟悉,且由于不同的筛选路径导致保留的测试用例不同,在覆盖率上仍有一定缺陷。此外,对于超过两个因子互相作用产生的缺陷,有些力不从心。另外对测试感兴趣的朋友可以关注的我的微信公众号:程序员二黑,里面有我这几年整理收集的测试资源,对软件测试的学习的你应该会很有帮助。