正交测试用例工具

                                                                          正交测试工具调研

 

         目录

一、ALLPairs使用教程

1. 简单应用

二、PICT 使用教程

1. 基本使用

2. 高级特性


一、ALLPairs使用教程

1. 简单应用

用一个最简单的例子组合测试,如果人工组合可能漏写或者多写,如果组合少的话人工不会出错,但是组合多的话容易出错,此工具可以节省不少时间,当然也不能太依赖工具,也不是总好用的。测试示例如下

账户名    密码         按钮

错误         超短         确定

超长         错误         取消

正常         超长        

             正常                  

1.1 操作说明

1)打开一个excel写下上面的例子

 

2)新建一个文本文档,复制excle中的例子到txt文件中。不要对此文本改动。

 

3)进入cmd命令框,调用allpairs工具生成数据

              pairs_start.bat pairs-test.txt pairs-out.txt (pairs-out.txt是用来存放生成的组合用例,可以自动生成,不必提前建好,批处理脚本用来指向工具安装路劲),然后按回车。

4)在你的文件夹里就会生成一个pairs-out.txt 文件,有的话完成。

 

二、PICT 使用教程

1. 基本使用

1.1 数据准备

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

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

账户名:错误,超长,正常

密码:超短,错误,超长,正常

按钮:确定,取消

1.2 运行

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

C:\ mytest> pict PictTest.txt

输出重定向:

C:\ mytest> pict PictTest.txt> PictOut.txt

执行结果如下图:

 

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

C:\ mytest> pict PictTest.txt> PictOut.xls

C:\ mytest> PictOut.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. 参数定义
  2. 子模型定义
  3. 约束定义

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

1) 子模型

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

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

 

2. 示例

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

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

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

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

模型执行过程如下图:

 

注意:

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

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

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

2.3 约束

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

  1. 语法

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

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

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

例:参数文档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指定文件位置:

D:\software\PICT\pict testcase.txt>sap.txt  /e:seedrows.txt

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

例:增加种子文件:

A1    A2    A3    A4    A5

c       200           500  150

a       200  aaa  m100       300

c       200  ccc   m300       150

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

注意:

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

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

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

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

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

1 空白的参数和值名称。

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

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

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

 

参考文献:

https://blog.csdn.net/poetic_vienna/article/details/78772542

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值