基于 DSpot 的测试自动改进:对十个成熟开源项目的研究
软件工程
2019-04-25 v1
摘要
在文献中,开发者手动编写的测试与自动生成的测试之间存在相当明显的分隔。在本文中,我们探索第三种解决方案:自动改进开发者编写的现有测试用例。我们提出了一个名为 DSpot 的系统的概念、设计与实现,该系统以开发者编写的测试用例(Java 中的 junit 测试)作为输入,并合成它们的改进版本作为输出。这些测试改进以补丁或拉取请求的形式返还给开发者,可直接集成到测试代码库的主分支中。我们在来自 10 个著名开源软件项目的 40 个真实单元测试类上对 DSpot 进行了深入、系统的评估。我们放大了这 40 个单元测试类中的所有测试方法。在 40 个案例中的 26 个中,DSpot 能够通过触发新行为和添加有价值的新断言来自动改进所研究的测试。接下来,对于所考虑的十个项目,我们向首席开发者提出了由 DSpot 自动合成的测试改进。总体而言,19 项 proposed 测试改进中有 13 项被开发者接受并合并到主代码库中。这表明 DSpot 能够在真实世界的大规模 Java 软件中自动改进单元测试。
引用
@article{arxiv.1811.08330,
title = {Automatic Test Improvement with DSpot: a Study with Ten Mature Open-Source Projects},
author = {Benjamin Danglot and Oscar Luis Vera-Pérez and Benoit Baudry and Martin Monperrus},
journal= {arXiv preprint arXiv:1811.08330},
year = {2019}
}