Abstract
AIコーディングアシスタントはますますテストとともにコードを生成するようになってきています。開発者がテストコードをどのように構成するか、つまり実装にインラインで合わせるのか、別ブロックとして分離するのかは、これまで主にテストの哲学に関する問題でした。本研究では、この選択がAIコード生成の品質に影響するかどうかを調査します。
大規模な実証研究(生成ファイル830+、12モデル、3プロバイダ)を行います。用いるのは、決定性(Determinism)、保持(Preservation)、正しさ(Correctness)を測定する3次元評価フレームワークであるSEGAです。d-aryヒープ実装に対して、インラインテスト構文(Python doctests)と分離テスト構文(Rust #[test]ブロック)を比較すると、次が分かります: (1) インラインテストは、全モデルにわたって保持(100%に近い)と正しさ(92-100%)をほぼ完全に実現する; (2) 分離テストではモデルの層(tier)による顕著なギャップが露呈する(正しさ0-100%)だけでなく、保持と正しさの独立性も見られる; (3) モデルの振る舞いは世代をまたいで変化し、特に1つのモデルは、その3つの先行モデルとは異なり、テスト抑制(test suppression)パターンを破る; (4) 7つのオープンソース・アーキテクチャ(6つのトランスフォーマと、ゲート付き線形リカレントニューラルネットワーク(RNN))に対する機械論的分析により、インラインテストマーカーは5/7モデルで2.8-4.4\times強い注目を受けることが分かります。また、4つのコード特化トランスフォーマとRWKV-6に対するノックアウトおよびステアリング実験によって因果的妥当性を検証します; さらに、コロケーション(co-location)機構は非トランスフォーマのアーキテクチャにも拡張されており、設計上の推奨が将来のアーキテクチャ変更にも頑健であることを示唆します。基盤モデル(Foundation Model)時代において、テスト構文の構造はソフトウェア設計上の懸念事項です。テストを実装コードと同じ場所に配置することで、測定可能な形でより良いAI生成コードが得られます。本arxivのロングバージョンには、効果がモデル能力とプログラミング言語の双方によって制約されることを、さらに厳密化する付録が含まれています。