一、PICT简介

1、结对测试

结对测试(Pairwise Testing)这一概念是曼德尔在测试Aad编译程序时提出来的一种测试思想,它能在保证测试覆盖率的前提下控制测试用例的数量。官网 http://www.pairwise.org/ 对pairwise testing的解释是:

Pairwise (a.k.a. all-pairs) testing is an effective test case generation technique that is based on the observation that most faults are caused by interactions of at most two factors. Pairwise-generated test suites cover all combinations of two therefore are much smaller than exhaustive ones yet still very effective in finding defects.

生成pairwise testing测试用例的工具有很多,http://www.pairwise.org/tools.asp 有详细的介绍。

2、PICT工具简介

PICT全称Pairwise Independent Combinatorial Testing tool,是微软开发的一款结对测试用例生成工具,现在已经对外提供,可以在互联网上下载到。PICT 可以有效地按照两两测试的原理,进行测试用例设计。在使用PICT时,需要输入与测试用例相关的所有参数,以达到全面覆盖的效果。

二、PICT工具安装

通过官网 http://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd-8c6f76cc014b/pict33.msi 可以下载到PICT的安装包,下载安装即可。

1、双击“pict33.msi”安装程序;

2、一直点击next按钮;

3、可以给PICT设置安装路径后继续点击next;

4、点击install按钮进行安装,再点击finish完成安装;

PICT的安装程序会自动配置环境变量,因此可以在系统的任意目录中执行使用它,而不必进入pict的安装目录。(如果没有自动配置环境变量,可以进行手动配置)

三、PICT工具使用

1、简单使用

(1)使用PICT生成正交测试用例,首先需要准备一个模型文件,如下图所示的一个txt文件;

(2)文件的内容为:

PS:注意文件中的标点符号均为英文;

(3)使用cmd命令进入到test.txt文件所在的目录处;

(4)使用命令:

  • 直接在cmd中输出结果:pict test.txt
E:\pict>pict test.txt
类型    尺寸    格式化方法      文件系统        簇大小  压缩
镜像    10      快      FAT     32768   关闭
RAID-5  10      慢      FAT32   512     打开
条纹    500     快      NTFS    512     关闭
跨度    1000    慢      NTFS    1024    打开
主要    100     快      FAT32   16384   关闭
单个    1000    慢      FAT     8192    关闭
主要    5000    慢      FAT     2048    打开
RAID-5  40000   快      NTFS    8192    打开
逻辑    10      慢      NTFS    65536   打开
跨度    100     快      FAT     65536   关闭
镜像    10000   慢      FAT32   65536   打开
逻辑    1000    快      FAT32   512     关闭
逻辑    40000   慢      FAT     4096    关闭
单个    1000    快      NTFS    4096    打开
条纹    500     慢      FAT32   32768   打开
镜像    100     快      NTFS    2048    关闭
跨度    10      慢      FAT32   4096    关闭
单个    40000   快      FAT32   65536   关闭
RAID-5  5000    快      FAT     65536   关闭
条纹    1000    慢      FAT32   2048    打开
主要    10000   快      NTFS    8192    关闭
跨度    10000   慢      FAT     16384   打开
主要    1000    慢      FAT32   65536   打开
单个    5000    快      FAT32   1024    关闭
RAID-5  100     慢      FAT     1024    打开
单个    500     慢      NTFS    2048    关闭
镜像    500     快      FAT     1024    打开
条纹    100     快      FAT     4096    打开
主要    40000   快      FAT32   1024    关闭
单个    10      快      NTFS    16384   打开
逻辑    5000    慢      NTFS    32768   关闭
条纹    10      慢      FAT     1024    关闭
主要    500     慢      NTFS    4096    关闭
镜像    1000    快      FAT     16384   打开
条纹    40000   快      FAT     16384   关闭
镜像    10      慢      FAT32   8192    打开
跨度    40000   快      NTFS    32768   关闭
逻辑    10000   慢      NTFS    1024    关闭
跨度    5000    快      FAT     512     打开
逻辑    100     慢      FAT32   8192    打开
RAID-5  500     快      NTFS    16384   打开
条纹    5000    慢      NTFS    8192    关闭
镜像    5000    慢      NTFS    4096    关闭
跨度    500     快      FAT     65536   关闭
跨度    10000   慢      NTFS    2048    打开
条纹    10000   快      FAT32   65536   关闭
主要    10      快      FAT     2048    关闭
RAID-5  10000   慢      NTFS    4096    打开
主要    10000   快      NTFS    32768   打开
RAID-5  1000    快      FAT32   32768   打开
主要    10000   快      FAT     512     关闭
镜像    40000   慢      FAT32   512     打开
单个    100     慢      NTFS    512     关闭
逻辑    500     快      FAT32   16384   关闭
单个    100     慢      NTFS    32768   打开
镜像    5000    快      FAT32   16384   关闭
跨度    500     慢      FAT     8192    打开
RAID-5  40000   慢      FAT     2048    关闭
逻辑    10      快      FAT     2048    关闭
单个    10000   慢      FAT32   65536   打开
  • 输出重定向为另一个txt文件:pict test.txt>output_test.txt(返回没有报错,且在同级目录下生产output_test.txt文件)

