组合覆盖法是一种有效减少测试用例个数的测试用例设计方法。根据覆盖程度的不同,可以分为单因素覆盖、成对组合覆盖、三三组合覆盖等。其中又以成对组合覆盖最常用。
关于组合覆盖的更多内容,参考:http://www.pairwise.org/
成对组合覆盖要求任意两个因素(输入条件)的所有水平组合至少要被覆盖1次。组合覆盖的算法已经被很多工具实现,测试人员可以直接利用这些工具,例如,TConfig、微软的PICT等。下面简单介绍一下使用PICT(Pairwise Independent Combinatorial Testing tool)设计测试用例的过程。
下载:http://www.pairwise.org/tools.asp (除了PICT,还有很多类似的小工具,均可以从此处找到)
下载后双击安装。
PICT接收一个纯文本的Model文件作为输入,然后输出测试用例集合。Model文件的格式如下:
<ParamName> : <Value1>, <Value2>, <Value3>, ...
Type: Primary, Logical, Single, Span, Stripe, Mirror, RAID-5 Size: 10, 100, 500, 1000, 5000, 10000, 40000 Format method: quick, slow File system: FAT, FAT32, NTFS Cluster size: 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 Compression: on, off
把上面的内容存为Model.txt文件。存储在某个目录,例如D盘根目录。然后在命令行中输入以下命令:
C:UsersAdministrator>PICT "D:Model.txt"
则可产生下面的测试用例:

Type Size Format Method File system Cluster size Compression Mirror 10 quick FAT 32768 off RAID-5 10 slow FAT32 512 on Stripe 500 quick NTFS 512 off Span 1000 slow NTFS 1024 on Primary 100 quick FAT32 16384 off Single 1000 slow FAT 8192 off Primary 5000 slow FAT 2048 on RAID-5 40000 quick NTFS 8192 on Logical 10 slow NTFS 65536 on Span 100 quick FAT 65536 off Mirror 10000 slow FAT32 65536 on Logical 1000 quick FAT32 512 off Logical 40000 slow FAT 4096 off Single 1000 quick NTFS 4096 on Stripe 500 slow FAT32 32768 on Mirror 100 quick NTFS 2048 off Span 10 slow FAT32 4096 off Single 40000 quick FAT32 65536 off RAID-5 5000 quick FAT 65536 off Stripe 1000 slow FAT32 2048 on Primary 10000 quick NTFS 8192 off Span 10000 slow FAT 16384 on Primary 1000 slow FAT32 65536 on Single 5000 quick FAT32 1024 off RAID-5 100 slow FAT 1024 on Single 500 slow NTFS 2048 off Mirror 500 quick FAT 1024 on Stripe 100 quick FAT 4096 on Primary 40000 quick FAT32 1024 off Single 10 quick NTFS 16384 on Logical 5000 slow NTFS 32768 off Stripe 10 slow FAT 1024 off Primary 500 slow NTFS 4096 off Mirror 1000 quick FAT 16384 on Stripe 40000 quick FAT 16384 off Mirror 10 slow FAT32 8192 on Span 40000 quick NTFS 32768 off Logical 10000 slow NTFS 1024 off Span 5000 quick FAT 512 on Logical 100 slow FAT32 8192 on RAID-5 500 quick NTFS 16384 on Stripe 5000 slow NTFS 8192 off Mirror 5000 slow NTFS 4096 off Span 500 quick FAT 65536 off Span 10000 slow NTFS 2048 on Stripe 10000 quick FAT32 65536 off Primary 10 quick FAT 2048 off RAID-5 10000 slow NTFS 4096 on Primary 10000 quick NTFS 32768 on RAID-5 1000 quick FAT32 32768 on Primary 10000 quick FAT 512 off Mirror 40000 slow FAT32 512 on Single 100 slow NTFS 512 off Logical 500 quick FAT32 16384 off Single 100 slow NTFS 32768 on Mirror 5000 quick FAT32 16384 off Span 500 slow FAT 8192 on RAID-5 40000 slow FAT 2048 off Logical 10 quick FAT 2048 off Single 10000 slow FAT32 65536 on
如果想把产生的测试用例存储到某个文件,则可输入以下命令:
C:UsersAdministrator>PICT "D:Model.txt" > "D:OutPut.txt" #生成文本文档 C:UsersAdministrator>PICT "D:Model.txt" > "D:OutPut.xls" #生成表格
上面产生的测试用例一共有60条,而如果完全覆盖,则需要执行7*7*2*3*8*2=4704项测试,这说明成对组合覆盖法可以有效减少测试次数。实验证明,成对组合覆盖法的测试覆盖率高达90%以上。
当然,仔细检查产生的测试用例之后,我们可能会发现,有些组合是不合理的,需要我们自己修改一下,而且有些常用的组合可能没出现在这个表里,还需要我们自己添加。总的来说,任何工具都有一定的局限性,结果可以为作为参考,实际还是离不开人力。
更多关于PICT的使用方法请参考PICT的帮助文档。
PS:实际上,我没弄清楚成对组合覆盖和正交表具体有什么样的区别,总感觉差不多,如果有小伙伴清楚的话,欢迎留言解惑,不胜感激!