赞
踩
本文发表于 ISSTA 2017
原文PDF下载
一种通过规范化减少语义复杂性从而简化用例集的方法
软件测试中经常会编写大量冗余的用例,主要是因为:
本文提出了一种规范化和泛化方法,其目的是找出一个函数f(t)
,其中t
为测试用例
t
导致失败,则f(t)
失败t
和t'
是由于相同故障导致的失效,则f(t)=f(t')
t
和t'
是由于不同故障导致的失效,则f(t)≠f(t')
这样我们就能实现每个潜在故障都由单个测试唯一表示
但是这个函数实际上很难(精确的)实现,如果能(精确的)实现,则几乎能够实现故障自动定位和修复(软件测试领域的另一重大目标)
因此,本文的目标是通过提供一组简单的转换来接近目标:
f
将许多测试更改为同一测试f
将两个因不同原因失败的测试更改为相同测试的概率很低f
的计算成本并不高Figure 1
是一个例子,三个看上去不同测试用例,实际上是由于同一个错误导致的失败。本文的目的就是减少这样冗余的测试用例,使得可以简化为一个用例最终可以形成一个规范化且带有可读注释的用例
为此,本文引入了称之为TSTL的工具包,其中包含一种DSL(文中称之为TSTL harness )
随后定义了重写的规则和规范化的算法,重写可以减少步骤数量,使得整个过程是收敛的。
本文是基于 delta-debugging
背后的思想实现
其中测试步骤顺序无关化相关方法可参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。