论文
关于使用 LLM 生成的测试进行回归测试的风险
On the Risks of using LLM-Generated Tests for Regression Testing
摘要
软件不断发展:开发人员不断添加功能、修复错误和重构代码,任何这些更改都可能会破坏现有功能。回归测试通过捕获测试用例中的预期行为来防止此类影响。基于 LLM 的测试生成旨在通过直接从被测代码生成回归测试来自动化此过程。当实现正确时,这是有益的,但当代码包含错误时,这是有问题的:生成的测试可能会编码并保留不正确的行为。为了调查这种风险,我们应用基于 LLM 的回归测试生成来将请求合并到软件项目的主分支中,并研究生成的测试对后续项目演变的影响。我们区分错误揭示测试和错误执行测试,前者断言正确实现的行为,后者断言错误行为。在来自 SciPy、Qiskit 和 pandas 的 145 个拉取请求中,生成的测试中有 8%-17% 是错误执行的,而只有 2.4%-4.8% 揭示了错误。错误执行测试会随着时间的推移持续存在: 经过几次后续提交后,其中 83%-91% 仍然相关并通过。它们还会累积:当所有拉取请求的错误合并到一个代码库中时,83%-92% 在提交历史记录结束时仍然强制执行,而开发人员编写的测试套件仅检测到其中的 14%-30%。我们的结果揭示了 LLM 生成的回归测试的基本风险:如果没有手动验证,它们可能会将错误行为编码为预期行为,从而使错误在软件修订中持续存在,并在很大程度上逃避开发人员维护的测试套件。因此,基于LLM的回归测试可能会产生一种新形式的技术债务。