ホワイトボックステストとブラックボックステストの違い

IT-Skills

システム開発ステップで最重要部分であるテスト技法について解説します。

「テスト」と一口に言っても、単体テスト、結合テスト、総合テスト、業務検証テスト、受入テスト、運用テスト等、テストには実に様々な種類が存在しています。

テストの目的に応じて使い分ける必要があるのですが、それらを更に大雑把にわけると「ホワイトボックステスト」と「ブラックボックステスト」という2つに分類することができます。

このページでは、ホワイトボックステストとブラックボックステストとは何か?

その両者の違いを、IT初心者目線から解説します。

テストの原則・ルールについての大前提が知りたい方はこちらをご覧ください。

スポンサーリンク
スポンサーリンク

ホワイトボックステストとブラックボックステスト

システムテストには実に様々な呼び方がありますが、ホワイトボックステストとブラックボックステストというのは抽象度が高い呼び方である、ということを前提として理解する必要があります。

つまり、犬とか猫とかパンダとかをまとめて「哺乳類」と呼称するような呼び方で、ホワイトボックステスト/ブラックボックステストという呼び方が使われるということです。

現場によって、単体テスト・結合テスト・受入テスト・パフォーマンステストなど細かい分類のされ方がありますが、それらはホワイトボックステストかブラックボックステストに大きくグループ化できる―。ひとつ抽象度が高い呼称であることを理解ください。

一般的には単体テストは「ホワイトボックステスト」であり、結合テストやそのほかのテストは「ブラックボックステスト」に分類されていきます。

どういうことか、ここから本題に入ります。

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

理解しやすい、ブラックボックステストから解説します。

ブラックボックステストとは、一言で言えば「プログラムの仕組みを無視して行うテストのこと」です。

言い換えると「プログラミングができない人・デバッグができない人でもできるテスト」です。

どういうことか。架空の「経理システム」を例に、イメージしてみます。

あるシステム開発ベンダーが経理システムを構築しており、本番リリースに向け、テストを行う必要があるとします。

その際、

「Aというデータを入力したときに、想定通りAが帳票に書き込まれるか」

「Aという操作をした時に、Aというデータを表示することができるか」

「Bを入れた時には、想定通り入力できないようになっているか」

といった、システムを利用する側からの検証―。これがブラックボックステストとなります。

仕様適合可否判断が目的

システムを利用する側からの検証、つまり「システムが要件通り仕様を満たしているかどうかを検証する」ということです。

財務諸表をだすことができるかどうか?権限の制御がしっかりできているかどうか?

これらをテストする際に、プログラムは意識する必要がありません。あくまでも仕様書を照らして、できること、できないことがちゃんとその通りになっているかどうか―。

この検証を行うのが「ブラックボックステスト」の目的なのです。仕様適合可否の判断が目的であるため、プログラムを知っている必要はないのです。

プログラムを意識しないため、テストの方法とデータのパターンを用意しておけば、実際の業務ユーザでもテストはできますし、入社すぐのエンジニアでも作業が可能です。

※このため、実際の現場でブラックボックステストを行うのは、年次が浅い人が中心となることが多いようです。

ブラックボックステストは、システムの中身を意識せずにインプットとアウトプットが正常であることのみを判断する技法です。

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

では、ホワイトボックステストとは何でしょうか?

答えは「プログラムを意識したテスト」です。

先ほどの経理システムの例を用いて考えてみます。

ブラックボックステストでは、「 Aというデータを入力したときに、想定通りAが帳票に書き込まれるか 」を検証しましたが、ホワイトボックステストではプログラムの仕組みに焦点をあて

「データを入力した際に、データベースに書き込まれるか」

「データベースに書き込まれた値を帳票に書き込むことができるか」

「データベースに書き込まれた値がない場合に、帳票にはNULLで書き込まれるか」

といったように、プログラムの処理に焦点を当てます。

したがって、ホワイトボックステストを行う際には、以下の図のようにプログラムの一つひとつの処理、条件分岐を意識して実行する必要があります。

一方で、ブラックボックステストはこうです。

入力と出力がOKであればOKなのがブラックボックステスト。

ホワイトボックステストは、入力と出力ではなく、「処理が正常に動くかどうか」を確認します。

したがって、プログラムを書ける人、デバッグができる人がホワイトボックステストの実施者として適任であると言えます。

そのため通常は、ある程度プログラミングスキルを持ち合わせている人が、ホワイトボックステストの実施者となります。

タイトルとURLをコピーしました