One Test to Rule Them All-一种通过规范化减少语义复杂性从而简化用例集的方法

本文介绍了一种通过规范化和泛化减少软件测试用例冗余的方法,利用TSTL工具包和DSL,旨在将多个测试转化为单一测试,降低故障识别复杂性。研究基于delta-debugging思想,有助于简化测试用例并提高效率。
摘要由CSDN通过智能技术生成

本文发表于 ISSTA 2017
原文PDF下载

简要

一种通过规范化减少语义复杂性从而简化用例集的方法

背景

软件测试中经常会编写大量冗余的用例,主要是因为:

  1. 难以准确识别和区分不同的故障
  2. 测试用例中可能存在大量的冗余信息(不同操作序列语义上可能是相同的)
  3. 无法区分测试用例中的数值是无关紧要的随机数,还是关键的输入值
    同时,对于复杂的软件系统,测试用例的长度可能很长,导致测试过程变得耗时且不可行.

论文内容

本文提出了一种规范化和泛化方法,其目的是找出一个函数f(t),其中t为测试用例

  • 如果t导致失败,则f(t)失败
  • 如果tt'是由于相同故障导致的失效,则f(t)=f(t')
  • 如果tt'是由于不同故障导致的失效,则f(t)≠f(t')

这样我们就能实现每个潜在故障都由单个测试唯一表示
但是这个函数实际上很难(精确的)实现,如果能(精确的)实现,则几乎能够实现故障自动定位和修复(软件测试领域的另一重大目标)

因此,本文的目标是通过提供一组简单的转换来接近目标:

  1. f将许多测试更改为同一测试
  2. f将两个因不同原因失败的测试更改为相同测试的概率很低
  3. f的计算成本并不高

Figure 1是一个例子,三个看上去不同测试用例,实际上是由于同一个错误导致的失败。本文的目的就是减少这样冗余的测试用例,使得可以简化为一个用例
在这里插入图片描述

最终可以形成一个规范化带有可读注释的用例
在这里插入图片描述


为此,本文引入了称之为TSTL的工具包,其中包含一种DSL(文中称之为TSTL harness )
在这里插入图片描述


随后定义了重写的规则和规范化的算法,重写可以减少步骤数量,使得整个过程是收敛的。

在这里插入图片描述

拓展知识点

本文是基于 delta-debugging背后的思想实现
其中测试步骤顺序无关化相关方法可参考:

  • J. Andrews, Y. R. Zhang, and A. Groce. Comparing automated unit testing
    strategies. Technical Report 736, Department of Computer Science, University
    of Western Ontario, December 2010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值