CoverUp: Coverage-Guided LLM-Based Test Generation

要約

テストはソフトウェア開発において不可欠な部分です。
テスト生成ツールは、テスト作成という労働集約的なタスクを自動化しようとしていますが、カバレッジの高いテストを生成することは依然として課題です。
このペーパーでは、高カバレッジの Python 回帰テストの生成を推進する新しいアプローチである CoverUp を提案します。
CoverUp はテスト カバレッジを反復的に改善し、LLM とのダイアログをカバレッジ分析に挟み込み、ラインと分岐のカバレッジを高めるようにテストを調整します。
私たちは、オープンソースの Python プロジェクトから派生した挑戦的なコードのベンチマークにわたってプロトタイプの CoverUp 実装を評価し、CoverUp が最先端技術を大幅に改善していることを示しました。
ハイブリッド検索/LLM ベースのテスト ジェネレーターである CodaMosa と比較すると、CoverUp はモジュールごとの中央線 + ブランチ カバレッジ 80% (対 47%) を達成しています。
ミューテーション/LLM ベースのテスト ジェネレーターである MuTAP と比較して、CoverUp は全体のライン + ブランチ カバレッジ 90% (対 77%) を達成しています。
CoverUp の反復的で報道に基づいたアプローチがその有効性にとって極めて重要であり、成功の 40% 近くに貢献していることを示しています。

要約(オリジナル)

Testing is an essential part of software development. Test generation tools attempt to automate the otherwise labor-intensive task of test creation, but generating high-coverage tests remains a challenge. This paper proposes CoverUp, a novel approach to driving the generation of high-coverage Python regression tests. CoverUp iteratively improves test coverage, interleaving coverage analysis with dialogs with the LLM that steer it to refine tests so that they increase coverage of lines and branches. We evaluate our prototype CoverUp implementation across a benchmark of challenging code derived from open-source Python projects, and show that CoverUp substantially improves on the state of the art. Compared to CodaMosa, a hybrid search/LLM-based test generator, CoverUp achieves a per-module median line+branch coverage of 80% (vs. 47%). Compared to MuTAP, a mutation/LLM-based test generator, CoverUp achieves an overall line+branch coverage of 90% (vs. 77%). We show that CoverUp’s iterative, coverage-guided approach is crucial to its effectiveness, contributing to nearly 40% of its successes.

arxiv情報

著者 Juan Altmayer Pizzorno,Emery D. Berger
発行日 2024-09-13 15:45:10+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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