← 最新论文
🤖 machine learning

Do Coverage and Mutation Scores of LLM-Generated Test Suites Correlate with Their Effectiveness? (Replicability Study)

这项大规模复制研究表明,在被测代码本身可能已经存在缺陷的情景下,代码覆盖率和变异分数并不是衡量大语言模型生成的测试用例检测真实缺陷能力的可靠指标,但在回归测试场景中,它们仍然是具有意义的信号,这挑战了先前关于测试套件规模作为主要混淆变量的结论。

原作者: Junda Zhao, Shurui Zhou, Eldan Cohen

发布于 2026-07-28
📖 1 分钟阅读☕ 轻松阅读

原作者: Junda Zhao, Shurui Zhou, Eldan Cohen

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

想象一下,你是一名正在试图破解犯罪案的侦探,但你寻找的不是指纹或脚印,而是“漏洞”——即那些会导致程序崩溃或运行异常的隐藏代码错误。几十年来,软件工程师一直依赖两个主要线索来判断他们的测试是否有效:代码覆盖率(Code Coverage)变异分数(Mutation Score)。把代码覆盖率想象成一把手电筒;它告诉你向黑暗房间(代码)中照亮了多少面积。如果你照亮了100%的房间,你会感到很有信心,觉得没有遗漏任何东西。而变异分数则更像是一种“压力测试”或“陷阱”。想象一下有人偷偷把墙上的几块砖头换成了脆弱的假砖(这些就是“变异”)。如果你的测试撞倒了这面墙,说明你的测试足够敏锐,能够发现这些薄弱环节。

长期以来,软件测试领域的一个大问题是:“照亮更多的空间或撞倒更多的假墙,真的意味着你能找到真正的罪犯吗?”一些早期的研究表明,一旦考虑到运行了多少次测试,这些线索就会变得不再那么有用。他们认为,仅仅因为你覆盖了更多的范围或消灭了更多的假漏洞,并不一定意味着你在寻找真实的、隐藏的错误方面做得更好。现在,一个新玩家进入了游戏:大语言模型(LLM)。这些是超级聪明的 AI 聊天机器人,它们可以编写代码,最近甚至可以为其他代码编写测试。但由于这些 AI 机器人的工作方式与人类侦探或传统的自动化工具不同,我们不知道旧的线索(手电筒和假墙)对它们是否仍然有效。这些 AI 生成的测试是真的在寻找真实的漏洞,还是仅仅擅长照亮房间或撞倒假砖?

这篇论文是一部宏大的侦探故事,作者 Junda Zhao、Shurui Zhou 和 Eldan Cohen 决定再次对这些旧线索进行测试,只不过这次的对象是 AI 生成的测试。他们选取了 11 个最先进的可用 AI 模型,并要求它们为现实世界的软件项目编写了超过 10 万个测试。然后,他们检查了“手电筒”(覆盖率)和“假墙”(变异分数)是否真的能预测 AI 是否找到了真实的漏洞。

这里的转折在于:结果与大家的预期大相径庭。作者发现,旧的规则并不完全适用于 AI。当 AI 正在测试的代码被认为是“干净”的(就像一个尚未发生犯罪、只是在等待未来可能出错的犯罪现场)时,旧的线索表现得非常出色。如果一个 AI 模型生成的测试覆盖了更多的代码或消灭了更多的假变异,它确实在未来能更好地发现真实的漏洞。在这种特定场景下,手电筒和压力测试是比较哪位 AI 是更优秀侦探的可靠指南。

然而,当被测试的代码本身已经“损坏”时,故事发生了彻底的变化。在现实世界中,我们经常要求 AI 在已经混乱的代码中寻找漏洞。作者发现,在这种混乱的场景下,手电筒和假墙都失效了。即使一个 AI 照亮了 100% 的代码或撞倒了每一块假砖,这也不意味着该 AI 真的能找到隐藏在混乱中的真实漏洞。事实上,AI 有时会被损坏的代码所迷惑,写出的测试竟然是在“庆祝”这个错误而不是捕捉它。所以,如果代码本身已有漏洞,旧的指标就变得不可靠了;它们无法告诉你 AI 是否真的擅长发现错误。

另一个重大的惊喜在于测试团队的规模。之前的研究曾认为,测试的数量是最大的骗局,让规模更大的团队看起来更好,仅仅是因为他们有更多的人手。但本论文指出,对于 AI 而言,测试的数量并不是主要的驱动因素。无论 AI 写了 3 个测试还是 10 个测试,它对代码的覆盖程度与发现漏洞之间的关系大致保持不变。团队的大小并不是神奇的秘诀;关键在于 AI 是如何“思考”这段代码的。

简而言之,这篇论文表明,在使用 AI 时,我们不能盲目信任旧的指标。如果你是在测试干净的代码以捕捉未来的错误,那么覆盖率和变异分数仍然是比较不同 AI 模型的有用工具。但如果你是想在已经损坏的代码中寻找漏洞,这些数字可能会欺骗你。作者总结道,我们需要更加谨慎地对待我们正在测试的“内容”以及“目的”,而不仅仅是计算 AI 写了多少测试或触及了多少代码。他们并没有解决如何让 AI 完美寻找漏洞的谜题,但他们澄清了大量关于如何衡量 AI 是否在做好工作的困惑。

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

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

试用 Digest →