🐙
【初学者向け】C0 / C1 / C2 カバレッジとは?

☁️はじめに
現場で「カバレッジ」という言葉が出てきたけど、いまいちピンとこない。
プログラムを書いたとき、「ちゃんとテストできているか?」 を確認する方法のひとつを カバレッジ(網羅率) といいます。
この記事では、基本的な C0 / C1 / C2 カバレッジ を初心者向けにわかりやすく解説します。
💡カバレッジとは
カバレッジとは、テストでコードがどのくらい実行されたかを数値化した指標 です。
「何割のコードをテストで通したか?」を測るイメージです。
代表的な種類は次の3つです。
- C0(命令網羅 / Statement coverage)
- C1(分岐網羅 / Branch coverage)
- C2(条件網羅 / Condition coverage)
C0(命令網羅)
- すべての命令文が最低1回は実行されているか を確認する指標。
- if文があっても、どちらか一方の経路を通ればカバーされたとみなされます。
python
def check(num):
if num > 0:
print("positive")
else:
print("negative")
例えば num=1 で実行すれば、すべての命令文(printを含む)が一度は実行されるため C0 は達成されます。
補足:C0は「すべての命令文を1回以上実行」すればよいため、else が未検証のままでも100%になる可能性があります。
C1(分岐網羅)
- if文やswitch文など、すべての分岐を通ったか を確認する指標。
上の例なら num=1 と num=-1 をテストして、ifとelse両方の分岐を通す必要があります。
C0より網羅性が高く、実務ではよく使われます。
C2(条件網羅)
- 複数条件を含む式の、それぞれの条件がTrue/Falseをとったか を確認する指標。
python
def check(num):
if num > 0 and num % 2 == 0:
print("positive even")
この場合、条件は2つあります。
- num > 0
- num % 2 == 0
C2を満たすには、それぞれが True と False を一度以上とる ようにテストする必要があります。
例:
- num=2 → True / True
- num=-2 → False / True
- num=1 → True / False
これでC2はクリアです。
補足:C2は「各条件がTrue/Falseを一度以上とる」ことを保証しますが、条件の組み合わせをすべて網羅するわけではありません。
例えば、本来4パターン(TT, TF, FT, FF)ありますが、C2を満たすにはそのうち3パターンで十分です。FF(A=False, B=False)は なくても条件網羅としては成立 するということです。
📈まとめ表
| カバレッジ | 意味 | 例 |
|---|---|---|
| C0(命令網羅) | 全ての命令文を1回以上実行 | if文で片方だけ通ってもOK |
| C1(分岐網羅) | 全ての分岐を実行 | if/else両方を通す |
| C2(条件網羅) | 条件式のTrue/Falseを網羅 | 各条件がTrue/Falseをとる |
✅まとめ
- C0 : 命令をすべて実行したか
- C1 : 分岐をすべて通ったか
- C2 : 条件ごとにTrue/Falseを試したか
Discussion