【てすとかばれっじきじゅん】

テストカバレッジ基準 とは?

💡 テストの「穴」がどこにあるか、数字で見える化する物差し
📌 このページのポイント
テストカバレッジ基準 — C0 / C1 / C2 if (a > 0 && b > 0) x = a + b; else x = 0; return x; C0: 命令網羅 すべての命令文を1回以上実行する 基本 C1: 分岐網羅 if文のtrue/false両方を通過する 推奨 C2: 条件網羅 各条件(a>0, b>0)の真偽を網羅する 厳密 厳密さ ↓ 注意: カバレッジ100% ≠ バグゼロ 通過しただけで正しく検証(assert)していないテストもカバレッジに含まれる
テストカバレッジ基準のイメージ
ひよこ ひよこ

コードカバレッジとテストカバレッジ基準って同じものなの?

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

コードカバレッジは「ソースコードの網羅率」を指すことが多いけど、テストカバレッジ基準はもっと広い概念だよ。要件カバレッジやリスクカバレッジなど、コード以外の網羅率も含むんだ

ひよこ ひよこ

C0、C1、C2って何なの?

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

C0は命令網羅で「すべての行を通ったか」、C1は分岐網羅で「if文のtrue/falseを両方通ったか」、C2は条件網羅で「複合条件の各部分の真偽を網羅したか」だよ。数字が大きいほど厳密なんだ

ひよこ ひよこ

どのレベルを目指せばいいの?

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

一般的なWebサービスならC1(分岐網羅)80%以上が現実的な目標だよ。安全性が重要なシステム(航空、医療)ではMC/DC(修正条件判定網羅)が求められることもあるんだ

ひよこ ひよこ

カバレッジ100%ならバグなしって言えるの?

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

残念ながら言えないよ。カバレッジは「通過したか」だけで「正しく検証したか」は分からないからね。assert文がないテストでも通過すればカバレッジは上がる。ミューテーションテストと組み合わせると本当の品質が見えてくるよ

ひよこ ひよこ

ツールはどんなものがあるの?

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

JavaならJaCoCo、JavaScriptならIstanbul(nyc)、PythonならCoverage.py、GoやRustは標準で組み込まれているよ。CIに組み込んでプルリクエストごとにカバレッジを計測し、下がったら警告を出す運用が定番だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストカバレッジ基準」って出てきたら「テストがコードや仕様をどれだけ網羅しているかを測る物差し」と思えればだいたいOK!
📖 おまけ:英語の意味
「Test Coverage Criteria」 = テスト網羅基準
💬 coverageは「カバー範囲」、criteriaは「基準(複数形)」だよ。テストの守備範囲を測る物差しという意味だね
← 用語集にもどる