想象一下,你雇佣了一支超级快速、超级聪明的机器人助手团队(称为“编程智能体”,Coding Agents)来帮你盖房子。这些机器人不仅仅是搬砖;它们还能编写说明书、检查水管,甚至还能编写安全检查报告(在软件领域,这些被称为“测试”)。
这篇论文就像是一份侦探报告,它深入调查了 2,168 个不同的数字建筑工地,看看这些机器人实际的工作表现究竟如何。具体来说,研究人员想要知道:这些机器人是否写了太多的“虚假”安全检查?
以下是他们发现的研究结果,使用了简单的类比:
1. “过度保护型”机器人
在软件测试中,“Mock”(模拟)就像是电影中的一个替身演员。如果你正在拍摄一场角色与银行经理交谈的戏份,但手头没有真实的银行经理可用,你可能会找一个穿着西装的朋友,让他只说预先写好的台词。这就是一个“Mock”。它让拍摄变得更容易(测试更快、更容易编写),但它并不能证明真实的银行经理是否真的会那样表现。
研究发现,机器人助手痴迷于使用这些替身演员。
- 数据统计: 当人类开发者编写测试时,他们大约有 26% 的时间会使用“替身演员”。而当机器人编写测试时,他们使用“替身演员”的比例达到了 36%。
- 类比: 这就像是机器人太害怕真实世界(真实的数据库、真实的互联网连接)了,以至于他们更喜欢在整个剧本中都使用纸板剪影,而不是真人。他们这样做比人类更频繁。
2. 机器人热爱编写安全检查
研究人员还检查了机器人编写安全检查报告(测试)的频率。
- 数据统计: 机器人所做的工作中,约有 23% 涉及编写或修改测试。而人类做这类工作的比例仅为 13%。
- 类比: 机器人不仅仅是在铺砖;它们还在积极地编写规则手册。事实上,在全新的建筑工地(2025 年创建的仓库)中,机器人负责编写 17% 的所有安全检查,这个数字正在快速增长。
3. “一刀切”的工具
论文研究了机器人使用的是哪种类型的替身演员。存在不同类型的“测试替身”(Test Doubles):有些只是静止不动(Dummy/哑模型),有些假装成真实的(Stub/存根),有些则负责观察发生的情况(Spy/间谍)。
- 发现: 人类会使用多种工具。他们可能在这里用一个“间谍”,在那里用一个“假对象”。
- 机器人的习惯: 机器人在多样性方面很懒。它们使用 “Mock” 工具的比例高达 95%。
- 类比: 想象一下你的工具箱。人类拥有锤子、螺丝刀、扳手和锯子。而机器人出现时,只带着一把巨大的锤子,并试图用它来做所有事情,即使在需要螺丝刀的时候也是如此。它们几乎完全依赖一种特定类型的假对象。
4. “过于虚假”的危险
为什么这很重要?论文警告说,虽然使用过多的“替身演员”可以让机器人更快地编写测试,但这可能会让测试的实用性降低。
- 风险: 如果你只用纸板剪影来测试你的房子,你可能会认为水管系统非常完美。但当你打开真正的水龙头时,水管可能会爆裂,因为纸板无法像真实的金属那样做出反应。
- 结论: 机器人生成的测试易于创建,但由于过于脱离现实,可能无法捕捉到真实的问题。
我们应该怎么做?
作者建议,既然这些机器人如此热衷于使用“虚假”演员,我们就需要给它们更好的指令。
- 解决方法: 就像你会告诉人类学徒,“不要用假水管来接主水线”一样,我们需要在机器人的指令手册(配置文件)中编写具体的规则。我们需要告诉它们:“尽可能使用真实的对象,只有在绝对必要时才使用假对象。”
简而言之: 机器人工作很努力,也编写了大量的安全测试,但它们过于热衷于使用现实的“虚假”版本,这可能会降低其安全检查的可靠性。我们需要教它们如何融入更多真实世界的场景。
技术摘要:编码智能体是否正在生成过度模拟(Over-Mocked)的测试?一项实证研究
问题陈述
虽然大语言模型(LLMs)已被广泛应用于软件工程任务,但自主编码智能体(如 Claude Code、GitHub Copilot Agent、Cursor Agent)的出现代表了一次重大转变。与传统的代码补全工具不同,这些智能体具有高度的自主性,能够调用外部工具、执行代码并在软件仓库中撰写提交(commits)。关于其采用的一个关键担忧是它们自主生成的软件测试质量。
具体而言,本文探讨了**过度模拟(over-mocking)**的问题。虽然模拟(mocking)是隔离依赖项并确保测试确定性的标准技术,但过度使用会导致测试难以理解、难以维护,且在验证真实系统交互方面的效果较差。尽管之前的研究已经探讨了 LLM 生成的测试质量(例如:易变性、缺乏断言),但关于自主智能体在现实世界系统中生成模拟的具体行为,目前仍缺乏深入研究。作者指出,有轶事证据表明,智能体生成的模拟比人类开发者更多,但此前缺乏实证验证。
研究方法
本研究是对托管在 GitHub 上的软件仓库进行的规模化实证分析,重点关注 2025 年的数据。
- 数据集范围: 研究人员分析了 2,168 个仓库中的 1,254,878 次提交,涵盖 Python、JavaScript 和 TypeScript 语言。
- 智能体识别: 仓库的选择基于是否存在与领先智能体相关的配置文件或目录(例如
CLAUDE.md、.cursor/、copilot-instructions.md)。通过搜索提交元数据(作者和 Co-authored-by 标头)中的关键词(如 "claude"、"copilot" 和 "cursor")以及其他工具(如 Aider 和 Devin AI)来识别智能体提交。
- 测试检测: 测试提交通过标准的文件命名约定(如
test_*.py、*.test.ts)和源自流行框架(如 Pytest、Jest、Mocha)的目录模式(如 __tests__/、spec/)进行识别。
- 模拟检测: 研究将“模拟提交”定义为引入了新测试双胞胎(test double)标识符的提交。检测方法通过扫描包含
mock、stub、spy、fake、dummy 等术语的标识符以及特定的 Python 装饰器(如 @patch),捕捉了包括基于框架的模拟(如 MagicMock、spyOn)和手动创建的测试双胞胎。
- 研究问题 (RQs):
- RQ1: 编码智能体生成测试的频率如何?
- RQ2: 编码智能体在测试中生成模拟的频率如何?
- RQ3: 编码智能体生成哪些类型的测试双胞胎(dummy, stub, spy, mock, fake)?
统计分析包括用于独立性检验的卡方检验、配对 Wilcoxon 检验以及用于衡量效应量的 Cliff's delta。
关键结果
RQ1:测试生成的频率
- 更高的测试参与度: 编码智能体修改或添加测试文件的可能性显著高于非智能体。智能体提交中涉及测试文件的比例为 23%,而非智能体为 13%。
- 仓库普遍性: 60% 存在智能体活动(agent activity)的仓库也包含了智能体生成的测试活动。
- 时间趋势: 在 2025 年创建的仓库中,智能体进行的测试提交比例上升至 17%(相比之下,整体数据集为 7%),表明对智能体处理测试任务的依赖程度正在增加。
RQ2:模拟生成的频率
- 更高的模拟率: 编码智能体在其测试提交中引入模拟的可能性更高。智能体测试提交中添加模拟的比例为 36%,而非智能体为 26%。
- 仓库相关性: 68% 具有智能体测试活动的仓库也包含了智能体模拟活动。
- 活动水平: 在高强度智能体活动(≥50 次智能体提交)的仓库中,智能体的模拟提交比例为 36%,显著高于同一仓库中非智能体的 28% 比例。
- 时间趋势: 与测试生成类似,在 2025 年创建的仓库中,模拟提交的比例上升至 19%(整体为 9%)。
RQ3:生成的模拟类型
- 缺乏多样性: 编码智能体主要使用 mock 类型(占其测试双胞胎使用的 95%)。
- 与人类对比: 非智能体使用更多样化的测试双胞胎,包括使用 mock (91%)、fake (57%) 和 spy (51%)。
- 利用不足的类型: 智能体和人类很少使用 dummy 和 stub 类型,但智能体表现出向通用的 "mock" 类别高度集中的倾向,这表明其隔离策略缺乏细微差别。
核心贡献
- 首次关于智能体生成模拟的实证研究: 本文提供了对现实世界软件系统中自主编码智能体生成的测试中,模拟的存在性和频率进行的首次大规模调查。
- 具有实践意义的启示: 研究结果为从业者和研究人员提供了具体的发现,强调智能体不仅在编写代码,而且正在积极地扩展测试套件,并表现出过度模拟的倾向。
重要性与影响
论文得出结论,编码智能体正在积极重塑软件测试实践,但也带来了有关测试质量的潜在风险:
- 自主测试潜力: 智能体生成的测试提交的高频率表明,这些工具正被用于维护和扩展测试套件,而不仅仅是生产代码。
- 过度模拟风险: 智能体过度依赖模拟(36% vs 26% 对于人类)以及仅使用单一测试双胞胎类型(mock)的倾向,表明它们生成的测试可能更容易自动生成,但在验证真实交互方面效果较差。这种“过度模拟”可能导致即使底层实现错误,只要模拟内容与(可能已过时的)模拟定义相匹配,测试仍能通过。
- 配置指导: 作者认为,由于智能体依赖配置文件(如
CLAUDE.md、copilot-instructions.md),从业者必须在这些文件中明确包含关于模拟最佳实践和反模式的指导。研究发现,虽然这些文件中常见的测试相关指令,但特定的模拟相关指导却较少。
- 未来研究: 本文呼吁进一步调查智能体生成测试的质量及其特定模拟策略对可维护性和覆盖率的影响。同时,建议探索智能体配置文件的内容,以了解指令如何影响测试生成。
该研究强调,虽然智能体提供了显著的自动化潜力,但“增强型编码的代价是永恒的警惕”,特别是在自动化测试套件中验证真实交互方面。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。