57、基于模型的组合测试套件过滤

基于模型的组合测试套件过滤

1. 引言

组合测试是生成大型测试套件的有效方法。基本形式的组合测试会为函数调用的每个参数确定一组相关值,然后生成这些参数值的所有组合来实例化函数调用。像 JMLUnit 就是基于这种技术的简单高效工具,它使用 JML 断言作为测试预言。

扩展形式的组合测试允许对操作序列进行测试,每个操作都关联一组相关的参数值,这样能生成更复杂的测试用例,适用于测试具有内部状态且行为依赖于先前交互的系统。Tobias 就是这样一个组合测试生成工具,它已成功应用于多个案例研究,并启发了一些新的组合测试工具。

Tobias 以测试模式作为输入,将其组合展开为大量的测试用例。不过,需要额外的预言技术来判断测试执行是否成功。过去主要使用 JML 断言的运行时评估作为测试预言,但该工具也可用于 Java/JML 之外的环境。本文采用基于模型的测试方法,先在被测系统的 UML/OCL 规范上运行测试。

组合测试容易导致组合爆炸。尽管这最初被视为这类工具的优势,因为能从测试模式生成大量测试用例,有助于系统地测试系统,但将这些测试用例转换为目标技术(如 JUnit)、编译生成的文件并执行,通常需要大量的计算资源。因此,实际中测试套件的大小通常需要限制在 10000 到 100000 个测试用例之间。

为了限制组合爆炸,有几种技术可供采用:
- 成对测试技术 :只覆盖参数值的所有对,而不是所有组合。这种技术能有效减少测试用例数量,但基于故障由两个参数组合导致的假设,可能会遗漏由三个或更多参数组合导致的故障。
- 测试套件缩减技术 :选择一个与原始测试套

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值