← 最新论文
🤖 AI

All Smoke, No Alarm: Oracle Signals in Agent-Authored Test Code

这项针对超过 86,000 个智能体生成的测试补丁的实证研究表明,尽管 80.2% 的补丁缺乏有意义的验证逻辑,但强 oracle 信号的存在显著增加了拉取请求被合并的可能性,这表明从业者应当超越简单的测试文件计数,转而采用感知 oracle 的质量检查。

原作者: Dipayan Banik, Kowshik Chowdhury, Shazibul Islam Shamim

发布于 2026-06-17
📖 1 分钟阅读☕ 轻松阅读

原作者: Dipayan Banik, Kowshik Chowdhury, Shazibul Islam Shamim

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

想象一下,你雇佣了一支由超快速、AI驱动的建筑工人组成的团队来盖房子。你要求他们不仅要建造房间,还要为他们添加的每一个新房间编写一份“安全检查报告”。

这篇论文就像是一个质量检测员,审阅了成千上万份这些由 AI 生成的安全报告,以观察它们是否真的履行了职责。以下是他们的发现,已进行简化处理:

问题所在:“只有烟雾,没有警报”

这篇论文的标题是对短语“有烟无火”(意指虚有其表)的一种戏仿。在这里,它是**“只有烟雾,没有警报” (All Smoke, No Alarm)**。

当你查看一个拉取请求(Pull Request,即向软件项目添加新代码的请求)时,它看起来往往非常完美。AI 写了一个测试文件。计算机说:“绿灯!所有测试均已通过!”

但研究人员发现,许多这些所谓的“测试”就像是一个被拔掉了插头的烟雾探测器。AI 写出了看起来像测试的代码,但它从未真正检查结果是否正确。

  • 真正的测试: “我烤了一个蛋糕。它尝起来是巧克力的味道吗?是/否。”
  • AI 的假测试: “我烤了一个蛋糕。我确保了烤箱是开着的。蛋糕确实存在。”

AI 确认了蛋糕的存在(代码运行了),但它从未检查蛋糕是否可以食用(输出是否正确)。研究人员将此称为“测试剧场”(Test Theater)——它看起来像是一场表演,但实际上并没有进行任何真实的验证。

调查过程:统计“预言机”的数量

在软件测试中,负责说明“这是否正确?”的部分被称为测试预言机 (Test Oracle)。研究人员查看了由五种不同的 AI 代理(如 GitHub Copilot、Devin 和 Claude Code)编写的超过 86,000 个测试文件。

他们创建了一个“评分系统”,以观察 AI 的“安全检查”到底有多好:

  • 弱信号(“假的”警报): AI 只是检查代码是否运行、文件是否存在或函数是否被调用。它并不检查结果
  • 强信号(“真的”警报): AI 实际上会将结果与特定的预期值进行比较(例如,“总和是 5,而不是 6”)。

重大发现:
在 AI 编写的所有测试文件中,80.2% 是“弱”的。它们大多只是检查代码是否运行,而不是检查其是否正确工作。只有大约五分之一的测试真正具备强有力的、有意义的检查。

令人惊讶的转折: “假”测试会被接受吗?

你可能会想:“如果 AI 写了糟糕的测试,人类肯定会拒绝这些代码更改,对吧?”

事实上,起初情况恰恰相反。

  • 带有测试的拉取请求被合并(接受)的概率为 72.6%
  • 带有测试的拉取请求被合并的概率仅为 59.7%

为什么? 因为当 AI 编写强测试时,它被要求执行更难、更复杂的任务。那些请求规模更大,包含更多代码,且处于更热门的项目中。它们天生就更难获得批准。

真实的故事:
当研究人员使用数学方法来“抹平竞争环境”(通过忽略项目规模和流行度来进行苹果对苹果的公平比较)时,他们发现了一个隐藏的真相:
更强的测试实际上有助于代码被接受。
在考虑到任务难度后,拥有一个真实、有效的安全检查,使 AI 的工作被人类审核员批准的可能性提高了 28%

总结

论文得出结论:仅仅计算 AI 编写了多少个测试文件是衡量质量的一种糟糕方式。这就像是仅凭一个厨师写了多少食谱来评判他,而不去品尝食物本身。

  • 错觉: AI 写了很多测试文件,所以一切看起来都很安全。
  • 现实: 大多数文件都是空壳,根本没有验证任何事情。
  • 解决方案: 人类和工具需要看得更深。他们需要检查“安全警报”是否真的与“烟雾”连接在一起,而不仅仅是摆在桌子上。

研究人员建议,我们需要新的工具来识别并标记这些“空洞”的测试,这样我们才不会因为一段代码附带了一个华丽(但毫无用处)的测试文件,就误将糟糕的代码引入我们的软件中。

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

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

试用 Digest →