この論文は、テストを手作業で書くのは手間がかかるため開発者がしばしば省略してしまうこと、そして
テスト生成ツール — 一般にテスト対象のコードが正しいと仮定し、そこから回帰テストを生成する — が
依然として高いカバレッジに到達するのに苦労していることを出発点とする。論文の鍵となる洞察は、LLM は
コードとカバレッジ情報について同時に推論できるということである。CoverUp は
既存のテストスイートのカバレッジを測定し、カバレッジが不足しているコードをセグメントに分割し、
各セグメント、実行されない行と分岐、生成された import 文を LLM にプロンプトとして与える。LLM には
抜粋中の名前の定義を要求するための get_info ツール関数が提供され、返されたテストは実行される。
テストが失敗するかカバレッジを上げない場合は、エラーやまだ不足しているカバレッジを伝えながら対話を
続ける。
評価には OpenAI の GPT-4o を用い、3 つのベンチマークスイートで行われている。CM は CodaMosa の評価に 由来する 425 モジュール、約 100,000 行からなり、探索ベースの生成器 Pynguin が苦戦するものである。 PY は Pynguin がすでに良好な性能を示すモジュール群、MT は MuTAP が用いた HumanEval 由来の関数群で ある。ベースラインは、探索が行き詰まったときに LLM が生成したテストで Pynguin の探索を再シードする 探索/LLM ハイブリッドのテスト生成器 CodaMosa と、ミューテーションテストと LLM に基づく生成器 MuTAP であり、それぞれ元の Codex 版と GPT-4o に適合させた版が用いられている。
要点
- CM スイートで CoverUp は全体で行 64%、分岐 49%、行+分岐 60% のカバレッジを達成し、CodaMosa (Codex)の 54%/34%/49%、CodaMosa(GPT-4o)の 51%/29%/45% を上回った。モジュールごとの行+分岐 カバレッジの中央値は 55% と 47% に対して 80% であり、著者らはこの差を統計的に有意と報告している。
- MT スイートで CoverUp は全体の行+分岐カバレッジ 89% に達し、MuTAP の各バリアントは最大 78% に とどまった。モジュールごとの中央値はほとんどのツールで 100% であり、著者らはこれを、MT の自己完結 的で一般に型注釈の付いた関数が CM のものよりはるかに容易であるためだとしている。
- Pynguin がすでに良好な PY スイートでは、CoverUp はモジュールごとの中央値で 100%、全体でもほぼ 100% のカバレッジに達した。
- ほぼ同じプロンプトを用いながら、カバレッジ情報、算出された import、ツール関数、対話の継続を 取り除いた LLM のみのアブレーション版は、CM で全体 34%、モジュールごとの中央値 39% の行+分岐 カバレッジにとどまった。著者らはこれを、CoverUp の性能が LLM だけによるものではないことを示すもの と受け止めている。
- 成功したテストの約 40% は対話の継続から得られた。成功の 60.3% は最初のプロンプトの後、27.2% は 2 回目、12.5% は 3 回目の後であった。
- エラー修正を取り除くとさまざまなカバレッジ指標で 14〜37%、コードのコンテキストを取り除くと 7〜16%、カバレッジ情報を取り除くと最大 2% 低下した。カバレッジ情報なしのプロンプトは 50% 以上多い テスト関数(7,366 に対して 11,222)を生成し、実行を重ねるごとにカバレッジを改善するものは次第に 少なくなっていった。
- CM において CoverUp は CodaMosa(GPT-4o)より約 18 倍速く — 71 時間に対して 4 時間 — 実行された 一方、使用トークンは約 48% 多かった。著者らは、CoverUp が並列かつ非同期であるのに対し、CodaMosa は 逐次的で、モジュールごとに設定可能な 10 分間実行される点に注意を促している。
補足
著者らは CoverUp を、他のいくつかの LLM ベースのテスト生成器と並行して開発されたもので、2023 年 8 月に 初めて GitHub に公開されたと説明し、カバレッジが不足しているセグメントに基づいてプロンプトを与える点と、 テストが失敗するかカバレッジを改善しない場合に対話を続ける点で、先行する LLM のアプローチと区別して いる。SymPrompt とは、その実装と正確なベンチマークのサブセットが公開されていないため、大まかにしか 比較できなかった。挙げられている妥当性への脅威には、ベンチマークの選定、CodaMosa の元の環境で不足 していた前提モジュール(その条件を再現するため意図的にインストールしないままにした)、そして LLM が プロンプトに従う能力への依存が含まれる。著者らはまた、CodaMosa の GPT-4o 版が元の Codex 版をわずかに 下回ったことを観察し、これを新しいモデルが必ずしも良い性能を示すわけではない証拠と受け止めている。 再現パッケージとツール自体は公開されている。