PICT是微软的一个免费测试工具,可以生成成对的组合。pairwise是指当输入条件过多,覆盖样例太大时,为了有效的、合理的减少输入条件的组合数,pairwise能够简化问题大大减少组合数。

1. 简单使用

使用PICT生成正交测试用例,首先需要准备一个模型文件,例如,如果您希望为分区和卷创建创建一组测试用例,则可以使用以下参数来描述该域:类型,大小,文件系统,格式化方法,群集大小和压缩

模型文件myfolder.txt内容如下(标点符号均为英文):

类型:主要,逻辑,单个,跨度,条纹,镜像,RAID-5

尺寸:10,100,500,1000,5000,10000,40000

格式化方法:快,慢

文件系统:FAT,FAT32,NTFS

簇大小:512,1024,2048,4096,8192,16384,32768,65536

压缩:打开,关闭

将该文件放到PICT目录下,在cmd命令行下即可生成相关测试用例:

C:\ YourFolder> pict ModelFile.txt

输出重定向:

C:\ YourFolder> pict ModelFile.txt> OutputFile.txt

也可以将输出文件导入Excel,在Excel中打开它:

C:\ YourFolder> pict ModelFile.txt> OutputFile.xls

C:\ YourFolder> OutputFile.xls

2. 高级特性

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.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选项指定的订单

2.3 约束

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

【语法】

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

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

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

[Size] < 10000

[Compression] = "OFF"

[File system] like "FAT*"

参数之间也可以进行比较:

#机器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或500

IF [A1] in {"a", "b"} THEN [A4] in {"m100", "500"};

如果A2值等于300,则A4值不等于m200

IF [A2] = 300 THEN [A4] <> "m200";

如果A1值等于a,则A2值小于等于300

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

2.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指定一个其它的前缀。

注意:

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

2.5 权重

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

File system:    FAT, FAT32, NTFS (10)

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

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

2 根据权值选择值。

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

2.6 种子

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

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

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

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

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

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

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

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

Ver    SKU    Lang   Arch

Win2K Pro    EN     x86

Win2K        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. PICT使用教程(设计测试用例工具分享)

    一.PICT简介 PICT工具就是在微软公司内部使用的一款成对组合的命令行生成工具,PICT全称(Pairwise Independent Combinatorial Testing tool),它可 ...

  3. 如何自动生成接口自动化测试用例

    这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例,也就是将API文档变更同步到测试用例,下面是流程的示例解析. 导入并关联API文档和自动化测试用例 首先是登陆Eolinker ...

  4. 实操自动生成接口自动化测试用例

    ​这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例,也就是将API文档变更同步到测试用例,下面是流程的示例解析. 导入并关联API文档和自动化测试用例 首先是登陆Eolinke ...

  5. swagger python自动化用例_自动生成robot自动化测试用例

    #!/usr/bin/env python """解析swagger接口返回值自动生成接口自动化用例 将新增的用例写入到文件末尾,已存在的用例则不重新写入"&q ...

  6. PICT 生成正交测试用例教程

    今日分享主题:如何使用 PICT 快速生成正交测试用例. PICT 简介 PICT 全称 Pairwise Independent Combinatorial Testing tool,是微软开发的一 ...

  7. PICT测试用例设计工具的介绍和使用

    一.PICT是什么❓ "PICT工具"是针对"pairwise testing"实现的测试用例设计工具.通过他,我们可以直接将"正交表"转换 ...

  8. 软件测试 前置条件是什么意思,软件测试用例生成中前置条件分析.doc

    软件测试用例生成中前置条件分析 软件测试用例生成中前置条件分析 摘 要:在实践的基础上总结了测试用例生成中的前置条件,进行了分类和参数化,并将研究结果应用于测试用例自动生成工具,生成了软件可靠性测试用 ...

  9. 使用PICT生成成对组合进行组合覆盖测试,以及PICT和正交表的比较

    目录 成对组合法 PICT 基础使用 选项 Constraint(约束条件) weight值 MPLS-TE FRR使用举例 SNMP使用举例 成对组合VS正交表 成对组合法 软件中存在很多由于条件c ...

最新文章

  1. Python 文件 close() 方法
  2. python基础知识思维导图-python基础知识思维导图1
  3. LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记
  4. 黄聪:DEDECMS系统栏目、文章页面、分页面伪静态和域名301重定向详细方法
  5. ML之监督学习算法之分类算法一 ——— 决策树算法
  6. 如何去掉ECShop 2.7.2中的Powered by ECShop字符
  7. Windows远程连接的用户名和密码怎么设置?
  8. Docker 入门尝鲜
  9. 老项目引入masonry后报错unrecognized selector sent to instance
  10. 【代码备份】ORACLE数据库表同步DBLINK
  11. cs客户端 实时权限_【CS学习笔记】7、SMBbean的作用
  12. ios uistepper_iOS UIStepper
  13. 机器学习和数据挖掘的联系与区别
  14. Error:Execution failed for task ':app:clean'. Unable to delete directory: /media/file/workspaces/a
  15. python中判断对象是否可迭代
  16. 高通msm8926 camera调试笔记
  17. 实现一个二维码支持微信和支付宝同时收付款
  18. Beautiful Soup 4 的安装与使用
  19. 如何将本地代码保存至码云中
  20. TiCDC系列分享-01-简述产生背景及使用概况

热门文章

  1. Fast R-CNN算法及具体训练步骤
  2. Xcode8更新之后模拟器找不到了
  3. JS中如何跳出.forEach循环
  4. php实现动态按钮效果,纯css实现MaterialDesign水滴动画按钮效果的js实现方法
  5. 三维数组的搜索、访问、插入、删除
  6. python中isalnum函数的用法_python isinstance、isalnum函数用法
  7. C#--DataGridView(干货版)
  8. WinCE驱动开发问题精华集锦 1
  9. 洛谷P3960 列队【Splay】
  10. pySpark与Kmeans算法实现