当前位置:   article > 正文

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

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

本文发表于 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/948860
推荐阅读
相关标签
  

闽ICP备14008679号