ブラックボックステストとは
ブラックボックステストとは、プログラムの内部構造やソースコードの中身は一切気にせず、システムの「入力(インプット)」と「出力(アウトプット)」の関係だけに注目して、仕様書通りに正しく動作するかを検証するテスト手法です。中身が見えない「黒い箱」に例えてこう呼ばれます。
このテストでは、「このようなデータを入力したら、仕様書通りにこの結果が返ってくるはずだ」という観点で検証します。テストデータの選び方には、以下のような代表的な設計手法があります。
- 同値分割:入力値を「同じ結果が得られるグループ」に分類し、各グループから代表値を1つ選んでテストする。
- 限界値分析:グループの境界線となる値(ギリギリの値)を入力して、正しく判定されるかをテストする(バグが最も発生しやすいため)。
システムの仕様を満たしているかを確認するため、主に結合テストやシステムテスト、受入れテストで広く使われます。
具体例
「0点から100点までの点数を入力し、60点以上が合格、59点以下が不合格」となる採点システムをテストする場合です。
- 同値分割のテスト例:合格グループ(60〜100)の代表値「80点」、不合格グループ(0〜59)の代表値「30点」を入力し、それぞれ合格・不合格と出力されるか確認する。
- 限界値分析のテスト例:合格と不合格の境界線である「59点」と「60点」を入力し、59点が不合格、60点が合格と正しく判別されるかを確認する。
もう少し詳しく
ブラックボックステストは、プログラムのソースコードを一切見ず、システムの仕様書(要件定義書や外部設計書)に基づいて、「何を入力したときに、期待通りの出力が得られるか」を確認するテスト手法です。システムを中身が見えない「黒い箱」として扱い、機能が仕様通りに動くかをテストするため、結合テストやシステムテストのフェーズで広く採用されます。
このテストでテストケースを効率的に作成するための代表的な設計技法として、以下の2つがあります。
- 同値分割(Equivalence Partitioning): 入力データの範囲を、システムが「同じように処理する(同じ結果になる)」グループ(同値クラス)に分割します。各クラスから代表的な値を1つ選んでテストを行います。例えば、「1〜100」が有効な入力の場合、「有効値のグループ(例:50)」「無効値のグループ(例:150や -10)」の代表値で検証します。これにより、テストケースの数を劇的に削減できます。
- 限界値分析(境界値分析:Boundary Value Analysis): バグが発生しやすい「データの境界(限界値)」に焦点を当てる手法です。先の例(1〜100)であれば、境界となる「0、1、100、101」といった値をテストデータに選びます。「未満」や「以下」などのプログラムの不等号ミスを検出するのに極めて有効です。
試験でのポイント
試験では、ブラックボックステストの設計技法である「同値分割」と「限界値分析(境界値分析)」の概念や、具体的な入力値の選び方について非常に高い確率で出題されます。
例えば、「年齢入力欄(18歳以上が大人)」におけるテスト値として、同値分割で選ぶべき値や、境界値分析で選ぶべき値(17歳と18歳)は何かを問う問題が一般的です。また、「プログラムの内部構造を考慮しないテストであること」や、外部設計に対応する「結合テスト」や「システムテスト」のフェーズで多く用いられるという特徴についても出題されます。
関連する用語
関連する用語には、入力をグループ分けして代表値を選ぶ「同値分割」,入力の境目の値を検証する「限界値分析(境界値分析)」,およびプログラムの内部構造を検証する「ホワイトボックステスト」があります。