使用PICT生成全面组合覆盖的测试用例

简介: 综述PICT(The Pairwise Independent Combinatorial Testing Tool),是 Microsoft 内部使用一款测试用例设计工具。

综述

PICT(The Pairwise Independent Combinatorial Testing Tool),是 Microsoft 内部使用一款测试用例设计工具。在实际使用过程中,需要输入测试用例相关的参数,然后PICT可以有效的按照两两测试的原理来创建和设计测试用例,以获得参数的全面组合覆盖。

关于两两组合测试:
黑盒测试中,经常会遇到多种输入参数的取值相互组合的情况,实践证明及研究发现,大约70%的软件故障是由一个或两个参数共同作用引起的。所以组合测试,尤其是两两组合测试,在实际工程的软件测试中被公认为是一种非常有效的测试方法。
但是实际工作过程中有成对组合量太大,PICT就很好的解决了这一问题。

安装

点击官网下载,安装后即可使用。

img_ad59c8819ec06941a92e8366320ba712.png

PICT安装程序会将PICT路径添加到系统变量,所以我们可以从系统上的任何路径运行它。

简单实例

PICT是一个命令行工具。执行前需要准备一份纯文本的Model File,用来详细描述被测接口的参数(或配置集、数据集等)。要说明的一点是:PICT的使用层面是非常广的,不仅仅局限于接口测试、功能测试等方面。
PICT生成一组简洁的参数值选项,用来组成组合覆盖测试用例。举一个简单的例子,现在有一个接口,它的支持的参数有:


img_e520a6af2552c9a49b7d74d9c66507bd.png
params

首先新建一个test.txt文件当做Model File,然后在文本工具中输入参数集,要注意所有的标点都必须为英文标点:

page:int,string,
rows:int,string,
sekContract:string,int,
sekPm:string,int,

保存后,在此文档目录下按住shift后鼠标右键,选择”在此处打开命令窗口”,执行命令pict test.txt,如下:

img_ae99c01f3c4554b0bf88c92821de67d6.png
image.png

此时pict会把参数自由组合的情况,打印在屏幕上;为了方便查看,我们也可以将输出重定向一下:


img_0b6f28c37be760b4c0145f1cf42bb6a0.png
输出重定向
img_ad05987d62bd240e94c327642aa837ca.png
参数组合.txt

img_7a8c12ad6449f7f7f1f28977a3026de0.png
参数组合.xls

模型文件(Model File)

模型选项(Model Sections)

一个模型文件的标准定义格式如下,[sections]表示非必选:

#参数定义
parameter definitions
#子模块定义
[sub-model definitions]
#约束定义
[constraint definitions]

模型的项应该始终按照上面所示的顺序指定,不能重叠。参数定义部分首先出现,然后是可选的子模型和约束定义。如果使用它们的话,选项之间不需要任何特殊的分隔符。空行可以出现在任何地方。我们可以通过前缀“#”字符来标识注释。

约束定义

可用的操作符有:=, <>, >, >=, <, <=和模糊匹配通配符LIKE,模糊匹配表达式中,'*'匹配任何数量的字符,'?'匹配单个字符。为了更改默认操作符优先级,也允许使用圆括号;逻辑运算符支持IN,IF,THEN,ELSE,NOT,AND,OR;
举例:

[Size] < 10000
[Compression] = "OFF"
[File system] like "FAT*"
IF [Cluster size] in {512, 1024, 2048} THEN [Compression] = "Off";
IF [File system] in {"FAT", "FAT32"}   THEN [Compression] = "Off";
IF [File system] <> "NTFS" OR
 ( [File system] =  "NTFS" AND [Cluster size] > 4096 )
THEN [Compression] = "Off";
 
IF NOT ( [File system] = "NTFS" OR
       ( [File system] = "NTFS" AND NOT [Cluster size] <= 4096 ))
THEN [Compression] = "Off";
相关文章
|
API Serverless 监控
函数组合的N种方式
随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务“分而治之,合而用之”的精髓所在。
2227 0
|
4月前
|
编解码 监控
视频修复与增强应用举例
视频修复与增强应用举例
|
9月前
|
测试技术
07-白盒测试方法-逻辑覆盖法
07-白盒测试方法-逻辑覆盖法
|
9月前
|
测试技术
04-测试用例设计方法-判定表法
04-测试用例设计方法-判定表法
|
9月前
|
测试技术
06-测试用例设计方法-场景法
06-测试用例设计方法-场景法
|
12月前
|
SQL 测试技术 数据安全/隐私保护
测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(上)
测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(上)
188 0
|
12月前
|
Java 测试技术 程序员
测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(下)
测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)(下)
|
测试技术
测试思想-流程规范 用例优先级定义与使用规范 V1.0
测试思想-流程规范 用例优先级定义与使用规范 V1.0
100 0
|
存储 测试技术 持续交付
自动化测试如何区分用例集合
业务增长自然而然带来的是流程的复杂度提升和业务场景的多样性,同时用户体验和线上的小问题影响范围,也会扩大。因此在测试case的覆盖率上,覆盖的颗粒度会更细致。
自动化测试如何区分用例集合
|
测试技术 数据安全/隐私保护
测试用例具体的设计方法
测试用例具体的设计方法
87 0
测试用例具体的设计方法