在测试设计过程中,大家都会遇到很多变量进行组合的情况,对相互组合的两个或更多变量进行的测试活动就是组合测试,一般情况下都是使用组合测试法,但这种情况很多测试人员研究得不够深入。测试人员需要开发或了解组合测试法中使用到的工具,通过程序得到用例组合才更加合理和全面,如果不在测试中一起改变某些变量,就会遗漏由不同的变量组合而触发的错误。
首先介绍下组合测试法的定义,组合测试是一种测试用例生成方法。它将被测系统抽象出来的变量的取值进行组合并生成一组测试用例的过程,一般情况下,组合测试能够在保证错误遗漏率的前提下采用较少的测试用例测试系统。但是对于如何从全集合的变量组合中抽取出有效的测试用例,会有不同的方法,两因素(Pairwise)组合测试就是一种比较好的方法去挖掘出有效的测试用例组合。接下来介绍另外一种方法去自动生成较好的测试用例集,那就是全对偶测试法(All Pairs)。这些组合测试方法也是高级测试工程师必须掌握的。
现在我们假设存在3个变量:V1、V2、V3,V1变量存在3个值:A、B、C;V2变量存在2个值:D、E;V3变量存在2个值:F、G。按照组合测试法,可以组合出3*2*2 = 12种情况,也就是可以设计出12个测试用例。如果3个变量都存在5个不同的值的话,那就可以组合出5*5*5 = 125种情况,也就是需要设计出125个测试用例。测试专家James Bach使用全对偶测试法(All Pairs)将这125个测试用例压缩成25个测试用例,从理论上来覆盖变量组合的测试覆盖率,全对偶测试法有个基本的原则是每个变量的每个取值都要与至少一个用例中的每个其他变量的每个取值配对。
为了让业界测试人员更能方便的使用全对偶测试法产生的组合测试的测试用例,James Bach使用Perl语言开发了一个allpairs工具,接下来通过讲解allpairs工具的使用方法来了解全对偶测试法(All Pairs)的实现原理和组合策略。本工具的下载地址:http://www.satisfice.com/tools/pairs.zip。
假设我们有两个参数需要测试,比如操作系统,打印机,先列出每个参数的值:
操作系统:
Win 98
Win XP
Win 7
打印机:
HP 4050
HP 4100
为了测试所有的组合对(pairings),测试用例包括如下情况:
用例 |
操作系统 |
打印机 |
1 |
Win 98 |
HP 4050 |
2 |
Win 98 |
HP 4100 |
3 |
Win XP |
HP 4050 |
4 |
Win XP |
HP 4100 |
5 |
Win 7 |
HP 4050 |
6 |
Win 7 |
HP 4100 |
在两个参数的情况下,所有的组合对(pairings)就是参数之间的所有组合情况。但是如果我们新增一个参数将会发生什么呢?
是否双面打印:
是
否
下面是3个参数进行组合的所有测试用例:
用例 |
操作系统 |
打印机 |
是否双面打印 |
1 |
Win 98 |
HP 4050 |
是 |
2 |
Win 98 |
HP 4100 |
是 |
3 |
Win XP |
HP 4050 |
是 |
4 |
Win XP |
HP 4100 |
是 |
5 |
Win 7 |
HP 4050 |
是 |
6 |
Win 7 |
HP 4100 |
是 |
7 |
Win 98 |
HP 4050 |
否 |
8 |
Win 98 |
HP 4100 |
否 |
9 |
Win XP |
HP 4050 |
否 |
10 |
Win XP |
HP 4100 |
否 |
11 |
Win 7 |
HP 4050 |
否 |
12 |
Win 7 |
HP 4100 |
否 |