具有约束关系的因素如何实施组合测试

关键词:组合测试,因素具有约束关系,PICT实施组合测试

PICT的全称是Pairwise Independent Combinatorial Testing tool

本文总结了我在组合测试实践中获得的一些经验,组合测试百度一下有各种博文介绍,不过其中的例子大多是比较简单易懂的,我这里遇到的问题稍稍复杂了一些,因素之间具有约束关系,这里使用微软的工具PICT详细介绍如何定义约束关系生成有效的测试用例集。

假设场景如下:


Cleaning


Y


N


Enable Analyze


Y


N


Normal Processing


Y


N


Terminate on Error


Terminate


Keep Running


Perform Validation


Y


N


Perform Remove


Y


N


Format


Y


N


Type


Upper


Lower


Mixed

最上面一级的两个选项Cleaning, Format

当Cleaning选项开的时候,它的子选项Enable Analyze, Normal Processing, Perform Validation, Perform Remove才可以开

当Normal Processing选项为开的时候,它的子选项Terminate on Error才可以开

当Format选项开的时候,它的子选项Type才可以开

接下来,我们需要新建一个模型文件,文本文件即可

第一部分把选项及其可以取到的值列出来,以逗号分割

第二部分把约束关系列了出来

  1. 如果Cleaning选项关闭,则Enable Analyze, Normal Processing, Perform Validation, Perform Remove不能为开
  2. 如果Normal Processing选项为开,则Terminate on Error的值只能是Terminate 或者Keep Running
  3. 如果Normal Processing 选项为关,则Terminate on Error 的值只能为关
  4. 如果Format 选项开,则Type的值是Upper或Lower 或Mixed
  5. 如果Format 选项关,则Type 的值只能为关

注意:Terminate on Error 以及Type 这两个选项 事实上是没有N这个值的,我在文件中加入这两个值是为了生成的结果更准确。如果我不加入N, 并且定义约束规则为IF [Format] = "N" THEN [Type] = ""; 则PICT程序会报

Constraints Warning: Restrictive constraints. Output will not contain following values: Format: N

结果不包含Format=N的记录,读者有兴趣可以自行实验。

当PICT读取模型文件时,它会解析约束规则,并将其应用于测试用例生成过程。生成的测试用例集既满足对有效取值组合的覆盖,又不包含无效取值组合。

Pict.exe及模型文件均放在D盘根目录下,在DOS窗口下运行 pict.exe model_file.txt > testing.xls

这里没有使用参数"/o:N", 默认维度是2

打开输出文件 testing.xls 生成了14个测试用例,这些用例中不包含那些无效的取值组合。

到这里为止,工作其实还没有结束,我们还需要根据实际业务场景进一步审查及筛选,还有一些特殊场景不能漏掉,比如全默认选项。全开,全关上述用例已包含。

关于维度以及PICT的其它功能, 参考PICT 3.3 User’s Guide

Pairwise and Higher-Order Generation

By default, PICT generates a pairwise, or order two, suite of test cases–all pairs covered. You can set the order to a value larger than two using the option /o:. For example, if you specify /o:3, the resultant test cases will cover all triplets of values,  producing a larger number of tests than the pairwise option, but potentially giving the test suite more coverage. The maximum order for a simple model is equal to the number of parameters, which will result in an exhaustive, all possible combinations, test suite. Following the same principle, specifying /o:1 will produce a test suite that covers all values only once (combinations of 1).

《微软的软件测试之道》建议从两因素组合测试开始,逐渐提高组合维度,直至6因素组合测试,因为有研究表明6因素组合测试可以发现绝大多数的程序缺陷。但是,随着组合维度的提高,测试用例数呈爆炸式增长。

PICT下载地址:http://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd-8c6f76cc014b/pict33.msi

关于组合测试还有其它工具可以参照,例如

James Bach使用Perl语言开发了一个allpairs工具用于全对偶测试,本工具的下载地址:http://www.satisfice.com/tools/pairs.zip

