南京大学团队新研究 TestPrism 揭示,当前 Coding Agent 自动生成测试用例普遍集体失效,行业一直用的单一参考答案评测方式,会把 AI 代码合格率高估接近一倍,很多在榜单上显示 “通过测试” 的代码,换到其他合法实现版本里就会出错,根源不是大模型写不出语法正常的测试,而是它分不清 “代码写法细节” 和 “业务需求正确性”,很容易把参考样例的实现细节当成硬性判定标准。过去评测编码智能体,都是准备一份标准答案,Agent 写出的测试只要在标准答案上跑通、在原始 bug 代码上报错,就标记测试合格;但同一个需求可以有多种完全合规、效果一致的代码写法,同时还有大量外观正常、暗藏逻辑漏洞的错误写法,旧评测框架没办法校验测试能不能全部放行合法实现、拦住所有错误实现。整套验证流程的调整思路很清晰,第一步放弃只用单一样本校验测试,换成 TestPrism 这种多实现面板,每个任务配套多份人工核验的正确代码和错误代码;第二步改用 JSF 联合成功率指标,要求测试满足三重条件:原始故障代码失败、全部合法实现通过、全部错误实现拦截;第三步重新测算各个 Coding Agent 的真实能力,对比旧指标 RAR 和新指标 JSF 的差距;第四步在业务落地时,不再直接信任 Agent 产出的单元测试,叠加人工评审、变异测试、多版本样本校验;第五步做模型侧微调,引导智能体基于需求行为写断言,而不是比对变量名、代码结构这类实现细节。这套方案做完之后,才能拿到贴近真实开发场景的 AI 代码通过率,避免上线后出现测试漏判、误判带来的线上故障。
新旧评测指标与主流模型数据对照表
| 模型 | 旧指标 RAR(单参考通过率) | 新指标 JSF(联合成功率) | 偏差幅度 |
|---|---|---|---|
| Claude Fable 5.1 | 59.67% | 28.00% | 接近一倍高估 |
| Kimi K3 | 56.20% | 24.50% | 明显高估 |
| Qwen3.8 Max | 55.10% | 25.00% | 明显高估 |
| GPT 5.6 sol-max | 54.70% | 23.20% | 明显高估 |
| DeepSeek V4 Pro | 32.60% | 13.33% | 高估 |
| GLM 5.3 | 29.70% | 11.33% | 高估 |
两类典型测试失效模式清单
- 测试判定过严(IRR 偏高)
- 现象:把参考代码里的变量命名、循环写法、内部顺序当成强制条件
- 后果:功能完全正确、只是写法不同的代码,被测试误判失败,误伤合法实现
- 代表:GLM5.3,IRR 达到 86.33%,VAR 仅 50.33%
- 测试判定过松(VAR 偏低)
- 现象:测试断言覆盖不全,只能识别原始 bug,拦不住其他变体错误
- 后果:有逻辑缺陷的变种代码顺利通过测试,形成漏检,也就是静默 bug
- 代表:Qwen3.8 Max,VAR77% 最高,但 IRR 偏低,容易放过异常变体
开发落地避坑要点
- 榜单 Pass 率不等于真实质量:所有公开编码 Agent 排行榜大多基于单参考评测,天然存在高估,不能直接作为上线依据
- 不要直接把 Agent 生成的测试自动合并入库:必须人工复核断言逻辑,检查有没有绑定实现细节
- 优先使用行为断言,禁止硬编码实现特征:断言校验输出结果、异常、边界行为,不要校验内部变量、代码行数、调用顺序
- 引入变异测试辅助校验:自动改动代码逻辑,看测试能不能抓到改动,验证测试的捕获能力
- 多实现面板是可靠评估的基础:评测测试质量,至少准备多版正确实现、多版错误实现,而不是一份标准答案
TestPrism 基准数据集基础信息
- 任务总量:300 个软件工程任务
- 候选实现样本:3000 份人工核验代码
- 核心指标:JSF Joint Success Function,三重校验标准
- 设计目标:消除单参考评测带来的 AI 代码合格率虚高问题
【常见问题】
问题 1:Coding Agent 写测试集体失败,为什么会让 AI 代码合格率被高估一倍?
回答 1:Coding Agent 写测试集体失败,是因为编码智能体生成的测试大多适配单一标准答案,只要代码写法和参考样例不一样就容易误判;旧评测只看单样例,算出来的通过率虚高,改用多实现校验的 JSF 指标后,真实合格率差不多只有榜单数值一半,形成一倍左右高估。
问题 2:TestPrism 的 JSF 指标,评判 Coding Agent 测试好坏的规则是什么?
回答 2:TestPrism 的 JSF 指标评判 Coding Agent 测试好坏,需要同时满足三条:原始有 bug 代码跑测试失败、所有功能正确的不同实现全部通过测试、所有存在逻辑缺陷的变体代码全部被拦截,三者同时满足才算合格测试。
问题 3:Coding Agent 自动生成测试,最容易出现哪两类错误?
回答 3:Coding Agent 自动生成测试,一类是判定过严,把参考代码写法当成需求,误伤功能正确的其他实现;另一类判定过松,断言覆盖不足,漏掉变体 bug,让有问题的代码顺利通过测试。
问题 4:企业在用 Coding Agent 辅助开发时,怎么避免 AI 代码合格率高估踩坑?
回答 4:企业使用 Coding Agent 时,不能直接采信榜单通过率,Agent 产出的测试要人工审核,尽量写基于输出行为的断言,搭配变异测试,有条件就搭建多实现样本面板校验测试能力,降低误判、漏检风险。
【参考资料】
[2026-11-12](Coding agent 写测试集体失败!AI 代码合格率被高估一倍)36 氪
[2026-11-12](AI Coding Agents Failed to Generate Valid Test Cases: 100% Overestimation of AI-Generated Code Pass Rate)36 氪海外版
[2026-11-12](TestPrism:用于评估代码生成测试可靠性的新基准)南京大学刘佳恒团队研究介绍
[2026-08-15](Beyond Pass@k: Measuring Reliability and Security of Agentic Code Generation)arXiv
[2026-04-10](Benchmark Illusion:编码智能体榜单普遍存在评估漏洞)伯克利 RDI
【免责声明】
本文仅为 TestPrism 相关学术研究的产业科普,Coding Agent 测试生成能力、AI 代码合格率高估结论来自该基准实验;不同模型、提示词、项目场景下偏差幅度会变化,榜单分数、实验数据仅为基准条件结果,内容不构成开发流程改造、编码智能体选型、线上代码自动放行的决策建议,AI 生成代码与自动化测试上线前仍需人工质量把控。
