来源笔记
MUCOCO: Automated Consistency Testing of Code LLMs
Code LLM TestingConsistency TestingMutation AnalysisMetamorphic TestingCode Intelligence
摘要
MuCoCo 是一种自动化测试方法,用来发现代码 LLM 的一致性失败。它把编码任务变成语义等价的版本,然后检查模型在这对任务上的行为是否发生变化。
问题
- 代码 LLM 对于意思相同的程序可能给出不同答案,但常见编码基准主要测正确性,不测一致性。
- 人工构建的基准是静态的,需要手工投入,而且会随着新模型出现而产生数据泄漏。
- 一致性很重要,因为不稳定的行为会破坏人们对代码生成、执行预测和其他软件任务的信任。
方法
- MuCoCo 接收一个编码查询,生成语义等价的变体,在原始版本和变体上运行 LLM,然后比较结果。
- 它使用 11 种保持语义不变的变异,分为三类:词法、语法和逻辑。示例包括变量重命名、循环改写、德摩根改写和常量展开。
- 正确性判定器会结合预期输出和测试集,检查每个输出是正确、错误还是无效。
- 一致性判定器在原始查询和变体查询产生不同结果时标记错误,例如通过与失败、有效与无效,或者失败测试用例不同。
- 评估覆盖 4 个基准、4 类任务和 7 个代码 LLM。
结果
- 在所有设置下,MuCoCo 在 14.82% 的生成测试对中发现不一致:21,924 / 147,935 个案例。
- 这些任务上的平均模型准确率是 69.13%(102,092 / 147,680),所以即使模型经常答对,不一致问题仍然常见。
- 按模型看,不一致率从 GPT-5 的 2.92% 到 LLaMA-3.1 的 21.22% 不等;GPT-4o 为 18.15%,Gemma-3 为 17.69%,DeepSeek-V3.2 为 16.53%,Codestral 为 14.51%,Qwen2.5 为 12.73%。
- 按变异类型看,词法变异发现的不一致最多,为 16.28%(12,974 / 79,707),其次是逻辑变异 13.91%(6,259 / 45,008)和语法变异 11.59%(2,691 / 23,220)。
- 按任务看,代码生成的不一致率为 27.15%,多项选择题(MCQ)为 22.35%,输出预测为 18.99%,输入预测为 6.65%。
- 与 Turbulence 在 Turbulence 数据集上的结果相比,MuCoCo 报告的错误率总体为 41.39%,Turbulence 为 33.8%;对应错误数分别是 1,781,288 / 4,302,713 和 279,241 / 826,084。论文称,MuCoCo 在某些设置下最多高出 6 倍,并发现了新的一致性错误类型。