最終更新日:2026年9月8日
fe fe-technology software-testing quality
まず結論
ホワイトボックステストの網羅基準では、プログラム内部のどこまでをテストできたかを確認します。
基本情報技術者試験では、まず次の5種類を切り分けられるようにすると強いです。
すべての命令を少なくとも1回実行
→ 命令網羅
判定結果を真・偽の両方にする
→ 判定条件網羅
判定式の中の各条件を真・偽の両方にする
→ 条件網羅
判定結果と各条件の両方を真・偽にする
→ 判定条件・条件網羅
各条件の真偽の全組合せを試す
→ 複数条件網羅
試験中は、「何を全部確認するテストなのか」を見るのがコツです。
命令
→ 命令網羅
判定の Yes / No
→ 判定条件網羅
判定式の中の各条件
→ 条件網羅
判定結果 + 各条件
→ 判定条件・条件網羅
条件の全組合せ
→ 複数条件網羅
直感的な説明
例えば、次の判定があるとします。
A OR B
ここには、見る場所が2つあります。
A OR B 全体の結果
→ 真 / 偽
A と B それぞれ
→ 真 / 偽
判定条件網羅では、A OR B 全体が真になるケースと偽になるケースを通します。
条件網羅では、AとBがそれぞれ真・偽になるようにします。
つまり、
判定条件網羅
→ 判定式「全体」を見る
条件網羅
→ 判定式の「中身」を見る
と考えると分かりやすいです。
さらに、両方を同時に満たすのが 判定条件・条件網羅、条件の真偽の全組合せを試すのが 複数条件網羅 です。
定義・仕組み
ホワイトボックステストは、プログラム内部の構造やロジックを意識して行うテストです。
代表的な網羅基準を順に見ていきます。
命令網羅
命令網羅は、プログラム中のすべての命令を少なくとも1回は実行する考え方です。
例えば、
if 条件:
命令A
else:
命令B
なら、命令Aと命令Bの両方を一度は実行できるようにします。
ポイントは、命令を全部通すことが目的であり、判定条件そのものを細かく調べることが目的ではない点です。
判定条件網羅
判定条件網羅は、判定結果が真と偽の両方になるようにする考え方です。
例えば、
if A OR B:
命令
なら、
A OR B = 真
A OR B = 偽
の両方を通します。
「分岐網羅」や「判定網羅」と呼ばれることもあります。
条件網羅
条件網羅は、判定式を構成する個々の条件が、それぞれ真と偽を少なくとも1回ずつ取るようにする考え方です。
例えば A OR B なら、
A = 真
A = 偽
B = 真
B = 偽
が必要です。
ただし、条件網羅を満たしても、判定式全体が真・偽の両方になるとは限りません。
判定条件・条件網羅
判定条件・条件網羅は、判定結果の真・偽と、個々の条件の真・偽の両方を満たす考え方です。
つまり、
判定条件網羅
+
条件網羅
を同時に満たします。
「判定全体も確認し、判定式の中身も確認する」と覚えると整理しやすいです。
複数条件網羅
複数条件網羅は、個々の条件の真偽の組合せをすべて試す考え方です。
AとBの2条件なら、
A=偽, B=偽
A=偽, B=真
A=真, B=偽
A=真, B=真
の4通りをすべて試します。
条件が増えるほど、必要なテストケース数も急増します。
科目Aでどう出る?
科目Aでは、流れ図や条件式を見て、最小で何個のテストケースが必要かを問われることがあります。
命令網羅の最小ケース数を考える
例えば、次のように独立した2つの判定があるとします。
if a = 0:
x = 1
else:
x = 2
if b = 0:
y = 1
else:
y = 2
命令網羅では、
x = 1
x = 2
y = 1
y = 2
をすべて少なくとも1回実行できればよいです。
例えば、次の2ケースで足ります。
ケース1:a = 0, b = 0
→ x = 1, y = 1
ケース2:a ≠ 0, b ≠ 0
→ x = 2, y = 2
したがって、この例で命令網羅に必要な最小テストケース数は 2個 です。
ここで大事なのは、分岐の組合せをすべて試す必要はないことです。
(a=0, b=0)
(a=0, b≠0)
(a≠0, b=0)
(a≠0, b≠0)
の4通りすべてを試す必要はありません。
命令網羅は「すべての命令を通せたか」だけを見るからです。
OR条件で違いを見る
判定式が、
A OR B
なら、真理値表は次のとおりです。
| A | B | A OR B |
|---|---|---|
| 偽 | 偽 | 偽 |
| 偽 | 真 | 真 |
| 真 | 偽 | 真 |
| 真 | 真 | 真 |
判定条件網羅
判定式全体の真・偽を両方通します。
例えば、
A=偽, B=偽
→ 偽
A=真, B=真
→ 真
の2ケースで満たせます。
条件網羅
AとBそれぞれを真・偽にします。
例えば、
A=偽, B=真
A=真, B=偽
なら、AもBも真・偽を取ります。
しかし、判定結果はどちらも真です。
偽 OR 真 = 真
真 OR 偽 = 真
つまり、条件網羅を満たしても判定条件網羅を満たさない場合があります。
判定条件・条件網羅
判定結果の真・偽と、A・Bそれぞれの真・偽を両方満たす必要があります。
例えば、
A=偽, B=偽
A=真, B=真
なら、
判定結果
→ 偽と真
A
→ 偽と真
B
→ 偽と真
となり、両方を満たします。
複数条件網羅
AとBの全組合せを試します。
偽・偽
偽・真
真・偽
真・真
の4ケースが必要です。
複数の分岐が続く問題の見方
流れ図に複数の分岐がある場合は、各判定を別々に確認してから、必要な網羅条件を重ね合わせると整理しやすくなります。
例えば、次のような2つの判定が続くとします。
判定1:A OR B
判定2:C
分岐網羅と条件網羅の両方を満たしたいなら、次の順番で確認します。
① 判定1全体が真・偽の両方になるか
② 判定2が真・偽の両方になるか
③ Aが真・偽の両方になるか
④ Bが真・偽の両方になるか
つまり、
各分岐の Yes / No
→ 分岐網羅
複合条件の中の各条件の真 / 偽
→ 条件網羅
両方を満たす
→ 判定条件・条件網羅を満たすテストケース候補
と考えます。
表にして確認する
テストケースが複数あるときは、頭の中だけで追わず、次のような表を作ると判断しやすくなります。
| ケース | A | B | A OR B | C |
|---|---|---|---|---|
| 1 | 真 | 偽 | 真 | 真 |
| 2 | 偽 | 真 | 真 | 偽 |
| 3 | 偽 | 偽 | 偽 | 真 |
この例では、
A OR Bは真・偽の両方Cは真・偽の両方Aは真・偽の両方Bは真・偽の両方
となります。
したがって、分岐網羅と条件網羅の両方を満たしています。
試験中は、
分岐全体の真偽と、複合条件の中身の真偽を別々にチェックする
と考えるのがポイントです。
どんな場面で使う?
ホワイトボックステストの網羅基準は、プログラム内部のロジックをどこまでテストしたかを確認するときに使います。
例えば、
- すべての命令を実行したか
- if文の真・偽を両方試したか
- 複合条件の各条件を真・偽にしたか
- 条件の組合せを十分に確認したか
などをチェックします。
網羅度を高めるほど見落としを減らしやすくなりますが、必要なテストケース数も増えます。
よくある誤解・混同
「網羅」は1種類だけ?
違います。
「全部テストする」と言っても、何を全部確認するかで基準が変わります。
命令を全部
→ 命令網羅
判定結果を全部
→ 判定条件網羅
各条件の真・偽を全部
→ 条件網羅
判定結果と各条件を両方
→ 判定条件・条件網羅
条件の組合せを全部
→ 複数条件網羅
命令網羅なら全経路を通す?
通す必要はありません。
命令網羅の目的は、各命令が少なくとも1回実行されることです。
分岐の組合せや全経路をすべて確認することとは別です。
条件網羅ができれば判定条件網羅もできる?
必ずしもできません。
A OR B で、
A=偽, B=真
A=真, B=偽
なら、AとBはそれぞれ真・偽になりますが、判定結果はどちらも真です。
したがって、条件網羅は満たしても判定条件網羅は満たしません。
判定条件網羅では全組合せが必要?
必要ありません。
全組合せを試すのは複数条件網羅です。
確認問題(基本情報技術者試験対策)
次の処理について、命令網羅を満たすために必要なテストケースの最小数はいくつか。
if a = 0:
x = 1
else:
x = 2
if b = 0:
y = 1
else:
y = 2
- ア. 1
- イ. 2
- ウ. 3
- エ. 4
▶ クリックして答えと解説を見る(ここを開く)
正解:イ(2)
例えば、
a = 0, b = 0
→ x = 1, y = 1
a ≠ 0, b ≠ 0
→ x = 2, y = 2
の2ケースを実行すれば、4つの命令をすべて少なくとも1回実行できます。
命令網羅では、aとbの真偽の4通りをすべて試す必要はありません。
まとめ(試験直前用)
- 命令網羅:すべての命令を少なくとも1回実行
- 判定条件網羅:判定式全体を真・偽の両方にする
- 条件網羅:個々の条件を真・偽の両方にする
- 判定条件・条件網羅:判定結果と個々の条件の両方を真・偽にする
- 複数条件網羅:条件の真偽の全組合せを試す
- 複数の分岐があるときは、各判定の真偽と、複合条件の各条件の真偽を別々に確認する
- 「何を全部確認するのか」で網羅基準を切り分ける
- 命令網羅では、全経路や全組合せを通す必要はない