组合覆盖与PICT的使用

组合覆盖法是一种有效减少测试用例个数的测试用例设计方法。根据覆盖程度的不同,可以分为单因素覆盖、成对组合覆盖、三三组合覆盖等。其中又以成对组合覆盖最常用。

关于组合覆盖的更多内容,参考: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>, ...
 用冒号隔开输入条件和参数,每行一个输入条件,参数之间用逗号隔开。
下面是设计一个测试磁盘分区创建功能的Model文件的例子。输入条件有分区类型、大小、格式化方式、文件系统类型、簇大小、是否压缩。各项输入条件分别有不同的参数选择:
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
View Code

如果想把产生的测试用例存储到某个文件,则可输入以下命令:

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:实际上,我没弄清楚成对组合覆盖和正交表具体有什么样的区别,总感觉差不多,如果有小伙伴清楚的话,欢迎留言解惑,不胜感激!

原文地址:https://www.cnblogs.com/zhengna/p/9679233.html