Skip to content
Latchkey

Code Coverageレポートとは?

code coverageレポートは、テストが実際にコードをどれだけ実行するかを、行ごと、branchごとに測定します。

通過するテストは何がチェックされたかを教えてくれますが、何が見落とされたかは教えてくれません。カバレッジのインストルメンテーションは、テスト実行中にどの行とbranchが実行されたかを記録してレポートを生成し、コードベースの未テストの箇所を確認できるようにします。

カバレッジの収集方法

カバレッジツールはコード(またはそのbytecode)をインストルメントし、テスト実行中にどの行とbranchが実行されるかを記録して、レポートを出力します - 多くの場合、ツールが消費できるLCOVやCoberturaのような標準形式です。

数値の意味

  • 行カバレッジ: 実行された実行可能行の割合。
  • branchカバレッジ: 通過した分岐branchの割合。
  • 関数カバレッジ: 呼び出された関数の割合。

小さな例

if/else を持つ関数は、テストが一度実行すれば行カバレッジ100%を示しますが、else を実行するテストがなければbranchカバレッジは50%にすぎません。branchカバレッジは、行カバレッジの数値がひそかに隠していた経路を明らかにします。

カバレッジの限界

高いカバレッジはコードが実行されたことを意味し、正しくアサートされたことを意味しません。テストは結果を検証せずに行を実行できます。カバレッジは有用な下限でありリグレッションのシグナルですが、品質の証明ではありません。

ゲートとしてのカバレッジ

チームはしばしばカバレッジをゲートにします - しかしレガシーなコードベースでの一律の「80%」はごまかしを招きます。変更された行のカバレッジ(「未テストのコードを追加しない」)をゲートにする方が、通常はより誠実で実行可能な基準です。

重要なポイント

  • カバレッジはテストが実際に実行するコードを測定します。
  • 行、branch、関数のカバレッジは、それぞれ異なる問いに答えます。
  • カバレッジは何が実行されたかを示すもので、正しくアサートされたかは示しません。

関連ガイド