最終更新日:2026年9月10日
fe fe-technology programming
まず結論
ブラックボックステストとは、プログラムの内部処理や内部構造を見ずに、機能仕様や入出力仕様をもとにテストケースを設計する方法です。
基本情報技術者試験では、次の切り分けを最初に覚えておくと選択肢を判断しやすくなります。
ブラックボックステスト
→ 外から見る
→ 機能・入力・出力・仕様に注目
ホワイトボックステスト
→ 中を見る
→ 処理手順・分岐・内部構造に注目
迷ったら、「そのテストケースを作るためにプログラムの中身を見る必要があるか?」を考えます。
中身を見ず、仕様をもとに設計できるなら、ブラックボックステストと判断できます。
両者を横並びで整理したい場合は、ブラックボックステストとホワイトボックステストの違い を先に確認すると、選択肢を切る判断軸をつかみやすくなります。
直感的な説明
ブラックボックステストは、中身が見えない自動販売機を外から試すイメージです。
例えば、自動販売機の中の配線や制御プログラムは見ません。
見るのは、次のような外から分かる動きです。
- 正しい金額を入れたら商品が出るか
- 金額が足りないときは購入できないか
- 売り切れの商品を選んだときに購入できないか
- おつりが正しく返るか
このように、ブラックボックステストでは 内部でどんな処理をしているか ではなく、
この入力を与えたら、仕様どおりの出力になるか
に注目します。
定義・仕組み
ブラックボックステストは、システムやプログラムの内部構造をテストケース設計の基準にせず、外部から見える機能に注目して行うテストです。
テストケースは、主に次のような情報をもとに設計します。
| 見るもの | ブラックボックステストでの役割 |
|---|---|
| 機能仕様 | どの入力に対して、どの出力になるべきかを確認する |
| インタフェース仕様 | 画面、API、入出力項目などの外から見える仕様を確認する |
| 入力値の範囲 | 正常値、異常値、境界値を決める |
| 期待結果 | 出力、エラー表示、処理結果が仕様どおりかを確認する |
例えば、年齢を入力するシステムについて、仕様が次のようになっているとします。
入力可能な年齢:0~120歳
ブラックボックステストでは、ソースコードを読むのではなく、この仕様からテストケースを考えます。
| 入力値 | 確認したいこと |
|---|---|
| 30 | 正常な範囲の値を受け付けるか |
| 0 | 下限値を受け付けるか |
| 120 | 上限値を受け付けるか |
| -1 | 範囲外として処理されるか |
| 121 | 範囲外として処理されるか |
このように、仕様から代表的な入力を選び、その出力が正しいか確認するのが基本です。
代表的なブラックボックステストの手法
FE試験では、代表的なテストケース設計手法も整理しておくと判断しやすくなります。
| 手法 | 何を見る? | 覚え方 |
|---|---|---|
| 同値分割 | 同じように扱われる入力のグループ | 入力をグループに分ける |
| 限界値分析 | 有効・無効の境目 | 境界の直前・境界・直後を見る |
| デシジョンテーブル | 条件の組合せと結果 | 条件を表で整理する |
| 原因結果グラフ | 入力条件と出力結果の関係 | 原因と結果の組合せを見る |
| エラー推測 | 経験から起こりそうな誤り | 間違いそうなところを狙う |
特に、同値分割と限界値分析はセットで整理すると覚えやすくなります。
同値分割
入力値を、同じような結果になるグループに分け、その中から代表値を選びます。
先ほどの 0~120歳 なら、例えば次のように分けられます。
0未満 → 無効なグループ
0~120 → 有効なグループ
121以上 → 無効なグループ
すべての値を試すのではなく、各グループから代表値を選ぶ考え方です。
限界値分析
不具合は、入力範囲の境界付近で起こりやすいため、その周辺を重点的に確認します。
0~120歳 なら、
-1, 0, 1
119, 120, 121
のように境界付近を確認します。
このテーマは、基本情報技術者試験のシステム開発技術やプログラムのテストと関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、テストケースの設計方法を説明した選択肢から、ブラックボックステストに当てはまるものを判断する問題があります。
そのときは、文章の中で何を基準にテストケースを作っているかを確認します。
ブラックボックステストと判断しやすい言葉
次のような言葉が中心なら、ブラックボックステストを疑います。
- 機能仕様
- インタフェース仕様
- 入力と出力
- 入力範囲
- 同値分割
- 限界値分析
一方、次のような言葉が出てきたら、ホワイトボックステストの可能性が高くなります。
- プログラム内部の構造
- 処理手順
- 分岐
- 条件式
- 命令を実行したか
- 経路を通ったか
- 命令や分岐の網羅率
- ソースコードを参照する
試験中は、次のように考えると切り分けやすくなります。
仕様を見る?
→ ブラックボックス
内部構造を見る?
→ ホワイトボックス
大切なのは、テストを実施する時期ではなく、何を基準にテストケースを設計しているかです。
また、選択肢に「冗長なコード」「実行されないコード」「不要な処理」などが出てきた場合も注意します。これらを直接見つけるにはプログラム内部を見る必要があるため、ブラックボックステストだけでは検出しにくい問題です。
選択肢を切る順番
似た説明が並んだときは、次の順番で見ると判断しやすくなります。
1. 機能仕様・インタフェース仕様が基準か?
→ ブラックボックスの候補
2. ソースコード・内部構造・処理手順を見るか?
→ ホワイトボックス
3. 条件式の真・偽や分岐経路を通すことが基準か?
→ ホワイトボックスの網羅基準
4. テストデータ数の根拠が、分岐数やモジュール数など内部構造か?
→ ホワイトボックス側
5. 「コーディング後」「テスト工程」など実施時期だけを説明していないか?
→ それだけでは判定できない
特に、「仕様書」という言葉だけでブラックボックスと決めないことが重要です。
仕様書と一緒にソースコードや内部構造も参照してテストケースを作る説明なら、ブラックボックステストの特徴とはいえません。
また、すべての条件判定について真と偽の両方を実行させるような説明は、外部仕様ではなくプログラム内部の分岐を基準にしているため、ホワイトボックステスト側です。
科目Bでどう使う?
科目Bでは、プログラムのテストやデバッグを考える場面で、仕様から必要なテストケースを読み取る考え方が役立ちます。
例えば、次の仕様があるとします。
入力 x が 1~100 のときだけ処理を行う。
それ以外はエラーとする。
この場合、まず仕様から境界を見つけます。
下限:1
上限:100
次に、その前後を含めて確認します。
0, 1, 2
99, 100, 101
ここで重要なのは、プログラム内部の if 文がどう書かれているかを推測することではありません。
仕様に対して、どの入力を試せば正常・異常の境界を確認できるかを考えます。
科目Bでテストケースを読むときは、次の順番で整理すると分かりやすくなります。
- 入力条件を確認する
- 正常な範囲と異常な範囲を分ける
- 境界値を見つける
- 境界の前後をテストする
- 期待する出力と実際の結果を比較する
よくある誤解・混同
誤解1:プログラム完成後に行うテストがブラックボックステスト
ブラックボックステストかどうかは、いつ実施するかだけでは決まりません。
判断するポイントは、テストケースを設計するときに何を見るかです。
機能仕様・入出力仕様を見る
→ ブラックボックステスト
内部構造・処理手順を見る
→ ホワイトボックステスト
したがって、「コーディングが終わった後だからブラックボックス」とは判断できません。
誤解2:条件判定をテストするならブラックボックステスト
「条件」という言葉だけでは判断できません。
例えば、入力できる値の範囲を仕様から確認するならブラックボックステストです。
一方で、プログラム内部の条件式について、真側と偽側の分岐を通るか確認するならホワイトボックステストです。
この違いは、判定条件網羅(分岐網羅)とは? と比べると整理しやすくなります。
| ブラックボックステスト | ホワイトボックステスト |
|---|---|
| 外部仕様を見る | 内部構造を見る |
| 入力と出力に注目 | 処理手順や分岐に注目 |
| 同値分割・限界値分析など | 命令網羅・分岐網羅など |
誤解3:すべての入力値を試す
ブラックボックステストは、すべての入力を総当たりで試すという意味ではありません。
入力できる値が非常に多い場合、すべてを試すのは現実的ではありません。
そこで、同値分割で代表値を選んだり、限界値分析で境界付近を重点的に確認したりします。
誤解4:ブラックボックステストなら内部の無駄なコードも見つけられる
ブラックボックステストでは、プログラム内部の構造そのものを確認しません。
そのため、
- 冗長なコード
- 実行されないコード
- 不要な処理
などが内部に残っていても、外から見た入出力が仕様どおりなら、それ自体を直接検出できないことがあります。
こうした内部構造上の問題を確認するには、ソースコードや命令・分岐などに着目するホワイトボックステスト側の考え方が必要です。
違いで迷ったら、ブラックボックステストとホワイトボックステストの違い で判断基準を横並びに確認できます。
ブラックボックステストを理解したら、次に ホワイトボックステストとは? を読むと、「外から見るテスト」と「中を見るテスト」の違いをつなげて学べます。
まとめ(試験直前用)
- ブラックボックステストは、内部構造を見ず、機能仕様や入出力仕様をもとにテストする
- 「仕様・入力・出力」が中心ならブラックボックスを疑う
- 「内部構造・処理手順・分岐・網羅率」が中心ならホワイトボックスを疑う
- 冗長コードや実行されないコードの検出は、ブラックボックステストだけでは難しい
- 同値分割は 入力をグループ分け、限界値分析は 境界付近を確認する
- 迷ったら「テストケースを作るためにプログラムの中身を見る必要があるか?」で判断する