← 最新论文
💻 computer science

Can Old Tests Do New Tricks for Resolving SWE Issues?

TestPrune 是一种全自动技术,它通过策略性地精简大型回归测试套件来增强基于大语言模型的漏洞复现与补丁验证,从而在极低的 API 成本开销下显著提升 SWE-Bench 基准测试中的问题解决率。

原作者: Yang Chen, Toufique Ahmed, Reyhaneh Jabbarvand, Martin Hirzel

发布于 2026-05-12
📖 1 分钟阅读☕ 轻松阅读

原作者: Yang Chen, Toufique Ahmed, Reyhaneh Jabbarvand, Martin Hirzel

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

以下是用通俗语言和日常类比对论文《旧测试能否为新 SWE 问题提供新解法?》的解释。

核心问题:噪音太多,信号不足

想象你是一名侦探,正在一座庞大而混乱的城市(大型软件项目)中调查一起犯罪。你有一本巨大的“规则”笔记本(回归测试套件),上面写着:“如果你走在主街上,就不该被车撞。”这些规则对于确保你在进行小改动时城市不会分崩离析非常有用。

然而,当发生一桩新的、奇怪的犯罪(新漏洞)时,侦探(AI 代理)需要弄清楚究竟该在哪里以及如何修复它。问题在于,这座城市有成千上万条规则。如果你试图阅读所有规则来解决这一桩特定犯罪,你会感到不堪重负。这太耗时、太烧钱,而且侦探会被关于“主街”的规则分散注意力,而犯罪实际上发生在“榆树街”。

在软件世界中,这些“规则”就是测试。当前的 AI 工具试图通过阅读整个测试库来修复漏洞。这既缓慢又昂贵,而且常常令人困惑,因为大多数测试与手头的特定漏洞毫无关系。

解决方案:TestPrune(聪明的图书管理员)

这篇论文的作者开发了一个名为TestPrune的工具。把 TestPrune 想象成一位超级聪明的图书管理员,他确切地知道你需要哪些书来研究特定主题。

TestPrune 不会把整本图书馆交给侦探,而是查看犯罪描述(问题报告)和城市地图(代码库)。然后,它会让一个聪明的 AI(大语言模型)猜测城市的哪些部分是可疑的。一旦确定了可疑区域,它就会扫描规则库,只提取9 到 11 条真正与该特定犯罪相关的规则。

它丢弃了成千上万条无关的规则。这就像从阅读一本 10,000 页的百科全书,变成了阅读一张完美的 3 页速查表。

工作原理(“新解法”)

论文表明,这些“旧测试”(人类已编写的测试)如果你能挑选出正确的测试,它们就能施展“新解法”。TestPrune 使用两种主要策略来帮助 AI 修复漏洞:

  1. 重现犯罪现场(复现):
    在修复漏洞之前,你需要证明它的存在。AI 会尝试编写一个新的测试,该测试在损坏的代码上失败,但在修复后的代码上通过。

    • 没有 TestPrune: AI 盲目猜测,或者试图阅读太多旧规则,导致困惑。
    • 使用 TestPrune: AI 会获得覆盖损坏区域的具体“旧规则”。这为 AI 提供了更好的上下文,帮助它编写出完美的“犯罪现场重现”测试。
    • 结果: AI 在证明漏洞存在方面表现更好(提升了6.2% 到 9.0%)。
  2. 验证修复(验证):
    一旦 AI 提出修复方案,它需要确保修复没有破坏其他东西。

    • 没有 TestPrune: AI 运行成千上万个测试。如果一个测试失败,AI 可能会惊慌失措,认为修复方案不好,即使该测试与修复无关。
    • 使用 TestPrune: AI 只运行少量相关的测试。如果它们通过,修复方案很可能是好的。如果它们失败,AI 确切知道需要调整什么。
    • 结果: AI 更正确地修复了更多漏洞(提升了8.0% 到 12.9%),并且速度更快。

结果:更快、更便宜、更智能

论文在现实世界的软件项目上(使用名为SWE-Bench LiteSWE-Bench Verified的基准测试)对此进行了测试。以下是他们的发现:

  • 大幅减少: 他们将 AI 需要运行的测试数量减少了1,000 多倍。与其运行 10,000 个测试,他们只运行了大约 9 个。
  • 速度: 运行完整库大约需要24 分钟。而运行 TestPrune 列表仅需52 秒
  • 成本: 使用 TestPrune 几乎不增加额外成本。它每个漏洞修复仅增加约0.02 到 0.05 美元(使用标准 AI 模型)。
  • 成功率: 通过使用这种“智能过滤器”,AI 代理解决的漏洞数量比之前显著增加。

结论

这篇论文对其标题问题给出了响亮的肯定回答。旧测试确实能施展新解法,但前提是你不能将它们一视同仁。通过利用 AI 智能地挑选出与特定问题相关的微小而完美的旧测试子集,我们可以使软件修复变得更快、更便宜,且更加准确。

关键要点: 你不需要更大的图书馆来解决问题;你只需要一位更好的图书管理员来找到正确的书。TestPrune 就是那位图书管理员。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →