ホワイトボックステスト(white box testing)
- テクノロジ系
- システム開発技術
- 基本情報
- 応用情報
- 重要度 ★★★★☆
内部の処理の通り道に着目し、命令や分岐をどれだけ通したかを基準に確かめるテスト。
もう少し詳しい説明
ホワイトボックステストは、プログラムの中身を見ながら行うテストです。
中が見える白い箱として扱い、処理の通り道を確かめます。「どの命令を通ったか」「どの分岐に入ったか」を数え、通っていない場所が残らないようにテストデータを決めます。
中を読む必要があるので、作った本人や、プログラムを読める人が行います。使われるのは主に、部品1つずつを確かめる単体テストです。
どこまで通せば十分か:網羅の基準
「全部通した」と言うにも、どこまでを全部と呼ぶかで厳しさが変わります。基準は4つあり、名前と内容の対応がそのまま問われます。
次のような処理で考えます。
もし(A かつ B)ならば、処理X を行う
A と B が、それぞれ真か偽かで場合分けされます。
| 基準 | 通すもの | この例でのテスト |
|---|---|---|
| 命令網羅 | すべての命令 | (真, 真) の1件 |
| 判定条件網羅(分岐網羅) | 判定式全体の真と偽 | (真, 真) と (真, 偽) の2件 |
| 条件網羅 | 個々の条件の真と偽 | (真, 偽) と (偽, 真) の2件 |
| 複数条件網羅 | 条件のすべての組合せ | 4件すべて |
命令網羅は、処理Xさえ1回通ればよいので (真, 真) の1件で足ります。ただしこれでは、条件が成り立たなかったときにどうなるかをまったく確かめていません。
条件網羅の落とし穴
ここが応用情報でよく突かれます。
条件網羅は「A も B も、真と偽の両方を取る」という基準です。上の (真, 偽) と (偽, 真) はこれを満たします。ところがこの2件、判定式(A かつ B)はどちらも偽です。
つまり、処理Xを1度も通らないまま条件網羅を満たせてしまいます。
条件網羅を満たしても、判定条件網羅を満たすとは限らない。 名前が似ていて、しかも直感に反するので、ここだけは文として覚えてしまうのが確実です。
ブラックボックステストとの違い
| ホワイトボックステスト | ブラックボックステスト | |
|---|---|---|
| 見るもの | プログラムの中身 | 仕様書(入力と出力) |
| 確かめること | 命令や分岐を通したか | 仕様どおりに動くか |
| 主に使う場面 | 単体テスト | システムテスト・受入テスト |
| 行う人 | プログラムを読める人 | 仕様書が読めれば行える |
このテストで見つからないもの
弱点がはっきりしています。書かれていない処理は、テストのしようがありません。
仕様書にある機能を作り忘れていても、ホワイトボックステストは既にあるプログラムを通るだけなので、気づけません。すべての分岐を通り、網羅率100%であっても、そもそも足りていない機能は見つからないということです。
だから両方を使います。中の通り道はホワイトボックス、仕様との突き合わせはブラックボックス、という役割分担です。
覚え方:「判定」は式全体、「条件」は部品
4つの基準は、名前に答えが入っています。
- 命令網羅 … 命令を通す
- 判定条件網羅 … 判定式(全体)の真と偽を通す
- 条件網羅 … 個々の条件(部品)の真と偽を取る
- 複数条件網羅 … 条件の組合せを全部通す
迷ったら、「判定」と付いていれば式全体の話、「条件」だけなら部品の話と読み分けてください。そのうえで「条件網羅を満たしても、判定条件網羅を満たすとは限らない」を足せば、出題される範囲は押さえられます。
なお、必ず満たさない、という意味ではありません。条件網羅を満たす組の選び方によっては、判定条件網羅も満たします。たとえば (真, 真) と (偽, 偽) の2件は、A も B も真偽の両方を取り、判定式も真と偽の両方になります。「含まない」と丸暗記すると、この形で出されたときに誤ります。
試験ではこう出る
科目A(旧・午前)の開発技術分野で頻出です。多いのは、網羅基準の名前と説明を結び付けさせる問題と、ブラックボックステストと並べてどちらの説明かを判断させる問題です。応用情報では、具体的なプログラムと条件を示し、ある網羅基準を満たすために必要なテストケースの数や組合せを答えさせる形で出ます。
計算させる問題では、A と B の真偽を表にして書き出すのが確実です。4通りを縦に並べ、それぞれで判定式がどうなるかを埋めれば、どの基準を満たすかは数えるだけになります。頭の中で追うと、条件網羅と判定条件網羅のところで必ず取り違えます。
関連する用語
- ブラックボックステスト
- 中を見ず、入力と出力だけで確かめるテスト。見る場所が正反対で、対にして問われる
- 命令網羅・判定条件網羅
- 網羅の基準。すべての命令を通すのが命令網羅、判定式の真と偽を通すのが判定条件網羅
- 条件網羅・複数条件網羅
- 個々の条件に着目した基準。条件網羅は、満たしても判定条件網羅を満たさないことがある
- 単体テスト
- 部品1つずつを確かめるテスト。ホワイトボックステストは主にここで使う
- 要件定義
- 何を作るかを決める工程。ここで決めた機能そのものの抜けは、このテストでは見つからない
ミニクイズ
ホワイトボックステストの網羅基準のうち、判定条件網羅(分岐網羅)の説明として、最も適切なものはどれか。
正解は 3番:判定式の結果が真になる場合と偽になる場合を、それぞれ少なくとも1回は通す
判定条件網羅は分岐網羅とも呼ばれ、判定式全体の結果に着目して、真の場合と偽の場合の両方を通す基準です。「すべての命令を実行する」は命令網羅で、これより緩い基準になります。「個々の条件が真と偽を取る」は条件網羅で、着目する対象が判定式全体ではなく個々の条件である点が異なります。条件網羅は判定条件網羅より厳しそうに見えますが、そうとは限りません。「すべての組合せを実行する」は複数条件網羅で、4つの中で最も厳しい基準です。
最終更新:2026-09-18