こんにちは!
今回は、プログラムのテスト技法(ホワイトボックステスト)の中でよく登場する
- 命令網羅(ステートメントカバレッジ)
- 条件網羅(コンディションカバレッジ)
- 判定条件網羅(ディシジョン/コンディションカバレッジ)
- 複数条件網羅(Multiple Condition Coverage)
の4つについて、図や例とともにやさしく紹介していきます。
🔍 そもそも「網羅」って?
「網羅(カバレッジ)」とは、テストケースがどれだけコードのパターンをカバーしているかを示す考え方です。
テストの抜け漏れを防ぎ、バグの発見率を高めるために重要です。
① 命令網羅(ステートメント網羅)
✔ 定義
すべての命令(文)を最低1回は実行するようにテストケースを作成する。
✔ イメージ図
if (x > 0) { System.out.println("正の数"); } System.out.println("処理終了");
→ この場合、x > 0
のテストだけでは System.out.println("正の数")
が実行されない可能性があります。
x = 1、x = -1 のようなケースを作ることで、全命令が網羅されます。
② 条件網羅(コンディション網羅)
✔ 定義
すべての条件式の真(true)と偽(false)の両方を一度ずつ実行する。
✔ 例
if (a > 0 && b > 0) { System.out.println("OK"); }
この条件式には2つの部分条件(a > 0
と b > 0
)があります。
それぞれに対して true/false 両方の結果を得るテストが必要です。
a | b | a>0 | b>0 |
---|---|---|---|
1 | 1 | T | T |
-1 | 1 | F | T |
1 | -1 | T | F |
→ これで両方の条件を網羅できます。
③ 判定条件網羅(判定網羅+条件網羅の組み合わせ)
✔ 定義
- 判定結果(if文などの最終的な分岐)がtrueとfalseを両方実行
- かつ、すべての条件もtrue/falseの両方を実行
つまり、判定式全体の動きと、構成する各条件の動きの両方を確認する網羅です。
✔ 例
if (a > 0 && b > 0) { // 判定部分 }
- 判定全体:true/false
- a > 0:true/false
- b > 0:true/false
→ 最低3パターンほど必要になります。
④ 複数条件網羅(Multiple Condition Coverage)
✔ 定義
条件内のすべての部分条件の組合せをすべて網羅する方式。
→ 最も厳密でテストケース数が多くなる。
✔ 例(aとbの2条件)
if (a > 0 && b > 0) { // 実行されるか }
必要な組合せ:
a > 0 | b > 0 | 判定結果 |
---|---|---|
T | T | T |
T | F | F |
F | T | F |
F | F | F |
→ 4通りのすべてを確認。
条件が3つになると 2³=8通り、4つなら 16通りと増えるため、
複雑すぎるコードに対しては現実的でない場合も。
✅ まとめ表
網羅種類 | 概要 | テスト数 | 特徴 |
---|---|---|---|
命令網羅 | すべての命令を1回以上実行する | 少ない | 最低限のテスト |
条件網羅 | 各条件をtrue/falseで1回ずつ評価 | 中 | 条件の動作をチェック |
判定条件網羅 | 条件・判定どちらもtrue/falseをカバー | やや多い | 品質と効率のバランス |
複数条件網羅 | 条件のすべての組合せをテスト | 多い | 網羅性は最強、数も多い |
🧠 試験対策ポイント
- 命令網羅:一番シンプル。命令が実行されるか
- 条件網羅:各条件のtrue/falseを確認
- 判定条件網羅:条件も判定も両方チェック
- 複数条件網羅:すべての組合せ。テストパターンが爆増する
「効率 vs 網羅性」の違いが問われることもあるので、それぞれの特徴を整理しておきましょう!
✍️ 最後にひとこと
ソフトウェア開発において、テストの品質はプロダクトの品質に直結します。
これらの網羅基準は、開発現場でも頻出なので、試験勉強だけでなく実務でも役立つ知識です!
ぜひ、コードを書きながら「これはどの網羅が必要かな?」と考えてみてくださいね。
それでは、次回もお楽しみに!🧪