中文

自动移除测试套件中不必要的存根

软件工程 2024-07-31 v1

摘要

大多数现代软件系统都由大量组件构成,其相互作用会影响并复杂化测试活动。在测试期间,开发人员可通过使用测试双胞胎和存根来隔离被测试代码,以考虑这些相互作用。在测试套件演化过程中,存根可能变得不必要,开发人员应删除不必要的存根,因为其定义可能在未来的测试套件版本中引入不可靠的测试结果。不幸的是,删除不必要的存根仍是手动操作,可能复杂且耗时。为帮助开发人员完成此任务,我们提出 ARUS 技术,用于自动从测试套件中删除不必要的存根。给定软件项目及其测试套件,该技术执行测试以识别不必要的存根,然后根据存根的特性使用不同方法进行删除。我们基于 128 个 Java 项目进行了实证评估,这些项目使用 Mockito 进行存根化并包含 280 个存根定义,导致 1,529 个不必要的存根。总体而言,该技术为 276 个定义(98.6% 解决率)提供了解决方案,ARUS 的时间成本可忽略不计,平均而言,该技术的更改引入的编码复杂度增加有限。我们将 ARUS 的更改通过拉取请求提交给项目,已合并 83 个解决措施。

关键词

引用

@article{arxiv.2407.20924,
  title  = {Automatically Removing Unnecessary Stubbings from Test Suites},
  author = {Mengzhen Li and Mattia Fazzini},
  journal= {arXiv preprint arXiv:2407.20924},
  year   = {2024}
}