概念
PICT (The Pairwise Independent CombinatorialTesting tool)为一款微软公司出品的命令行用例生成工具,生成的测试集可以覆盖任意N个变量的取值组合。基于组合测试的理论,该测试用例集可以发现N个因素共同作用引发的缺陷。
PICT组合测试工具采用one-test-at-a-time策略,即对矩阵进行逐行扩展时,每次只增加一行且要求这一行能够覆盖未覆盖的t元组,直到所有的t元组都被覆盖,使用PICT组合测试工具可以在不降低测试覆盖率的情况下产生更少的测试用例,比人工手动生成更加高效。
PICT接受纯文本模式的文件作为输入,输入文件中包括参数类别、取值集与约束关系,输出是一个用来组成组合覆盖测试用例的矩阵,每一行表示一个测试用例,每一列代表系统的一个参数,每一项代表测试用例对应的参数取值。PICT可帮助测试人员产生比手动生成更高效的测试用例。
测试人员在这个纯文本模型文件中指定测试参数和测试参数值,然后按照指定的覆盖标准自动产生测试用例,该工具默认自动产生符合两个参数完全组合的输入数据集,当设置多参数的完全组合覆盖标准时,需要考虑测试成本升高的问题。
PICT组成
PICT组合测试工具的输入模型文件一般由参数定义部分、子模型定义部分以及约束定义部分组成。参数定义部分是必须填写的,子模型定义和约束定义部分不是必选的,取决于具体情况,模型文件的三个部分如下所示:
(1)参数定义部分:作为输入模型文件的基础部分,此部分注明了参数以及参数的取值,其格式为<paramName>: <Value1>, <Value2>, <Value3>.....
(2)子模型定义部分:子模型可将参数分组,每组可使用不同的覆盖标准。子模型定义部分格式为{<paramnamel>,<paramname2>...]@ <order>。
(3)约束定义部分:参数约束部分是指通过IF ...THEN...条件语句来具体实现参数之间约束关系的,并配合使用比较运算符,逻辑运算符和匹配运算符使参数之间的约束关系简明易懂。
实现原理
组合测试(combinatorial testing)是一种测试用例生成方法,其对传统测试用例方法进行了综合。主要用于黑盒测试。
组合测试理论可由一个数学模型和一个假设表示:
数学模型:被测对象被抽象为函数,影响被测对象的变量作为函数
的输入,其取值构成有限的变量集合
,输出为函数的返回值,构成变量集合
。
假设:如果测试覆盖了任意个(2≤
≤n)输入变量的取值组合,那么该测试用例集理论上可以发现所有
个变量共同作用引发的函数
的缺陷。
组合测试方法包括多变量组合方法和两变量组合方法。多变量组合方法的覆盖率更好,但占用的测试资源多。两变量组合方法理论上可以暴露所有由两个变量共同作用而引发的缺陷,占用的测试资源少。
PICT默认使用两变量组合方法,生成的测试集可以覆盖任意两个变量的取值组合。并且由于组合测试的数学模型没有描述变量之间的约束关系,生成的用例集存在一定的冗余,利用PICT可通过添加输入的约束条件来进行改进。
PICT使用方法
使用PICT进行用例设计的步骤包括:
(1)参数建模。通过分析被测对象,抽象出待生成变量的类型和取值,使用等价类方法将有限的取值代替无限的取值域。然后使用文本编辑器创建一个模型文件,在该文件中分行详细列出变量类型、取值、变量间的约束条件。
(2)将模型文件放入PICT安装程序路径,在命令行程序中运行PICT,并设定输出结果格式,将输出矩阵导出至指定文件中。
(3)打开输出文件,查看用例设计结果。PICT生成一组简洁的参数值选项,用来组合覆盖测试用例。
在整理好 PICT工具的输入模型文件后,借助PICT命令行可以在很短的时间内将生成测试用例组合数据保存到指定的文本文件或表格文件中。具体操作是在 PICT安装目录下创建纯文本模型文件 test.txt文件,然后进入命令行窗口输入pict test.txt产生测试用例,最后输入命令: pict test.txt>test.xls 将产生的结果测试用例保存在 excel文件中方便查看使用。
利用 PICT 工具可以显著提高用例设计和生成的效率,节省测试资源。但 PICT为追求测试效率而牺牲了部分覆盖率的要求,可能会错过特定的一些取值组合。