ブラックボックステストとホワイトボックステストの違いとは何か?内容と用途を解説

2021年1月6日

ブラックボックステスト、ホワイトボックステストの概要

ブラックボックステストホワイトボックステストは、それぞれシステム開発におけるテストの種類です。
システム開発プロジェクトは、ただ開発をするのみでは完成しません。開発した後、「仕様書どおりに動くか」、「求めた要件を満たしているか」、「品質は確保されているか」を確認して、初めてプロダクトとして完成します。
このようにシステムにとってテストは不可欠な存在です。

ブラックボックステストは、システムの入力と出力の正しさに着目したテストです。
プログラムの内容には注目せず、「入力した数値に対し想定どおりの出力がされたか」のみテストを行います。
内部のプログラムに対する知識が必要ないため、開発に関わっていない第三者でも実行可能なテストです。

ホワイトボックステストは、システム内部のプログラムの動きに対するテストです。
プログラムの構造、ロジック、制御の流れなどについて検証を行うもので、プログラム知識だけでなく、システムに対する理解が必須となります。そのためホワイトボックステストは主に開発者によって実行されます。

ブラックボックステスト、ホワイトボックステストは何故必要なのか?

入出力のみに注目するブラックボックステストは、ユーザー視点で行われるテストとも言えます。
さらに開発者でない第三者がテストした場合、テストの視点が多角的になり、より精度の高いシステムとして仕上げることが可能です。
また、「ユーザーが見やすいか」、「使いやすいか」というユーザーインターフェース(UI)、ユーザーエクスペリエンス(UX)もブラックボックステストで確認を行うことがあります。
よりユーザーにとって快適なシステムとするために、ブラックボックステストは重要です。

しかしプログラムの内部を確認しないため、ブラックボックステストの結果が順調であっても、プログラム内にバグが存在している可能性があります。
それに対し、内部構造を網羅するようにテストを行うのがホワイトボックステストです。ホワイトボックステストでは潜在的なバグを見つけやすくなっています。
ホワイトボックステストには、プログラム全体のうちどれくらいをテストできたかという「網羅率」という指標があります。この網羅率は、システムの安全性の指標としても役立ちます。
しかし網羅率を高くするほどテストの工数が大きくなりやすいため、「テストでどの程度の網羅率を目指すか」はホワイトボックステストにおいて重要なポイントです。

ブラックボックステスト、ホワイトボックステストはどういうときに使われるのか

ブラックボックステストとホワイトボックステストが活用される場面のイメージ
ブラックボックステストとホワイトボックステストが活用される場面

システム開発のテストには、単体テスト結合テスト総合テストなどの種類がありますが、ホワイトボックステストは単体テストで、ブラックボックステストは結合テスト以降で実施されることがほとんどです。

多くのシステムは、複数のプログラムの部品(モジュール)を組み合わせることで出来上がります。
プログラム内部を網羅するホワイトボックステストは、そのプログラムの部品をテストする単体テストで扱われることが多いです。
単体テストでは、作成したプログラム単体についてテストを行います。プログラムの詳細を確認しやすいため、ホワイトボックステストを行うタイミングとして最適です。

結合テストは複数のプログラムを同時に稼働させて行うテストで、単体のプログラムで行う単体テストよりもさらに内容が複雑になります。そして総合テストでは、システムが期待したとおりに動くかどうかの最終的なテストを行います。
結合テストや総合テストのように複雑なテストほど、内部構造の把握よりも、ユーザー視点での確認を重視したブラックボックステストが活用されます。

これまで見てきたとおり、ブラックボックステスト・ホワイトボックステストともにメリット・デメリットが存在します。
両者のメリットに注目し、バランスよく取り入れるのが重要です。

参考