论文

共置测试,更好的 AI 代码:测试语法结构如何影响基础模型代码生成

Co-Located Tests, Better AI Code: How Test Syntax Structure Affects Foundation Model Code Generation

模型评测模型行为与机制分析

摘要

人工智能编码助手越来越多地在测试的同时生成代码。开发人员如何构建测试代码,无论是与实现内联还是在单独的块中,传统上都是测试哲学的问题。我们研究这种选择是否会影响人工智能代码生成质量。我们使用 SEGA(衡量确定性、保存性和正确性的三维评估框架)进行了大规模实证研究(830 多个生成文件、12 个模型、3 个提供商)。将内联测试语法(Python doctests)与 d 元堆实现上的分离测试语法(Rust #[test] 块)进行比较,我们发现:(1)内联测试在所有模型中产生近乎完美的保存(100%)和正确性(92-100%); (2) 单独的测试暴露了模型层的明显差距(0-100% 正确性)以及保存与正确性之间的独立性; (3) 模型行为会代代相传,特别是一个模型打破了其三个前辈的测试抑制模式; (4) 对 7 个开源架构(6 个 Transformer 和一个门控线性递归神经网络 (RNN))的机制分析表明,内联测试标记在 5/7 模型中受到 2.8-4.4$\times$ 的更强关注,并通过对 4 个代码专用 Transformer 和 RWKV-6 进行淘汰和转向实验进行因果验证;共置机制扩展到非 Transformer 架构,这表明设计建议对于未来的架构转变是稳健的。在基础模型时代,测试语法结构是软件设计关注的一个问题:将测试与实现代码放在一起会产生明显更好的人工智能生成代码。这个 arxiv 长版本包括附录,进一步限定了模型功能和编程语言所限制的效果。