变异测试 252/252 全灭却是假象:一次 eval 基线失效复盘

Grimmoner · reddit · 2026-10-19

作者用 Claude Code 构建家庭自动化 Python 工具,并对其测试套件跑变异测试(mutation testing)——故意逐个破坏代码,验证每个变异体都会被某个测试抓住。一次运行三小时、252 个变异体全部被「击杀」,看似完美,但随后的对照检查失败了,整轮结果作废。

根因:运行器会把代码和测试复制到临时目录再跑。三天前有个测试开始读取代码旁的数据文件,但没人把它加入复制清单——于是每一份副本(无论是否变异)里该测试都失败,所有变异体「死于」同一个缺失文件。基线跑在源目录上,文件存在,因此没暴露问题。同一 bug 此前还让一条已上线变更的「11/11 killed」记录失效了三天。

更早的事故:一轮跑过午夜后,/tmp 下的测试 venv 配置文件疑似被 macOS 临时目录清理掉,pytest 起不来,「套件跑不起来也算全灭」,午夜后的所有结果都失真。

作者现在的防线:

作者将结论推广到 eval 和 LLM judge:每轮都要跑一个必过的和一个必挂的用例、走完全相同的 harness。100% 通过率应该让你起疑,而不是开心。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →