Code Coverageレポートとは?
code coverageレポートは、テストが実際にコードをどれだけ実行するかを、行ごと、branchごとに測定します。
通過するテストは何がチェックされたかを教えてくれますが、何が見落とされたかは教えてくれません。カバレッジのインストルメンテーションは、テスト実行中にどの行とbranchが実行されたかを記録してレポートを生成し、コードベースの未テストの箇所を確認できるようにします。
カバレッジの収集方法
カバレッジツールはコード(またはそのbytecode)をインストルメントし、テスト実行中にどの行とbranchが実行されるかを記録して、レポートを出力します - 多くの場合、ツールが消費できるLCOVやCoberturaのような標準形式です。
数値の意味
- 行カバレッジ: 実行された実行可能行の割合。
- branchカバレッジ: 通過した分岐branchの割合。
- 関数カバレッジ: 呼び出された関数の割合。
小さな例
if/else を持つ関数は、テストが一度実行すれば行カバレッジ100%を示しますが、else を実行するテストがなければbranchカバレッジは50%にすぎません。branchカバレッジは、行カバレッジの数値がひそかに隠していた経路を明らかにします。
カバレッジの限界
高いカバレッジはコードが実行されたことを意味し、正しくアサートされたことを意味しません。テストは結果を検証せずに行を実行できます。カバレッジは有用な下限でありリグレッションのシグナルですが、品質の証明ではありません。
ゲートとしてのカバレッジ
チームはしばしばカバレッジをゲートにします - しかしレガシーなコードベースでの一律の「80%」はごまかしを招きます。変更された行のカバレッジ(「未テストのコードを追加しない」)をゲートにする方が、通常はより誠実で実行可能な基準です。
重要なポイント
- カバレッジはテストが実際に実行するコードを測定します。
- 行、branch、関数のカバレッジは、それぞれ異なる問いに答えます。
- カバレッジは何が実行されたかを示すもので、正しくアサートされたかは示しません。
関連ガイド
What Is a JUnit Report?A JUnit report is a standard XML format for test results that almost every CI tool understands. Learn what it…
What Is a Test Report?A test report summarizes a test run - totals, failures, durations, and flakiness - in a readable form. Learn…
What Is a Quality Gate?A quality gate is a pass/fail condition that blocks a change from merging unless it meets defined thresholds.…