组合测试方法:配对测试实践

背景

缺陷往往是由一个参数或两个参数的组合所导致的,那么我们选择比较好的测试组合的原则就是

1)每个因子的水平值都能被测试到

2)任意两个因子的各个水平值组合都能被测试到

基于上述考虑,本次采用配对测试法进行条件组合,如果完全覆盖四个因子的所有参数配置,则需要进行笛卡尔积运算:3*2*2*4=48,共48测试用例。使用工具后仅12条即可

对于多输入参数组合类的测试方法目前业界流行两种方法,一种是OATS(Orthogonal Array Testing Strategy),即正交表法;另一种是Pairwise/All-Pairs Testing,即配对测试法,

正交表是为正交试验服务的,它要求对任意两个因素的取值组合实施“等概率”覆盖,以便实验样本“均匀”地分布在样本空间。“等概率覆盖”有助于在正交试验中确定各个因素对实验结果的影响,其目的不是:提高错误检测能力。

组合测试(Combinatorial Test)是一种测试用例生成方法。它将被测试应用抽象为一个受到多个因素影响的系统,其中每个因素的取值是离散且有限的。两因素(Pairwise)组合测试生成一组测试用例集,可以覆盖任意两个因素的所有取值组合,在理论上可以暴露所有由两个因素共同作用而引发的缺陷,配对测试法,就是组合测试的一种

组合测试简介

组合测试(Combinatorial Test)是一种测试用例生成方法。它是将被测系统抽象出来的变量的取值进行组合并生成一组测试用例的过程,它将被测试应用抽象为一个受到多个因素影响的系统,其中每个因素的取值是离散且有限的。多因素(N- way,N>2)组合测试可以覆盖任意N个因素的所有取值组合,在理论上可以发现由N个因素共同作用引发的缺陷。

配对测试(pairwise)它可以根据你设定的条件,自动生成在测试效率和测试覆盖率之间做出平衡的组合,由于两因素组合 测试在测试用例个数和错误检测能力上达到了较好的平衡,它是目前主流的组合测试方法。

pairwise算法

       Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的。他是美国的一位心理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。

Pairwise基于如下2个假设:

(1)每一个维度都是正交的,即每一个维度互相都没有交集。

(2)根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷是由3个因子相互作用产生的。因此,pairwise基于覆盖所有2因子的交互作用产生的用例集合性价比最高而产生的。

那么我们选择比较好的测试组合的原则就是:

  • 每个因子的水平值都能被测试到;
  • 任意两个因子的各个水平值组合都能被测试到,这就叫配对测试法。

PICT(推荐)

PICT工具介绍

PICT的全称是Pairwise Independent Combinatorial Testing tool,它会根据输入而自动给出推荐的测试组合,提高测试效率。是一款免费软件:PICT下载地址。安装以后,有详细的帮助文件PICTHelp.htm。

PICT生成测试用例步骤

1、确认模型文件(Model File)

在txt文件中,确认所有影响因子及各因子的可配置值,如下:

注意:冒 前是因素名,后面是可取值,冒 和逗 均使用英文标点

2、运行PICT工具生成用例

在命令行上运行”pict.exe picta.txt > pictb.xls”所生成的文件pictb.xls是两因素组合测试用例集,其内容如下:

升级类型

设备数据

是否强制升级

客户端环境

关机

保存

重启

关机

不保存

断电

立即

不保存

断电

立即

保存

重启

关机

不保存

立即

保存

关机

推迟

保存

关机

不保存

关机

推迟

不保存

关机

推迟

保存

断电

立即

不保存

推迟

不保存

重启

可见,使用PICT生成组合测试用例非常方便,测试者可以轻松地理解并修改,测试工具可以方便地解析并运行,另外,也可以定义输出的文件为其他格式文件,如:txt文件、word文件。

3、结合实际场景对用例进行分析修正

根据实际模块进行分析

PICT的其他高级应用

1、PICT参数介绍

在cmd中输入pict后,会弹出参数界面,如下:

2、定义模型文件中各因素的约束关系

在组合测试的基础理论中,各个因素的取值是相互独立的,即因素A的取值不会影响因素B的取值。但是,大多数被测试应用的因素之间存在约束关系。

以上述升级测试为例,当因素【升级类型】的取值是【立即】时,因素【客户端环境】不可能取值【关机】、【重启】,因为选择立即升级后,就开始升级了,用户不可能手动去进行关机和重启操作

