---
title: "ホワイトボックステストとは？内部構造を見て処理経路を確認する方法【基本情報技術者試験】"
description: "ホワイトボックステストを「プログラムの内部構造を見て、処理経路や条件判定を確認するテスト」として整理し、ブラックボックステストとの違いとFE試験で選択肢を切る判断基準を解説します。"
last_modified_at: "2026-06-25"
canonical_url: "https://stemtazoo.github.io/fe/white-box-testing/"
section: "fe"
---

## まず結論

ホワイトボックステストとは、**プログラムの内部構造を見て、処理経路や条件判定が正しく実行されるかを確認するテスト**です。

基本情報技術者試験では、ホワイトボックステストは **ソースコード、ロジック、処理経路、条件判定に基づいてテストケースを作る方法** と覚えると判断しやすいです。

逆に、機能仕様やインタフェース仕様だけに基づいて、入力と出力を確認する説明は、ホワイトボックステストではなくブラックボックステスト寄りです。

## 直感的な説明

ホワイトボックステストは、**中身が見える機械を、内部の動きまで確認しながら試す**イメージです。

例えば、自動販売機をテストするとします。

ブラックボックステストでは、外から見える動きだけを確認します。

- お金を入れる
- ボタンを押す
- 商品が出る
- おつりが返る

一方で、ホワイトボックステストでは、内部の処理も見ます。

- お金を判定する処理を通ったか
- 売り切れ判定の分岐を通ったか
- 商品を出す処理が実行されたか
- おつり計算の条件分岐が正しく動いたか

つまり、ホワイトボックステストでは、**結果だけでなく、そこに至る処理の通り道** を確認します。

## 定義・仕組み

ホワイトボックステストは、プログラムの内部構造や処理手順に注目して行うテストです。

テストケースは、主に次のような情報をもとに設計します。

| 見るもの | ホワイトボックステストでの役割 |
|---|---|
| ソースコード | 実際の処理内容を確認する |
| 処理手順 | どの順番で処理が進むかを確認する |
| 分岐条件 | if文などの条件判定を確認する |
| 処理経路 | どの経路を通って処理が進むかを確認する |
| 繰返し処理 | ループの開始・終了・回数を確認する |

ホワイトボックステストでは、内部構造を見て、どの処理を少なくとも1回通すかを考えます。

代表的な考え方には、次のようなものがあります。

| 観点 | 見るポイント |
|---|---|
| 命令網羅 | すべての命令を少なくとも1回実行する |
| 判定条件網羅 | 条件判定の真と偽を確認する |
| 条件網羅 | 複数条件のそれぞれの真偽を確認する |
| 経路網羅 | 可能な処理経路を確認する |

このテーマは、基本情報技術者試験の「ソフトウェア開発」や「テスト」に関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、ホワイトボックステストとブラックボックステストの違いがよく問われます。

判断するときは、**テストケースを何に基づいて設計しているか** を見ます。

| 説明に出てくる言葉 | 判断 |
|---|---|
| ソースコードに基づく | ホワイトボックステスト |
| 処理手順に基づく | ホワイトボックステスト |
| ロジック経路に基づく | ホワイトボックステスト |
| 条件判定の真偽を確認する | ホワイトボックステスト |
| 機能仕様に基づく | ブラックボックステスト |
| インタフェース仕様に基づく | ブラックボックステスト |
| 入力と出力に注目する | ブラックボックステスト |

例えば、次のような説明はホワイトボックステストです。

```text
プログラムの処理手順やロジック経路を確認し，
条件判定の真偽が実行されるようにテストケースを設計する。
```

この説明は、外から見える仕様ではなく、内部の処理構造に基づいています。

一方で、次のような説明はブラックボックステスト寄りです。

```text
プログラムの機能仕様やインタフェース仕様に基づいて，
入力値と期待結果を決め，テストケースを設計する。
```

この説明は、内部処理ではなく、外から見える機能に基づいています。

科目Aでは、**ロジック・経路・条件ならホワイトボックス、仕様・入力・出力ならブラックボックス** と考えると選択肢を切りやすいです。

## 科目Bでどう使う？

科目Bでは、ホワイトボックステストの考え方は、擬似言語を読むときにも役立ちます。

特に、if文や繰返し処理がある問題では、どの条件でどの処理を通るかを追う必要があります。

例えば、次のような処理を考えます。

```text
if score >= 60
    result = "合格"
else
    result = "不合格"
```

ホワイトボックステストの考え方では、条件判定の真と偽を確認します。

| 入力 | 条件 `score >= 60` | 通る処理 |
|---:|---|---|
| 60 | 真 | 合格を設定する処理 |
| 59 | 偽 | 不合格を設定する処理 |

このように、内部の条件分岐を見て、**真の場合と偽の場合の両方を通るか** を確認します。

科目Bでプログラムを読むときは、次の順で整理すると分かりやすいです。

1. 条件式を確認する
2. 条件が真のときに通る処理を見る
3. 条件が偽のときに通る処理を見る
4. それぞれの処理で変数がどう変わるかを追う

ホワイトボックステストは、単に用語として覚えるだけでなく、**分岐やループを見て処理経路を追う考え方** として使えます。

## よくある誤解・混同

ホワイトボックステストで一番混同しやすいのは、ブラックボックステストです。

| テスト | 見るもの | 判断の合図 |
|---|---|---|
| ホワイトボックステスト | 内部の処理構造 | ソースコード、ロジック、経路、条件判定 |
| ブラックボックステスト | 外から見える機能 | 入力、出力、仕様、インタフェース |

ホワイトボックステストは、「白い画面でテストする」という意味ではありません。

ホワイトボックスという言葉は、**中身が見える箱** というイメージです。  
内部構造を見てテストするため、ホワイトボックステストと呼ばれます。

また、ホワイトボックステストは「開発者だけが行うテスト」と覚えすぎない方が安全です。

FE試験では、誰が実施するかよりも、**何に基づいてテストケースを設計しているか** が重要です。

- ソースコードや処理経路に基づくなら、ホワイトボックステスト
- 機能仕様やインタフェース仕様に基づくなら、ブラックボックステスト

この切り分けを優先します。

## まとめ（試験直前用）

- ホワイトボックステストは、内部構造を見て処理経路を確認するテスト
- テストケースは、ソースコード、ロジック、条件判定に基づいて作る
- 「ソース」「ロジック」「経路」「条件判定」が出たらホワイトボックステストを疑う
- 「仕様」「入力」「出力」が出たらブラックボックステストを疑う
- 実施者や時期ではなく、何に基づいてテストケースを設計するかで判断する