在同级目录下生产的output_test.txt文件则为输出的测试用例;

  • 输出重定向为另一个xls文件:pict test.txt>output_test.xls(返回没有报错,且在同级目录下生产output_test.xls文件)

在同级目录下生产的output_test.xls文件则为输出的测试用例;

2、高级使用

(1)PICT命令选项和参数

  • 用法:pict 模式文件[选项]
  • 选项:

/o:N   组合数,默认值为2

默认生成二元组的测试用例,即pict生成的测试用例集中最多有两个值与其他测试集是相同的;改为3,则覆盖率会增大,但同时也会生成更多的测试用例;但缺陷大部分发生在参数两两组合的情况下,三个参数组合导致的缺陷并不多见。

/d:C   值与值之间的分隔符,默认为逗号(,)

例如一个参数操作系统  winxp,win7,win8 之间会用逗号隔开;

/a:C   别名间的分隔符,默认是管道符(|)

例如一个参数(用户名不区分大小写,但为了保证测试的可信度,可以用大小写轮换的方式进行测试)用户名  admin|ADMIN;

/n:C   无效数值或者是非法数值的前缀,默认值为(~)

例如一个参数(只能取1、2,为了测试非法值的输入,取0,但又不希望0和其他参数的每隔值都配一次对,为了减少测试集的数量,在0前面加一个~)即参数  ~0,1,2;

/e:file  定义种子文件,作用是可以指定组合方式

例如在种子文件seed.txt中指定一个组合方式,在执行1.txt时,命令:pict 1.txt /e:seed.txt  生成的测试集中会包含seed中指定的组合集(当然指定的组合集有一定条件)。(此参数目前的理解可能会有误区);

/r[:N]   随机生成,N -种子

通过/r参数,可以使每次生成的测试集不同;

/c        参数的值完全区分大小写

/s        显示模型统计数据

(2)模型文件

模型由三个部分组成:参数定义、【子模型定义】、【约束定义】

三部分顺序不可调换,不可重叠,部分之间不需要任何分隔符,允许出现空行,允许通过“#”添加注释。

1)子模型

子模型允许把参数分组,每组可使用不同的阶数。如果某些参数的组合需要更彻底地测试,或必须与模型中的其他参数分离,可以使用子模型。子模型格式:

{ < paramname1 >,< paramname2 >,< paramname3 >,…} @ <阶数>

例如有一兼容性测试,各因数及其值如下:

平台:x86,ia64,amd64
CPU:单核,双路,四核
内存:128MB,1GB,4GB,64GB
硬盘类型:SCSI,IDE
操作系统:mac,Win7,Win10,Linux
浏览器:Firefox,Google,IE8,IE10
APP:SQLServer,Exchange,Office

因为此次测试主要目的是软件在不同硬件的兼容性,所以将硬件归为一组,系统归为一组,并提高硬件的阶数(order),这样技能充分测试硬件的不同组合,又能避免每个硬件与系统的碰撞次数,避免了过多的测试用例。增加子模型后的模型如下:

平台:x86,ia64,amd64
CPU:单核,双路,四核
内存:128MB,1GB,4GB,64GB
硬盘类型:SCSI,IDE
操作系统:mac,Win7,Win10,Linux
浏览器:Firefox,Google,IE8,IE10
APP:SQLServer,Exchange,Office
{平台,CPU,内存,硬盘} @ 3
{操作系统,浏览器} @ 2

模型执行过程如下图:

注意:

1. 您可以根据需要定义多个子模型;任何参数都可以属于任何数量的子模型。模型层次结构可以只有一个深度。

2. 子模型的组合顺序不能超过其参数的个数。在上面的例子中,第一个子模型的顺序可以是1到4之间的任何值。

3. 如果您未指定子模型的订单,PICT将使用默认订单或由/ o选项指定的订单。

(3)约束

如果参数间有约束条件,可将约束条件加到模型中,约束语句以“;”结束。

语法:参数与值可以使用以下关系:=,<>,>,> =,<,<=和LIKE。LIKE是通配符匹配运算符(* -任何字符,? -一个字符)。

参数分为字符串和数字两种,只有当该参数的所有制都是数字时才认为该参数类型为数字,数字类型的参数只能与数字进行比较,字符串类型的参数只能与字符串进行比较。

字符串比较时默认不区分大小写。需要区分大小写可用/ c 选项。

