← 最新论文
🤖 AI

The Quality of Claude AI-authored Python Tests Is Not Weaker Than Human-authored Tests

本研究表明,基于对真实世界工具输出、跨多种故障注入协议的单个测试评分以及定性设计准则的严格评估,由近期 Claude AI 模型生成的 Python 测试在不劣于来自 Django 和 Pandas 等成熟开源项目的真人编写测试的基础上,展现出了其非劣效性。

原作者: Douglas J. Leith

发布于 2026-08-18
📖 1 分钟阅读☕ 轻松阅读

原作者: Douglas J. Leith

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

软件测试是数字世界的静默守护者。在手机应用或银行网站的新功能到达用户手中之前,必须经过一系列旨在捕捉错误的检查。这些被称为“测试”的检查,就像是计算机向自己提出的系列问题:“如果我按下这个按钮,屏幕会按预期变化吗?”“如果我输入了错误的密码,系统会锁定我吗?”几十年来,这些问题一直由人类工程师编写。但随着人工智能在编写代码方面变得越来越强大,一个新问题出现了:这些机器也能编写用于检查自身工作的题目吗?如果 AI 编写了一个程序,它能否也编写出确保该程序以后不会崩溃的安全网?这不仅仅是一个技术上的好奇,更是一个现实的必要。如果我们想借助 AI 构建复杂的系统,我们需要知道 AI 构建的安全网是否足够强大,能够捕捉到它可能犯下的错误。

都柏林圣三一学院的一位研究人员通过让 AI 编写的测试与人类编写的测试进行正面交锋,试图回答这个问题。他们专注于 Python(一种用于数据和 Web 应用的流行语言),并将一组先进 AI 模型家族编写的测试与人类为两个规模庞大且知名的软件项目——Django(一个用于构建网站的框架)和 Pandas(一个用于分析数据的工具)编写的测试进行了对比。研究人员并没有要求 AI 为一段孤立的代码在真空环境下编写测试,而这是以往大多数研究所采用的方法。相反,他们观察了一个真实的场景:AI 在数周内从零开始构建了一个完整的工具。在这个场景中,AI 决定了自己何时编写测试,而无需被指令告知,就像人类工程师一样。随后,研究人员对数千个此类测试进行了严格的检测,以观察它们的表现如何。

研究人员使用的第一种方法是一种“时间旅行”法。他们选取了一个旨在修复特定漏洞(bug)的测试,然后将时钟倒回,移除那个测试本应捕捉到的修复程序。如果测试是优秀的,由于漏洞重新出现,测试应该立即失败。如果测试是脆弱的,它会继续通过,无法察觉代码已经退化。在这种检查中,AI 编写的测试表现得非常出色。它们捕捉真实世界漏洞的频率几乎与人类编写的测试一样高。事实上,研究人员发现没有统计学证据表明 AI 测试更弱。它们在发现代码出错方面同样有效。

为了进行更深入的研究,研究人员使用了一种称为“变异测试”的技术。想象一下,对一段代码故意引入微小的、人工制造的错误,比如将加号改为减号或交换数字。一个好的测试应该注意到这些变化并宣告失败。研究人员在代码中引入了数百个此类人工错误,并观察测试是否能捕捉到它们。他们通过两种方式进行了测试:首先,仅变异原始更新中修改过的特定行;其次,变异测试实际触及的任何部分代码。在这两种情况下,AI 编写的测试捕捉错误的速率与人类编写的测试在统计学上是无法区分的。AI 测试并没有错过人类测试所能捕捉到的那些微妙错误。

研究人员不仅观察了测试是否通过或失败,还观察了测试本身的逻辑设计。他们使用了一份详细的清单来评估诸如清晰度、是否检查了正确对象以及是否过于复杂等指标。他们发现,虽然 AI 测试并非完美无缺,但严重缺陷的数量非常少,且与人类编写的测试相当。大多数测试,无论是机器还是人类编写的,其结构都很合理,并完成了各自的工作。存在的少数缺陷通常是轻微的问题,例如测试范围略显过宽,或者注释与代码不完全匹配。至关重要的是,研究人员发现 AI 测试并不容易出现一种特定的失效类型,即在代码损坏时仍然通过测试,这在早期的较小规模研究中曾被报道过。

该研究还观察了其他 AI 辅助编写测试的大型软件项目,包括一个容器注册表和一个自动化工具。即使在这些 AI 角色不如从零构建工具那样明确定义的复杂环境中,测试依然经受住了考验。它们在捕捉错误方面的表现与同一项目中的人类编写的测试一样出色。研究人员指出,这种高质量似乎取决于所使用的特定 AI 版本。旧的模型产生的测试缺陷较多,但更新、更先进的模型产生的工作水平已与人类专家持平。

这项工作表明,担心 AI 生成的代码因为缺乏适当测试而不安全的担忧可能是没有根据的。这里评估的 AI 模型不仅生成了代码,还生成了用于验证该代码所需的安全性检查。它们能够识别哪些内容需要测试,并能自行编写测试,通常无需明确指令。结果表明,随着人工智能的不断进化,它不仅能够构建软件,还能够确保自身的可靠性。这些机器构建的安全网并不比人类构建的弱;在许多方面,它们同样强大。这并不意味着不再需要人类监督,但它确实表明,构建安全可靠软件的工具正在扩展,包括能够编写自身质量控制的机器。

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

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

试用 Digest →