美国Telcordia 技术公司有一个基于web的工具,它产生的结果集要优于全对偶测试(All Pairs)得到的结果集。例如,存在40个参数且都有3个值的情况,这个工具可以使用21个测试用例来覆盖所有的pairs。全对偶测试(All Pairs) 则需要29个测试用例才能达到同样的效果,但是这个工具是收费的,相比较免费的全对偶测试 (All Pairs) ,测试人员可以自己做出选择。

时间: 2024-10-10 22:01:36

具有约束关系的因素如何实施组合测试的相关文章

UML类关系:依赖,关联,聚合和组合

UML图示例:(可使用StartUML来画图,小巧^_^) http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体.如电脑和鼠标,就可以用一下图形表示: 组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在.组合关系的“部分”,是不能在整体之间进行共享的.如人和眼睛的关系:不过,如果你要说,眼睛可以移植,是

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务.一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法). 3) 类的属性即类的数据职责,类的操作即类的行为职责 一.依赖关系(Dependence) 依赖关系(Dependence):假设A类的变化引起了B类的变

linux下Bash编程组合测试及编写脚本(五)

linux下Bash编程组合测试及编写综合脚本(五) 1.Bash编程组合测试条件 -a: 与关系 -o: 或关系 !: 非关系 表示方法1:[ $# -gt 100 -a $# -le 500 ] 表示方法2:[ $# -gt 100 ] && [ $# -le 500 ] 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是--add:,将添加用户; 如果选项是--del,将删除用户,如果是--help显示帮助信息 2.2:脚本选项后面的参数可任意指定多个用户并且用

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**RobotFramework 1.**工具介绍:Robotframework在测试中作为组织测试用例和BDD关键字的平台,主要使用RIDE进行管理,它不是一个工具,而仅仅是一个框架,使用Python进行开发,同时支持WEB测试(Selenium).Java GUI 测试,启动线程.终端.SSH等.支持BDD

软件测试(二)PICT的使用 组合测试方法(两两组合测试,可遍历组合测试)

一.两两组合测试 # # 两两组合测试 # PLATFORH: x86, ia64, amd64 CPUS: Single, Dual, QUad PAHL: 120MB, 1GB, 4GB, 64GB HDD: SCSI, IDE OS: NT4, Win2k, Winxp, Win2k3 IE: 4.0, 5.0, 5.5, 6.0 (如图输入) 得到结果(两两组合的结果): PLATFORH CPUS PAHL HDD OS IE amd64 Single 4GB SCSI Win2k 4

junit4 组合测试

有时,我们可能需要将几个测试类组合在一起执行,或将几个测试类的某几个测试方法组合在一起执行.当然在实际的应用中还是用的比较少,我们可以很方便的使用maven来跑测试用例:这里纯属技术探讨. 测试类ATest.java import org.junit.Test; import org.junit.experimental.categories.Category; public class ATest { @Test @Category(FastTest.class) // @Category 放

hdu 4497 GCD and LCM 质因素分解+排列组合or容斥原理

//昨天把一个i写成1了 然后挂了一下午 首先进行质因数分解g=a1^b1+a2^b2...... l=a1^b1'+a2^b2'.......,然后判断两种不可行情况:1,g的分解式中有l的分解式中没有的质因子 2,存在bi>bi',然后剩下的都是可行解,对于每一个质因子三个数中有两个分别bi,bi',第三个的取值可为[bi,bi'],所以对于每一个质因子共有6(bi-bi')种取法(A(2,3)*(b-a+1)+C(2,3)*2分别为取得值在和不在边界上的情况,特殊:如果bi=bi'就只有一

脚本之条件组合测试

#!/bin/bash # if [ $# -lt 1 ];then         echo "Aadminuser ARG ..."         exit 8 fi if [ $1 == "add" ];then    for I in {1..10};do        if id user$I &> /dev/null; then           echo " user user$I exist"         e

Linux-条件组合测试

if [ $1 == '-add' ] ;then for i in `echo $2 | sed 's/,/ /g'`;do if  id $i &> /dev/null;then echo "user exists." else useradd $i echo $i | passwd --stdin $i &> /dev/null echo "useradd...$i" fi done elif [ $1 == '-del' ];th