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

2021年1月6日

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

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

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

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

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

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

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

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

システム開発のテストには、単体テスト結合テスト総合テストなどの種類がありますが、ブラックボックステストは、システムのテスト工程において結合テスト以降で実施されるテストで多く扱われます。
ほとんどのシステムは、複数のプログラムを組み合わせることで出来上がります。結合テストは複数のプログラムを同時に稼働させて行うテストで、単体のプログラムで行う単体テストよりもさらに内容が複雑になります。複雑なテストほど、ブラックボックステストが活用されやすいと言えるでしょう。

プログラム内部を網羅するホワイトボックステストは、単体テストで扱われることが多いです。
単体テストでは、作成したプログラム単体についてテストを行います。プログラムの詳細を確認しやすいため、ホワイトボックステストを行うタイミングとして最適です。

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

参考