【こーどかばれっじ】

コードカバレッジ とは?

💡 テストの「網羅率」を数値化する
📌 このページのポイント
コードカバレッジのイメージ ソースコード 1 function calc(a, b) { 2 const sum = a + b; 3 if (sum > 100) { 4 return "over"; 5 } else { 6 return sum; 7 }} カバレッジ 85.7% 実行済み: 6行 / 7行 未実行: 1行(4行目) 分岐カバレッジ: 50% テスト実行済み テスト未実行
コードカバレッジ:テストでどれだけのコードが実行されたかの割合
ひよこ ひよこ

C0、C1、C2の違いは?

ペンギン先生 ペンギン先生

C0(命令網羅)はすべての行を1回以上実行したか。C1(分岐網羅)はif文のtrue/falseの両方を通ったか。C2(条件網羅)は複合条件(A && B)の各部分の真偽を全組み合わせ通ったか。C0→C1→C2の順で厳密になるけど、実務ではC1(分岐網羅)を目標にすることが多いよ

ひよこ ひよこ

カバレッジ100%を目指すべき?

ペンギン先生 ペンギン先生

一般的には推奨しない。100%を目指すと、テスト効果の薄いコード(getterやsetterなど)にもテストを書く必要があり、コストに見合わない。80%程度をベースラインにして、重要なビジネスロジック部分は高カバレッジUIやインフラコードは低くてもOK、というメリハリが実用的だよ

ひよこ ひよこ

カバレッジが高いのにバグが出るのはなぜ?

ペンギン先生 ペンギン先生

カバレッジは「コードを通過したか」だけを測っていて「正しく検証したか」は見ていないから。アサーション(assert)のないテストでもカバレッジは上がる。境界値テスト、異常系テスト、結合部分のテストなど「テストの質」が伴わないと、カバレッジだけ高くても意味がないんだよ

ひよこ ひよこ

IPA試験での出題パターンは?

ペンギン先生 ペンギン先生

「命令網羅を達成するテストケース数は?」「判定条件網羅を達成するには最低何ケース必要か?」というパターンが超頻出。フローチャートif文の条件を見て、全分岐を通るテストケースを設計する問題だね。C0は全命令を1回通ればいい、C1は全分岐の真偽を通る、この違いを理解しておこう

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コードカバレッジ」って出てきたら「テストがコードをどれだけ網羅しているかの指標」と思えればだいたいOK!
📖 おまけ:英語の意味
「Code Coverage」 = コード網羅率
💬 Coverage(網羅・カバー範囲)。テストの「カバー率」を数値で見える化するよ
← 用語集にもどる