ホワイトボックステストとブラックボックステストの違いをIT初心者向けにわかりやすく解説します。

簡単に説明すると、ホワイトボックステストとブラックボックステストは以下のような違いがあります。

システム・プログラムの品質を向上させるために最重要なのが、実はテスト技法だったりします。
このページでは、IT初心者向けにホワイトボックステストとブラックボックステストの違いをざっくり1分で理解できるように解説します。
IT初心者だとしても知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧下さい。
ホワイトボックステストとブラックボックステストの違い
冒頭でもご説明した通り、ホワイトボックステストとブラックボックステストは以下のような違いがあります。

ホワイトボックステストとは
ホワイトボックステストとはプログラムの中身を意識したテストです。

言い換えると、プログラムの構造や実装・開発の経緯を知っているという前提のもとで行われるテストです。
ホワイトボックステストでは、プログラムの中で実際に処理されるすべてのコードをテストすることを目的としています。つまり、1つ1つの命令が設計通り正しく実装されているか?を中心的な観点になります。


ホワイトボックステストでは、プログラムが正常に動作するかどうかを確認するだけでなく、(コードレベルでの確認を行うことができるので)プログラムの品質や信頼性を高めることができます。
後述するブラックボックステストにはないメリットの1つです。
例えば、機能として正しくは動くものの、コードの記載に不備がありパフォーマンス懸念がある・・・セキュリティ的な脆弱性がある・・・等の障害を検知することが可能となるのがホワイトボックステストの1つの特徴です。
ただし(ここまでの説明を読んで分かった方もいるかもしれませんが)ホワイトボックステストは、一定のプログラミングスキルや経験が必要になってくるため、それなりにテスト実施者の知識レベルやスキルに依存するという点も考慮が必要です。

ここでは補足として、ホワイトボックステストのやり方・評価基準(網羅基準)についてご説明しておきます。
ホワイトボックステスト:命令網羅
命令網羅とは、プログラム中の各命令を少なくとも1度は実行することを目的としたテストです。

命令網羅テストは、プログラム内で問題が発生した場合に、どのような命令で問題が発生したのかを簡単に特定することができるのが特徴です。
ホワイトボックステスト:分岐網羅
分岐網羅とはプログラム中の条件式が動くかどうか(条件によって後続の処理が分かれること)確認することを目的としたテストです。


結果がちゃんと "True" or "False" で返ってくるよね?という確認ができればOK。
ホワイトボックステスト:条件網羅
条件網羅は、プログラム中の分岐を少なくとも1度は真となるか偽となるかを確認することを目的としたテストです。

ブラックボックステストとは?
対してブラックボックステストとは、プログラムの内部構造や開発・実装経緯を意識せず、プログラムの入出力だけを見てテストを行うものを指します。

ブラックボックステストでは、プログラムの入出力だけを見てテストを行います。

例えば、自動販売機で目的のボタンを押したら、ちゃんとその製品が出てくるよね?というのを確認するようなテストがブラックボックステストです。その際、自動販売機の裏側でどのような処理が行われているかは意識していません。
これがブラックボックステストの説明で、プログラムの中で処理されるすべての部分をテストすることはできないというのが注意すべきポイントの1つです。

テスト技法に興味を持った方は是非以下のページもご覧下さい!