4. 考虑采用多因素组合测试
在软件测试过程中,最先找到的缺陷往往处于程序的“主干”上,程序执行很容易覆盖相应的语句或状态;被遗漏的缺陷常常位于程序的“末枝”,程序执行需要满足特殊条件才能覆盖相应的语句或状态。这是软件测试的经验之谈,也提示两因素组合测试也许不能发现隐藏在“末枝”中的缺陷。一些路径需要多个因素满足一定取值组合才能被覆盖,然而两因素组合测试不能保证测试用例集可以覆盖这些组合。因此,在测试资源允许的情况下,引入多因素组合覆盖有可能进一步提高错误发现率。
《微软的软件测试之道》建议从两因素组合测试开始,逐渐提高组合维度,直至6因素组合测试,因为有研究表明6因素组合测试可以发现绝大多数的程序缺陷。但是,随着组合维度的提高,测试用例数呈爆炸式增长。除非测试用例是由测试先知(Test Oracle)自动化执行,否则几乎没有团队能够完成6因素组合测试。在测试实践中,3因素组合测试可能是比较实际的选择。
在PICT中,有两种方法引入多因素组合测试。第一种方法是在命令行上使用参数"/o:N"。例如,在命令行上执行"pict.exe model.txt /o:3",就可以生成三因素组合测试用例集。另一种更加实用的方法是在模型文件中定义“子模型”(Sub-Models)。在PICT的帮助文件中有如下的模型文件定义。
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 APP: SQLServer, Exchange, Office { PLATFORM, CPUS, RAM, HDD } @ 3 { OS, IE } @ 2 |
根据该模型文件,PICT将对PLATFORM, CPUS, RAM, HDD实施3因素组合覆盖,具体的生成策略可参加下图。PICT在两因素组合覆盖的基础上,对某些因素实施多因素组合覆盖,这有助于实现更灵活的测试策略。