Skip to main content
QUICK REVIEW

[論文レビュー] CoverUp: Effective High Coverage Test Generation for Python

Juan Altmayer Pizzorno, Emery D. Berger|arXiv (Cornell University)|Mar 24, 2024
Software Testing and Debugging Techniques被引用数 6
ひとこと要約

CoverUp はカバレッジ分析と LLM 主導のテスト生成を組み合わせて、高カバレッジの Python 回帰テストを作成し、測定されたカバレッジに基づいてプロンプトを反復的に改善します。

ABSTRACT

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 challenging. This paper proposes CoverUp, a novel approach to driving the generation of high-coverage Python regression tests. CoverUp combines coverage analysis, code context, and feedback in prompts that iteratively guide the LLM to generate tests that improve line and branch coverage. 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- and LLM-based test generator, CoverUp achieves an overall line+branch coverage of 89% (vs. 77%). We also demonstrate that CoverUp's performance stems not only from the LLM used but from the combined effectiveness of its components.

研究の動機と目的

  • 従来の方法を超えて、Python プログラムの回帰テストのカバレッジを向上させることを目的とする。
  • カバレッジ分析がLLMベースのテスト生成を導くフィードバックループを開発する。
  • CoverUp を従来の最先端技術(CodaMosa)と比較評価し、反復的対話の価値を分析する。
  • 統合チェックや flaky テストを含む、LLM ベースのテスト生成の実務的な課題に対処する。

提案手法

  • SlipCover で現在のテストカバレッジを測定し、カバレッジが不足しているコードセグメントを特定する。
  • 不足しているカバレッジを含むコードを要約した抜粋に分割し、LLM のプロンプトの文脈を提供する。
  • 各欠落セグメントのテストを生成するようLLM(GPT-4 Turbo)にプロンプトを掛け、未カバーの行/分岐を強調する。
  • 生成されたテストを実行し、カバレッジを測定し、問題を修正するためまたはカバレッジを改善するために対話を継続する。
  • フルスイートを実行して統合チェックを行い、必要に応じて失敗するテストを無効化するか原因を切り分ける。
  • 欠落したモジュール、フレークテスト、非同期プロンプティングなどの実務的な問題に対処して生成を迅速化する。

実験結果

リサーチクエスチョン

  • RQ1RQ1: CoverUp のカバレッジは従来の最先端(CodaMosa codex および gpt4)とどう比較されるか?
  • RQ2RQ2: CoverUp のカバレッジは、最先端の LLM(GPT-4)を使用する CodaMosa とどう比較されるか?
  • RQ3RQ3: CoverUp の継続的な対話はカバレッジをどれだけ効果的に高めるか?

主な発見

  • CoverUp は CodaMosa (codex) より高いモジュールの中央値カバレッジを達成: line 81% vs 62%、branch 53% vs 35%、line+branch 78% vs 55%。
  • 全コード全体で、CoverUp は line カバレッジを 54% から 61%、branch カバレッジを 34% から 43%、line+branch を 49% から 57% に向上させる。
  • CoverUp は CodaMosa (gpt4) よりも全体のスイートとモジュール別分析の両方で高いカバレッジを示す。
  • PY ベンチマークスイートでは、CoverUp は全体およびすべての指標の中央値カバレッジでほぼほぼ 100% に近づく。
  • 約 42.9% の成功は反復的なプロンプトによって達成され、最大で 3 回のプロンプトを考慮すると 49.2% に上昇し、継続的な対話の価値を強調している。
  • CoverUp は Pynguin が初期に全カバレッジを達成したコードでも高い性能を示し、難しいモジュールを超えた堅牢性を示している。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。