我们能信任测试来自动化依赖更新吗?一项针对 Java 项目的案例研究
软件工程
2021-09-27 v1
摘要
开发人员正越来越多地使用 Dependabot 等服务来自动化依赖更新。然而,近期研究表明,开发人员认为此类服务不可靠,因为它们严重依赖测试覆盖率来检测更新中的冲突。为理解对依赖项进行调用的测试的普遍程度,我们计算了 521 个经过充分测试的 Java 项目中直接与非直接依赖使用的测试覆盖率。我们发现测试仅覆盖了 58% 的直接依赖调用和 20% 的传递依赖调用。通过在 262 个项目中创建覆盖所有依赖使用、含简单故障的 1,122,420 个人工更新,我们衡量了测试套件检测依赖项中语义故障的有效性;我们发现测试平均仅能检测到 47% 的直接和 35% 的间接人工故障。为提高可靠性,我们研究了将变更影响分析用作减少假阴性的手段;平均而言,我们的工具能揭示直接依赖中 74% 的注入故障和传递依赖中 64% 的注入故障,几乎是测试套件的两倍。随后我们将该工具应用于 22 个真实世界的依赖更新,其识别出三个语义冲突案例和五个未使用依赖案例。我们的发现表明,静态与动态分析的结合应成为未来依赖更新系统的必要条件。
引用
@article{arxiv.2109.11921,
title = {Can We Trust Tests To Automate Dependency Updates? A Case Study of Java Projects},
author = {Joseph Hejderup and Georgios Gousios},
journal= {arXiv preprint arXiv:2109.11921},
year = {2021}
}
备注
15 pages, 5 figures, journal