Adaptive Test Generation Using a Large Language Model

要約

単体テストは、ソフトウェアの正確性を保証する上で重要な役割を果たします。
ただし、単体テストを手動で作成するのは骨の折れる作業であり、自動化の必要性を引き起こします。
このホワイト ペーパーでは、Large Language Models (LLM) を活用した適応型テスト生成手法である TestPilot について説明します。
TestPilot は、市販の LLM である Codex を使用して、追加のトレーニングや既存のテストの例での数回の学習を必要とせずに、特定のプログラムの単体テストを自動的に生成します。
私たちのアプローチでは、Codex には、ドキュメントから抽出された使用例とともに、テス​​ト中の関数の署名と実装を含むプロンプトが提供されます。
生成されたテストが失敗した場合、TestPilot の適応コンポーネントは、失敗したテストとエラー メッセージでモデルを再プロンプトすることにより、問題を修正する新しいテストを生成しようとします。
JavaScript 用の TestPilot の実装を作成し、テストを生成するために合計 1,684 の API 関数を使用して 25 個の npm パッケージで評価しました。
私たちの結果は、生成されたテストが最大 93.1% のステートメント カバレッジ (中央値 68.2%) を達成することを示しています。
さらに、平均して、生成されたテストの 58.5% には、テスト対象のパッケージの機能を実行するアサーションが少なくとも 1 つ含まれています。
プロンプトに含まれる情報の一部を除外した実験では、すべてのコンポーネントが効果的なテスト スイートの生成に貢献することがわかりました。
最後に、TestPilot は記憶されたテストを生成しないことがわかりました: 生成されたテストの 92.7% は既存のテストと $\leq$ 50% の類似性を持ち (正規化された編集距離で測定)、正確なコピーはありません。

要約(オリジナル)

Unit tests play a key role in ensuring the correctness of software. However, manually creating unit tests is a laborious task, motivating the need for automation. This paper presents TestPilot, an adaptive test generation technique that leverages Large Language Models (LLMs). TestPilot uses Codex, an off-the-shelf LLM, to automatically generate unit tests for a given program without requiring additional training or few-shot learning on examples of existing tests. In our approach, Codex is provided with prompts that include the signature and implementation of a function under test, along with usage examples extracted from documentation. If a generated test fails, TestPilot’s adaptive component attempts to generate a new test that fixes the problem by re-prompting the model with the failing test and error message. We created an implementation of TestPilot for JavaScript and evaluated it on 25 npm packages with a total of 1,684 API functions to generate tests for. Our results show that the generated tests achieve up to 93.1% statement coverage (median 68.2%). Moreover, on average, 58.5% of the generated tests contain at least one assertion that exercises functionality from the package under test. Our experiments with excluding parts of the information included in the prompts show that all components contribute towards the generation of effective test suites. Finally, we find that TestPilot does not generate memorized tests: 92.7% of our generated tests have $\leq$ 50% similarity with existing tests (as measured by normalized edit distance), with none of them being exact copies.

arxiv情報

著者 Max Schäfer,Sarah Nadi,Aryaz Eghbali,Frank Tip
発行日 2023-02-20 09:22:50+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.SE パーマリンク