对应三个参数的所有组合情况就是12个测试用例。但是我们需要的是在一组测试用例中能够保证至少一个用例中的每个其他变量的每个取值都配对过。这种情况就可以得到较少的测试用例,我们就可以得到6个测试用例。
用例 |
操作系统 |
打印机 |
是否双面打印 |
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)。
相对于所有组合情况来说,全对偶的测试覆盖率要容易很多。例如,如果你想测试10个参数且都有26个值的功能,所有组合情况将导致存在141,167,095,653,376个测试用例。而全对偶测试法就只要测试1094个测试用例就可以。
为了能较好的使用allpairs工具,测试人员需要在表格上列出所有的参数和参数值,一般可以使用Excel工具来表达:
操作系统 |
打印机 |
是否双面打印 |
Win 98 |
HP 4050 |
是 |
Win XP |
HP 4100 |
否 |
Win 7 |
然后将这个Excel表格拷贝到一个text文件(暂时命名为vars.txt),在Dos平台上运行Allpairs程序,使用如下的命令:
ALLPAIRS VARS.TXT > TESTCASES.TXT
如果测试人员也安装了Perl,也可以使用如下的命令:
PERL ALLPAIRS.PL VARS.TXT > TESTCASES.TXT
TESTCASES.TXT文件里面的数据也适合拷贝到Excel文件中,类似于如下:
上图的第一部分是测试用例的集合,那个”pairrings”列说明的是全对偶方法找到的唯一pairrings的数量。
上图的第二部分是帮助测试人员了解全对偶方法的是怎么完成的。它列出了每个pair,且显示了这个pair在测试用例列表中出现的次数,且列表出了每个pair出现的时候所对应的测试用例的用例号。
James Bach 也在《软件测试经验与教训》中详细的说明任何使用全对偶的测试方法进行组合测试。主要分三大步骤,第一个步骤是 从域划分开始,确定和压缩每个参数所取的值和个数;第二个步骤是 获得全单值,保证覆盖到每个变量的每个重要取值;第三个步骤是 获得全对偶,保证每个变量的每个取值都要与至少一个测试用例中的每个其他变量的每个取值配对。同时他还表示仅仅使用全对偶测试是有风险的,与全单值一样,测试人员可能知道被广泛应用的特定组合,或可能有麻烦的组合。