在测试设计过程中,大家都会遇到很多变量进行组合的情况,对相互组合的两个或更多变量进行的测试活动就是组合测试,一般情况下都是使用组合测试法,但这种情况很多测试人员研究得不够深入。测试人员需要开发或了解组合测试法中使用到的工具,通过程序得到用例组合才更加合理和全面,如果不在测试中一起改变某些变量,就会遗漏由不同的变量组合而触发的错误。
!l4pbq%~7S0首先介绍下组合测试法的定义,组合测试是一种测试用例生成方法。它将被测系统抽象出来的变量的取值进行组合并生成一组测试用例的过程,一般情况下,组合测试能够在保证错误遗漏率的前提下采用较少的测试用例测试系统。但是对于如何从全集合的变量组合中抽取出有效的测试用例,会有不同的方法,两因素(Pairwise)组合测试就是一种比较好的方法去挖掘出有效的测试用例组合。接下来介绍另外一种方法去自动生成较好的测试用例集,那就是全对偶测试法(All Pairs)。这些组合测试方法也是高级测试工程师必须掌握的。51Testing软件测试网[K\Tp'j+Z
现在我们假设存在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个测试用例,从理论上来覆盖变量组合的测试覆盖率,全对偶测试法有个基本的原则是每个变量的每个取值都要与至少一个用例中的每个其他变量的每个取值配对。
5D3S-f8m$\9zS0为了让业界测试人员更能方便的使用全对偶测试法产生的组合测试的测试用例,James Bach使用Perl语言开发了一个allpairs工具,接下来通过讲解allpairs工具的使用方法来了解全对偶测试法(All Pairs)的实现原理和组合策略。本工具的下载地址:http://www.satisfice.com/tools/pairs.zip。
J/~*[D
xV2wMM0?-k0假设我们有两个参数需要测试,比如操作系统,打印机,先列出每个参数的值:
'R2Gk9vE^7{] LY0操作系统:51Testing软件测试网H$A7P2s2CJgd
Win 9851Testing软件测试网
b}W'}x
Win XP
&zS?kLJY!}3~0Win 751Testing软件测试网3T'JZNsh"lE
打印机:51Testing软件测试网
J*u%Qi;W@PZ}] j
HP 4050
)s1hi+`V4\/w$R,m"K2j0HP 4100
$s%\
MkGI,k0为了测试所有的组合对(pairings),测试用例包括如下情况:51Testing软件测试网wA#t$Rx-j
X
用例 | 操作系统 | 打印机 |
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)就是参数之间的所有组合情况。但是如果我们新增一个参数将会发生什么呢?
4Vjj0t3V&k0是否双面打印:51Testing软件测试网(QhI({!Q3\_
是
u:A*Cp/} r1AGg0否
9@{7`6UHBrr%f0下面是3个参数进行组合的所有测试用例:
dd?)t9wys_EV-{0用例 | 操作系统 | 打印机 | 是否双面打印 |
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 | 否 |
对应三个参数的所有组合情况就是12个测试用例。但是我们需要的是在一组测试用例中能够保证至少一个用例中的每个其他变量的每个取值都配对过。这种情况就可以得到较少的测试用例,我们就可以得到6个测试用例。51Testing软件测试网`K
sY:uh9y1x
用例 | 操作系统 | 打印机 | 是否双面打印 |
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 | 否 |
事实上,如果这三个参数中的某两个参数的值的任意不同的组合会触发一个bug的话,那表格上的那组测试用例也可以发现该bug。当三个特殊的值组合在一起触发的某个bug,那表格上的那组测试用例不一定能发现该bug,但是至少我们覆盖了所有的全对偶(all pairs)。
-[}+mOI
t(g0相对于所有组合情况来说,全对偶的测试覆盖率要容易很多。例如,如果你想测试10个参数且都有26个值的功能,所有组合情况将导致存在141,167,095,653,376个测试用例。而全对偶测试法就只要测试1094个测试用例就可以。
9F?*X ?O&_0为了能较好的使用allpairs工具,测试人员需要在表格上列出所有的参数和参数值,一般可以使用Excel工具来表达:51Testing软件测试网-x5l[?DBi2iA
操作系统 | 打印机 | 是否双面打印 |
Win 98 | HP 4050 | 是 |
Win XP | HP 4100 | 否 |
Win 7 | | |
然后将这个Excel表格拷贝到一个text文件(暂时命名为vars.txt),在Dos平台上运行Allpairs程序,使用如下的命令:51Testing软件测试网HY-ZFj"kR
ALLPAIRS VARS.TXT > TESTCASES.TXT
如果测试人员也安装了Perl,也可以使用如下的命令:51Testing软件测试网R2L S$L#eP
PERL ALLPAIRS.PL VARS.TXT > TESTCASES.TXT
TESTCASES.TXT文件里面的数据也适合拷贝到Excel文件中,类似于如下:51Testing软件测试网u7J
H1_$]/SN'I$c
On0C R6]0上图的第一部分是测试用例的集合,那个”pairrings”列说明的是全对偶方法找到的唯一pairrings的数量。51Testing软件测试网)N3Zt7D+W
}P+O
上图的第二部分是帮助测试人员了解全对偶方法的是怎么完成的。它列出了每个pair,且显示了这个pair在测试用例列表中出现的次数,且列表出了每个pair出现的时候所对应的测试用例的用例号。51Testing软件测试网3P [8g"r)I