AI 生成的测试会让编码 agent 更糟:怎么检查你自己的测试
来源:dev.to — 2026-09-11
📋 概述
一个订单筛选函数有三条需求:不传或传 None 时返回全部、传空列表时返回空、传状态列表时只返回匹配项。报出的 bug 是不传筛选条件时返回了空,于是出现了一版看起来很合理的修复:statuses 为假值就返回全部订单。两条断言全过,if 的两个分支都被覆盖,症状也消失了——但第三条需求被悄悄破坏,因为 Python 里 None 和空列表同为假值,而这三条需求给它们的语义完全不同。作者引用 9 月 8 日的 ExecCritic 预印本:固定修复 agent 不变,把反馈换成较弱的生成测试后,SWE-bench Verified 解决率从 61.2% 掉到 57.3%,而换成更强的测试模型则升到 65.3%。
🔑 核心要点
- 弱测试把修复 agent 的表现从 61.2% 拉低到 57.3%,强测试则升到 65.3%。
- Python 里 None 与空列表同为假值,但需求给它们的语义完全不同。
- 两处断言都通过、分支都覆盖,回归却已经被引入。
- 生成测试一旦被当作反馈,就会决定 agent 下一步做什么。
💡 金句
A bug fix can make every new test pass and still introduce a regression.
👍 0
👎 0
← 返回 dev.to 首页