【かばれっじ】

カバレッジ とは?

最終更新:
💡 テストで通った場所と、まだ通っていない場所を知る

テストなどでコードのどの部分が実行されたかを測る指標。実行された行や分岐の割合を確認し、未実行の箇所を探す。指標によって数える対象が異なり、100%でも結果の正しさや不具合がないことを保証しない。

📌 このページのポイント
カバレッジ:まだ通っていない場所を探す測定対象の実行可能な行:8行12345678✓ 6行を実行2行は未実行6 ÷ 8 × 100 = 75%未実行の場所を調べよう分岐も、結果の検証も確認実行したことと、正しさを確かめたことは違うよ
行カバレッジの計算例。番号は測定対象の行を表します。75%を合格基準としている図ではありません。
ひよこ ひよこ
カバレッジが75%って、どういう意味?
ペンギン先生 ペンギン先生
何を数えるかによるよ。測定対象となる実行可能な行が8行で、そのうち6行をテストで通ったなら、行カバレッジの例として75%だね。コメントや空行を含むファイル全体の長さではない。ツールの指標と、対象や除外の設定も確認しよう。
ひよこ ひよこ
行を全部通れば、条件分岐も十分?
ペンギン先生 ペンギン先生
そうとは限らないよ。ifの条件が真の場合だけで、各行を通れても、偽の場合の経路が未実行のことがある。Coverage.pyは、ある行から進む先を調べる分岐の測定にも対応している。行と分岐では、見つけられる不足が違うんだ。
ひよこ ひよこ
100%なら、バグはない?
ペンギン先生 ペンギン先生
実行されたことを示すだけで、結果が正しかったかまでは示さないよ。間違った計算をしていても、期待する値と照合していなければ見逃す。境界の値や異常な入力、必要な結果を検証するテストも大切だね。数値だけで合格にしないでね。
ひよこ ひよこ
何%以上を目指せばよいの?
ペンギン先生 ペンギン先生
すべての製品に共通する正解はないよ。Googleのテスト資料も、業務への影響、変更の頻度、複雑さなどに合わせて考えるとしている。重要な処理の未実行箇所を見つけ、許容できるリスクか判断しよう。一律に80%なら安全とは言えないんだ。
ひよこ ひよこ
数字を上げる以外に、どう使う?
ペンギン先生 ペンギン先生
未実行の行や経路を見て、「このケースの確認が必要では?」と考える材料にしよう。ユニットテストだけでなく、結合テストなどの情報も役立つ。どのテストで通ったかと、何を確かめたかを合わせて見ると、追加すべきテストを選びやすくなるよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「カバレッジ」って出てきたら「テストでコードのどこまで通ったかを表す指標」と思えばだいたいOK!
📖 おまけ:英語の意味
「Coverage」 = 覆う範囲・網羅の度合い
💬 このページではコードのテストカバレッジを扱うよ。行や分岐など、数える対象によって割合は変わるんだ。

参考資料

← 用語集にもどる