中文

针对真实故障Java程序错误传播失败的实证研究

软件工程 2020-11-24 v1

摘要

在测试过程中,开发者可以将断言(oracle)放置在方法外部或内部。给定一个错误的执行状态(即与预期状态不同的状态),如果断言放置于无法访问错误程序状态或程序状态已不再被破坏的程序点,则可能无法暴露该故障。在此情况下,该断言遭受错误传播失败。我们进行了一项实证研究,在Defects4J(具有真实故障的Java程序参考基准)上测量错误传播失败,考虑了所有6个可用项目(386个真实缺陷和459个已修复方法)。我们的结果表明,在单元测试级别进行测试时,错误传播失败的普遍程度可忽略不计。然而,当提供系统级输入时,错误传播失败的普遍程度显著增加。这表明方法的后置条件仅需对外部可观察状态/数据进行断言,而在系统级测试时应检查中间步骤。

关键词

引用

@article{arxiv.2011.10787,
  title  = {An Empirical Study on Failed Error Propagation in Java Programs with Real Faults},
  author = {Gunel Jahangirova and David Clark and Mark Harman and Paolo Tonella},
  journal= {arXiv preprint arXiv:2011.10787},
  year   = {2020}
}