如果不考虑约束关系,可以在生成用例后,删除无效的用例即可,但是这样会导致最终的测试用例集不能实现两因素或多因素组合覆盖,如上的例子:

升级类型

设备数据

是否强制升级

客户端环境

关机

保存

重启

关机

不保存

断电

立即

不保存

断电

立即

保存

重启

关机

不保存

立即

保存

关机

推迟

保存

关机

不保存

关机

推迟

不保存

关机

推迟

保存

断电

立即

不保存

推迟

不保存

重启

假如直接在用例中删除上述两个不可能的组合,则:关机与保存没有覆盖,是不合理的,所以最好在生成测试用例时由工具来过滤。

在PICT的模型文件中,加入如下的约束(Contraint)语句,就可以定义出因素之间的约束关系。

修改后的模型文件如下:

根据修改后的模型文件,生成的测试用例如下:

升级类型

设备数据

是否强制升级

客户端环境

推迟

保存

关机

不保存

立即

不保存

断电

推迟

不保存

关机

立即

保存

关机

保存

重启

推迟

不保存

重启

关机

保存

关机

关机

保存

断电

推迟

不保存

断电

可以看出上述的关机与保存没有覆盖的问题,在新的用例里已经解决了。

3、多因素组合测试

前面pairwise算法中有介绍了:根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷是由3个因子相互作用产生的。也就是说:按照配对测试法,有27%的缺陷会被遗漏。

而且在全覆盖与效率之间的取舍,也要根据所测对象来判断,如果测试的是医疗设备,那么更应该保证全覆盖,而不是考虑效率。

接下来介绍如何PICT,生成多因素组合用例,有两种方法

方法一:命令行增加参数

在命令行上使用参数”/o:N”。例如,在命令行上执行”pict.exe picta.txt /o:3″,就可以生成三因素组合测试用例集。

方法二:定义子模型

在PICT的帮助文件中有如下的模型文件定义。

根据该模型文件,PICT将对PLATFORM, CPUS, RAM, HDD实施3因素组合覆盖,具体的生成策略可参加下图。PICT在两因素组合覆盖的基础上,对某些因素实施多因素组合覆盖,这有助于实现更灵活的测试策略。

allpair

工具介绍

为了让业界测试人员更能方便的使用全对偶测试法产生的组合测试的测试用例,James Bach使用Perl语言开发了一个allpairs工具:allpairs下载地址

Allpair生成测试用例步骤

1、确认模型文件(Model File)

输入模型文件,该文件与PICT格式不一致,可以先输入到Exce里,再选择而文件——另存为txt文件即可。

升级类型

设备数据

是否强制升级

客户端环境

立即

保存

关机

关机

不保存

重启

推迟

   

断电

     

2、运行allpairs工具生成用例

直接将 allpairs 工具下载并解压到某个路径,在 Dos 窗口下运行命令。切换到工具所在路径,输入 allpairs.exe model.txt >TestCase.txt 或者 allpairs a.txt > TestCase.txt 并回车,其中model.txt为模型文件,TestCase.xls为生成的测试用例,可以自定义。

输出的testcase文件包括两部分:

第一部分是测试用例的集合,【pairrings】列说明的是全对偶方法找到的唯一pairrings的数量;

第二部分列出了全组合的所有pair,且显示了这个pair在测试用例列表中出现的次数,及所对应的测试用例的用例 。

3、结合实际场景对用例进行分析修正

根据实际模块进行分析

参考资料

官 :http://www.pairwise.org/

常用的Pairwise工具集:http://www.pairwise.org/tools.asp

深入浅出Pairwise 算法:http://m.blog.csdn.net/blog/aassddff261/42776543

组合测试法中的全对偶测试法:http://www.infoq.com/cn/news/2011/08/combination-test/

实施组合测试:http://www.cnblogs.com/liangshi/archive/2010/07/25/1784666.html

页详细解释了种子(seeding): http://www.amibugshare.com/pict/help.html

且提供了一个种子文件下载:http://www.amibugshare.com/pict/PICT_Seed_template.txt

什么是卫哨语句p>

条件表达式中,2条分支都是正常行为,就应该使用形如if…..else…..的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫哨语句”。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成32279 人正在系统学习中 相关资源:哨兵软件测试SAS/SATA硬盘软件_hbasas-Web服务器工具类资源-CSDN…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年11月6日
下一篇 2015年11月6日

相关推荐