シカラボ

ブラックボックステストとホワイトボックステストの違い|中を見るかどうか【ITパスポート】

シカラボ編集部
ブラックボックステストとホワイトボックステストの違い|中を見るかどうか【ITパスポート】

たとえば、自動販売機がちゃんと動くかを確かめたいとします。お金を入れてボタンを押し、押した商品が出てくるか見る。中の配線は知らなくてかまいません。もうひとつ、フタを開けて内部の配線を見ながら、それぞれのスイッチや経路が想定どおり働くかを確かめるやり方もあります。ソフトウェアのテストにも、この2つの見方があります。

ブラックボックステストとは

ブラックボックステストとは、プログラムの入力と出力に着目してテストする技法です。

プログラムの入力と出力に着目してテストする。

(出典:ITパスポート試験 令和4年 問45)

もっと詳しい説明も出題されています。

入力と出力だけに着目して様々な入力に対して仕様書どおりの出力が得られるかどうかを確認していく、システムの内部構造とは無関係に外部から見た機能について検証するテスト方法はどれか。

(出典:ITパスポート試験 平成21年春期 問42)

正解はブラックボックステストです。

大事なのは「システムの内部構造とは無関係に」という部分です。中がどう書かれていようと、入れたものに対して正しいものが出てくるかだけを見る。まずはここを押さえておきましょう。シラバス上はマネジメント系の「システム開発技術」に含まれます。

ホワイトボックステストとは

反対に、中を開けて見るのがホワイトボックステストです。平成24年秋期の問46が、そのまま定義を書いています。

プログラムの品質を検証するために、プログラム内部のプログラム構造を分析し、テストケースを設定するテスト手法はどれか。

(出典:ITパスポート試験 平成24年秋期 問46)

正解はホワイトボックステストでした。

ブラックボックステストは入力と出力だけを見て、ホワイトボックステストはプログラムの内部構造を見るという違いの図

「ブラック」は中が見えない箱、「ホワイト」は中が透けて見える箱。そう考えてみてください。

テストケースの作り方が違う

見るところが違えば、用意するテストデータの選び方も変わります。ここも見ていきましょう。

ブラックボックステストのテストケースの作り方は、平成26年春期の問35が正解にしています。

正常ケースやエラーケースなど、起こり得る事象を幾つかのグループに分けて、各グループが1回は実行されるようにテストデータを選ぶ。

(出典:ITパスポート試験 平成26年春期 問35)

いっぽうホワイトボックステストは、平成25年春期の問37が「プログラムの全ての分岐経路を少なくとも1回実行するようにテストケースを作成する」を正解としています。

どちらの技法にも作り方はいくつもあり、下の表は過去問で実際に問われた代表例です。

ブラックボックステストホワイトボックステスト
見るところ入力と出力プログラムの内部構造
テストケースの作り方(過去問の代表例)起こり得る事象をグループに分け、各グループが1回は実行されるようにする全ての分岐経路を少なくとも1回実行するようにする
数える対象入出力のパターン命令や分岐といった経路
過去問で問われたテストケースの作り方を、ブラックボックス側とホワイトボックス側に振り分けた図

覚え方は「分岐と命令が出てきたらホワイトボックス」です。平成26年春期の問35でも、誤答として「全ての分岐が少なくとも1回」「全ての命令が少なくとも1回」が並びました。どちらもホワイトボックス側の考え方なので、ブラックボックスの問題では誤りになります。

逆のことも起きます。平成25年春期の問37では、「人の体重を入力するテストで、上限値を300 kg、下限値を500 gと設定してテストケースを作成する」が誤答に置かれました。入力値の境目に着目する作り方で、外から見る側の発想に近いものです。ただし、この問題がそう分類しているわけではありません。

どの工程で使うのか

平成30年秋期の問44は、内部構造に着目する技法がホワイトボックステストであり、それが単体テストで活用される、という組合せを正解にしました。

ブラックボックス/ホワイトボックスはテストケースの作り方の分類、単体テスト・結合テスト・システムテストはどの段階でテストするかの分類になります。この過去問が示しているのは相性のよい組合せであって、単体テストで必ずホワイトボックスを使うという意味ではありません。軸が2本あると押さえておきましょう。

段階のほうも過去問が説明しています。プログラムをつないだところを見る結合テストは、平成22年春期の問34がこう書きました。

プログラム間のインタフェースが整合していることを確認する。

(出典:ITパスポート試験 平成22年春期 問34)

小さい単位ごとに確かめるのが単体テスト、つないだ先を確かめるのが結合テストです。

試験ではこう出る

テストケースの作り方は、さきほど見た問題のようにそのまま選択肢になります。それ以外によく出るのが、場面から技法を選ばせる形と、技法とテストの段階を混ぜてくる形の2つです。まずは場面からどうぞ。

腕試し問題

出典:ITパスポート試験 平成26年秋期 問44

システムテストに参加するAさんは、自部門の主要な取引について、端末からの入力項目と帳票の出力項目を検証用に準備した。Aさんが実施しようとしているテスト技法はどれか。

解答と解説

解説(解答せずに開けます)

正解はウです。

「端末からの入力項目と帳票の出力項目」を用意した、とあります。入力と出力だけが出てきているので、ブラックボックステストです。

  • ❌ ア「インスペクション」→ 決められた手順で成果物の欠陥を見つける、正式なレビューの技法です
  • ❌ イ「ウォークスルー」→ 参加者が成果物をたどりながら確認する、レビューの技法です
  • ❌ エ「ホワイトボックステスト」→ 内部構造を見る場合です

もう1問、技法とテストの段階を混ぜてきた形も解いてみましょう。

腕試し問題

出典:ITパスポート試験 平成23年秋期 問44

システム開発において、システムテストで検証する内容として、適切なものはどれか。

解答と解説

解説(解答せずに開けます)

正解はイです。

聞かれているのは技法ではなく、テストの段階のほうです。この問題では、端末から行う照会処理の応答時間という、システム全体の性能を確認するイが適切です。

  • ❌ ア「個々のプログラム間のインタフェースの整合性を検証する」→ さきほど引用した結合テストの説明です
  • ❌ ウ「プログラムに記述された全ての命令を少なくとも1回実行し」→ 個々のプログラム内部の命令を確認する内容です
  • ❌ エ「プログラムの分岐条件をホワイトボックステストによって検証する」→ こちらも個々のプログラム内部の分岐を確認する内容です

アはプログラムをつないだところ、ウ・エは個々のプログラムの内部を見ています。この問題では、システム全体の性能を確認するイが適切です。単体テストを聞かれた設問は別で、平成22年春期の問47は「ロジックの網羅性も含めてプログラムをテストする」を正解にしました。

まとめ

  • ブラックボックステストは、プログラムの入力と出力に着目してテストする技法
  • ホワイトボックステストは、プログラム内部の構造を分析してテストケースを設定する技法
  • テストケースの作り方の代表例は、ブラックボックスが起こり得る事象をグループに分けて各グループ1回
  • ホワイトボックスの代表例は全ての分岐経路を少なくとも1回(命令や分岐条件を網羅する作り方も過去問に登場)
  • 「分岐」「命令」が出てきたらホワイトボックス側
  • 技法(ブラック/ホワイト)とテストの段階(単体・結合・システム)は別の軸

設問が内部構造を見ていると書いているか、入力と出力だけを見ていると書いているか。まずそこを探してみてください。どちらとも書いていなければ、別の分類の用語が答えかもしれません。

この記事のタグ

関連記事