实施组合测试

发表于:2010-7-29 13:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:liangshi(cnblogs)    来源:51Testing软件测试网采编

  组合测试(Combinatorial Test)是一种测试用例生成方法。它将被测试应用抽象为一个受到多个因素影响的系统,其中每个因素的取值是离散且有限的。两因素(Pairwise)组合测试生成一组测试用例集,可以覆盖任意两个因素的所有取值组合,在理论上可以暴露所有由两个因素共同作用而引发的缺陷。多因素(N- way,N>2)组合测试可以生成测试用例集,以覆盖任意N个因素的所有取值组合,在理论上可以发现由N个因素共同作用引发的缺陷。由于两因素组合测试在测试用例个数和错误检测能力上达到了较好的平衡,它是目前主流的组合测试方法。

  本文总结了我在组合测试实践中获得的一些经验。权当是抛砖引玉,希望读者不吝赐教。

  1. 不要使用正交表,要使用PICT

  有一些文章介绍了利用正交表构造组合测试用例集的方法。虽然可行,但是正交表并不是理想的组合测试工具。

  首先,正交表的性质并不适用于软件测试。正交表是为正交试验服务的,它求对任意两个因素的取值组合实施“等概率”覆盖,以便实验样本“均匀”地分布在样本空间。“等概率覆盖”有助于在正交试验中确定各个因素对实验结果的贡献,但是对于组合测试提高错误检测能力并没有帮助。受到“等概率覆盖”的约束,正交表往比“覆盖即可”的组合测试工具生成更多的测试用例,提高了测试成本。

  第二,利用正交表构造组合测试用例并不方便。使用正交表构造测试用例,要寻找正确的正交表、对其进行剪裁、替换参数,方能获得测试用例集。如果使用微软提供的组合测试工具PICT,生成测试用例会非常简单。第一步,在文本文件中描述被测试应用的模型(Model),即该软件有哪些因素、每个因素有哪些取值。该文本文件被称为模型文件(Model File)。下面的文本是一个为配置测试所准备的模型文件。其中,以"#"开始句子是注释,正文部分每一行代表一个因素,":"之前是因素名,之后是因素的可能取值。

#
# Different machine configurations
#
PLATFORM: x86, ia64, amd64
CPUS:     Single, Dual, Quad
RAM:      128MB, 1GB, 4GB, 64GB
HDD:      SCSI, IDE
OS:       NT4, Win2K, WinXP, Win2K3
IE:       4.0, 5.0, 5.5, 6.0

  第二步,在命令行上运行"pict.exe model.txt > test_cases.txt"。所生成的文件test_cases.txt是两因素组合测试用例集,其内容如下。

PLATFORM    CPUS      RAM    HDD    OS       IE
amd64     Single      4GB    SCSI   Win2K    4.0
amd64       Dual    128MB    IDE    Win2K3   6.0
x86         Quad     64GB    SCSI   Win2K3   5.0
...

  可见,使用PICT生成组合测试用例非常方便。输入文件和输出文件是易读、易理解的文本文件,测试者可以轻松地理解并修改,测试工具可以方便地解析并运行。

  第三,现实世界中的程序是复杂的,它们为组合测试的实施提出了许多挑战。面对这些困难,PICT较正交表有明显的优势。下文将详细介绍组合测试面临的挑战和解决之道。

  2. 要定义因素之间的约束关系

  在组合测试的基础理论中,各个因素的取值是相互独立的,即因素A的取值不会影响因素B的取值。但是,大多数被测试应用的因素之间存在约束关系。以配置测试为例,当因素PLATFORM的取值是x86时,因素RAM的取值就不能是64GB,因为x86 CPU最大只支持4GB RAM。即便你试图将组合(PLATFORM: x86, RAM: 64GB)作为负面(negative)测试用例,也是不可行的,因为x86的主板根本插入不了64GB的内存。

  如果不考虑约束关系,组合测试用例集将包含大量的无效测试用例。这些无效的测试用例,包含一些无效的取值组合,也有可能包含一些有效的取值组合。仅仅删除无效测试用例,会导致最终的测试用例集不能实现两因素或多因素组合覆盖。面对因素之间存在约束关系的被测试应用,应该明确定义约束关系,让组合测试工具根据约束来生成有效的测试用例集。

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

IF [PLATFORM] = "x86" THEN [RAM] <> "64GB";
IF [OS] = "Win2K3" THEN [IE] >= 6.0;
 
41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号