#
#机器1
#
OS_1:Win2000,WinXP
SKU_1:专业服务器,数据中心,WinPowered
LANG_1:EN,DE
#
#机器2
#
OS_2:Win2000,WinXP
SKU_2:Professional,Server,Datecenter
LANG_2:EN,DE
IF [LANG_1] = [LANG_2]
THEN [OS_1] <> [OS_2] AND [SKU_1] <> [SKU_2];

运算符IN 允许指定一组满足条件的值:

IF [Cluster size] in {512, 1024, 2048} THEN [Compression] = "Off";
IF [File system] in {"FAT", "FAT32"}   THEN [Compression] = "Off";

IF,THEN 和ELSE语句可以包含由逻辑运算符NOT,AND和OR连接的多个语句。圆括号可以用来更改语句优先级:

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";

例:参数文档test.txt内容如下:

A1:a,b,c
A2:100,200,300,400,500
A3:aaa,bbb,ccc
A4:m100,m200,m300,500
A5:150,300  

1)无条件约束

A2小于200:

[A2] <200;

A3值为aaa

[A3] = "aaa";

A4取为m+任意字符的值(*代表任意字符)

[A4] like "m*";

2)条件约束

如果A1值等于a或b,则A4值等于m100或500IF [A1] in {"a", "b"} THEN [A4] in {"m100", "500"};如果A2值等于300,则A4值不等于m200IF [A2] = 300 THEN [A4] <> "m200";如果A1值等于a,则A2值小于等于300IF lA1] = "a" THEN [A2] > 300;  not与or用法  if [A1]="a" or( [A1]="a" and [A2]>300) then [A4]="m100"  If not[A1]="a" or([A1]="a" and not[A2]<=300 then [A4]="m100";A1值等于类A2值时,A3值等于ccc(类之间的约束)If [A5]=[A2]then [A3]="ccc"

(4)非法性测试

除了测试有效的组(称为“正向测试”),通常还需要使用允许范围以外的值来测试程序是否正确处理错误。每个“负向测试”测试用例应该只有一个无效值,因为大多数应用程序在检测到第一个错误时会执行一些失败的操作。出于这个原因,一个被称为输入掩蔽的问题,会发生在非法性测试中。一个无效输入阻止另一个无效输入被测试。

考虑以下函数需要两个参数:

float SumSquareRoots( float a, float b )
{if ( a < 0 ) throw error;           // [1]if ( b < 0 ) throw error;           // [2]return ( sqrt( a ) + sqrt( b ));
};

虽然函数中,a和b可以取任意值,但是只对非负数的计算是有意义的。因此,函数通过[ 1 ]和[ 2 ] 执行参数验证。现在,假设一个测试用例(A = 1,B = - 1)被用来做非法性测试。在这里,a= - 1 其实掩盖了b=-1,因为检查[ 2 ]从来没有得到执行。如果没有单独验证[ 2 ]的用例,这种错误场景将无法被测试到。
为了防止输入屏蔽,重要的是在同一测试用例中不使用两个无效值(两个不同的参数)。默认带前缀“~”的任意值都是无效的。可以通过选项/n指定一个其它的前缀。

注意:如果一个值的参数有别名,只有在第一个名称上加前缀会使值非法。

(5)权重

使用权量,可以使PICT倾向于某些取值。权重取值可以是任何正整数,默认为1。

File system:    FAT, FAT32, NTFS (10)

权重没有绝对意义,你不能确定你所指定的权重会起作用,因为PICT必须处理两个潜在矛盾的要求:

① 以最小数量的测试用例覆盖所有组合。

② 根据权值选择值。

① 总是优先于②,只有当选择值得目的不是为了满足① 时,②才会被采纳。

(6)种子

种子有以下两种可能的需求:

①指定必须出现在任意测试用例中的重要的组合。

PICT将使用提供的必选组合初始化输出,然后完成测试用例的其它部分,同时需要确保所有n阶组合都覆盖到。

②当需要修改模型时,它可以使输出的更改最小化。

你可以提供前一次结果给PICT,PICT将尽可能重用已有的测试用例。

种子行必须在单独的文件(一个种子文件)中定义。使用选项/ e指定文件位置:

pict.exe model.txt / E:seedrows.txt

种子文件和PICT的输出结果必须使用相同的格式以便可以被插入到计算出的测试用例中。使用制表符分割各参数和值,如下:

Ver    SKU    Lang   ArchWin2K Pro    EN     x86Win2K        DE     x86        WinXP Pro    EN     ia64

任何种子行都要给所有参数指定值,也可能省略某些参数的值,如上述种子文件第二行没有SKU的值。在这种情况下,PICT将选择SKU的最佳值。

注意:

1.如果一个种子文件包含一个不在当前模型中的参数,PICT将丢弃该参数所在的列。

2.如果种子行包含一个不在当前模型中的值,PICT将从种子行删除该值。PICT只会使用种子行中的有效值,一个包含了无效值的种子行将成为不完整的行。

3.如果一个种子行违反了现行的约束,PICT将忽略该行。

如果(1)或(2)发生, PICT会打印警告信息。

在PICT中使用种子时,种子文件中如果有下列格式可能会产生歧义:

1.空白的参数和值名称。

2.参数和值名称包含制表符。

3.对于一个参数,值的名称和别名不是唯一的。

如果在你的模型中存在上述问题,PICT也会打印警告信息。

PICT工具的安装与使用相关推荐

  1. PICT测试工具的安装及使用

    PICT工具就是在微软公司出品一款成对组合的命令行生成工具,现在已经对外提供,可以在互联网上下载到 PICT 可以有效地按照两两测试的原理,进行测试用例设计.在使用PICT时,需要输入与测试用例相关的 ...

  2. mysql 物理备份工具_mysql物理备份工具Xtrabackup安装配置

    mysql物理备份工具Xtrabackup安装配置 1Xtrabackup工具介绍 Xtrabackup是一个对InnoDB做物理数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具 ...

  3. Xamarin.Form的Android SDK工具下载安装

    Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. ...

  4. 虚拟机增强工具的安装

    虚拟机增强工具的安装 一.安装目的 1.实现界面平铺 2.实现虚拟机和物理机的交互 3.实现文本的粘贴复制,不过不能够直接把物理机上的文件直接拖到界面,而是要指定位置. 二.安装步骤 接着打开终端,用 ...

  5. 通过GPG非对称加密工具验证ECharts发布版本实例演示,win10下Gnu Privacy Guard工具的安装和使用方法

    GPG 验证 ECharts 发布版本实例演示 第一章:Gpg 工具的安装 ① Gpg 工具的下载 ② Gpg windows 版 Gpg4win 的安装 ③ Gpg 安装是否成功状态检测 第二章:使 ...

  6. Jupyter 工具的安装与使用方法,jupyter运行python代码演示,好用的python编辑器推荐!

    Jupyter 工具的安装与使用 第一章:环境搭建 ① Jupyter 工具的安装 ② Jupyter 服务的启动 ③ Python 代码运行演示 第二章:详细过程展示 ① Jupyter 详细安装过 ...

  7. php性能测试下载,PHP性能测试工具xhprof安装与使用方法详解

    本文实例分析了PHP性能测试工具xhprof安装与使用方法.分享给大家供大家参考,具体如下: xhprof概述: XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞 ...

  8. Xamarin.Forms教程Android SDK工具下载安装

    Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. ...

  9. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(四) -- 安装bitbucket 5.7.0

    [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(四) -- 安装bitbucket 5.7.0 安装Bitbucket的教程, 网上能找见的不多, ...

最新文章

  1. mysql intersects_mysql gis 空间数据库 根据 经纬度查找附近 (INTERSECTS,within)
  2. Java项目:(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
  3. 数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
  4. 【Flask项目2】定制统一的JSON返回格式(6)
  5. xvhfeng的工作回忆总结(第二年)阅读手记
  6. 问题集锦13:数据库升级后,程序无法连接数据库
  7. 个性艺术创意风采人物海报,psd分层模板
  8. 【开源工程】之裸码流提取工具--H264/H265
  9. android使用zxing生成二维码及带logo的二维码
  10. 使用 FME 将勘测定界坐标交换格式文本文件转换成 GIS 格式
  11. 基金定投 | 微笑曲线
  12. 峯云5G:纵论AI赋能 聚焦企业联络与协同
  13. 大都会人寿线下培训第九天-通关了
  14. 如何用echarts组件制作图表
  15. Noise2Noise摘要
  16. OpenCV学习之基本概念
  17. [附源码]Nodejs计算机毕业设计交通事故证据交易平台Express(程序+LW)
  18. html怎么设计关键字,干货分享——关键词如何做标记
  19. 纪中9日游(2019.7.5~7.13)
  20. 如何才能实现自己的梦想

热门文章

  1. SAP服务开不起来:disp+work.EXE进程绿色变黄色的解决办法
  2. Spark 之WordCount
  3. H5弹窗弹出后,页面可滚动,希望禁止滚动
  4. iPhone遇到错误53该如何快速修复?
  5. 遥感影像深度学习标注软件的开发要点
  6. python爬取今日头条_Python3网络爬虫实战-36、分析Ajax爬取今日头条街拍美图
  7. 哈夫曼(huffman)压缩算法,非常易懂
  8. MutationObserver -- 判断vue Dom渲染完成
  9. 2019.2.6C++赛 7、8待换思路
  10. 电脑重装系统Win11内核隔离无法打开怎么解决?