论文
代理拉取请求的测试覆盖率分析
Test Coverage Analysis of Agentic Pull Requests
摘要
AI 编码智能体 越来越多地以最少的人为干预提交完整的拉取请求 (PR),将软件开发从人工智能辅助转向自主工作流程。随着这些代理变得越来越流行,确保它们生成的代码通过现有测试或代理编写的测试进行充分测试对于防止回归至关重要,但人们对代理 PR 中的测试知之甚少。为了解决这一差距,我们分析了 AIDev 数据集中由 5 个 编码智能体 生成的 4882 个代理生成的 PR(532 个 Java 和 4350 个 Python PR)。我们研究(i)代理包含测试更改的频率以及(ii)现有测试和代理编写的测试覆盖代码更改的程度。代理仅在更改测试文件下代码的 PR 中包含 49.6% 的测试更改。现有的测试提供了一个不完整的安全网:它们覆盖了 Java 中代理更改的可执行行的 61.5%,而 Python 中仅覆盖了 27.0%,其中 64.8% 的 PR 没有任何现有测试执行的更改行。代理编写的测试提高了现有测试的覆盖率,但仅在少数 PR 中:35.9% 的 Java 和 22.5% 的 Python 代码 + 测试 PR 显示了覆盖率提高。在这两种语言中,错误处理结构(例如 try 和 catch 块)是最缺乏测试的,Java 中的错误率达到 86.0%,Python 中的错误率达到 81.0%。这些发现激发了覆盖感知开发实践、编码智能体 的覆盖反馈循环以及衡量测试质量的评估基准,以更好地帮助代理可靠地测试自己的代码。