• ベストアンサー

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

現在、PHPで簡単なアンケートフォームを作り、自らチェックリストを作る作業をしているのですが、その際に作る、「ホワイトボックステスト」と「ブラックボックステスト」のテスト項目がほとんど同じになってしまい、違いがよく分かりません。 ホワイトボックステスト:コードの中身に着目し、全てのコードを実行するテスト。 ブラックボックステスト:入出力に着目し、プログラムが仕様に沿った動きをするかをチェックするテスト。 ということは、だいたい把握しています。 しかし、実際にチェック項目を作ると大差ないチェック項目になりませんか? 何が違うのか教えてください。 例えば:名前(全角10文字)、年齢(半角3ケタ)、性別(ラジオボタン) のフォームを作り、条件入力にはエラーを表示するというプログラムのチェックリストです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

ホワイトボックスでは実行されないコードが残らないようにテストケースを作成します。 ブラックボックスでは確認されない入力の組み合わせが残らないようにテストケースを作成します。 ホワイトボックスとブラックボックスの両方をやる意味は ホワイトボックスでソースコードが実行されている事が確認できても、その動作が仕様に合致しているとは限らない(ロジック自体がそもそも間違っている事を検出できない)のと ブラックボックスで仕様通りに動いていてもそれが正しい処理の結果である事を保証できない(複数のバグが相互の誤りを打ち消しあってたまたま正常に動いているように見える可能性を否定できない)のと ブラックボックスだけでは境界値、限界値の組み合わせが膨大な数になって全ての組み合わせを検証出来ないからです。 目的が違うので、項目が似ていても意味が異なります。 意図したとおりの処理の結果として、要求された動作を実現している事を保証するのが目的と考えれば違いが分かるのではないでしょうか。 例えば、 条件:名前に全角200文字を入力 ホワイトボックス:入力文字制限の判定処理に分岐する事を確認します。←ロジックが動作している事の確認 ブラックボックス:入力文字数オーバーのアラートが表示され、入力処理に戻る事を確認します。←仕様に定められた振る舞いをしている事の確認

noname#93286
質問者

お礼

とてもよくわかりました。 確かに、もしブラックボックスだけに着目した場合は、たまたま正常に動いている場合を検出できませんね。 ありがとうございました。

その他の回答 (1)

回答No.1

そのプログラムであればそうかもしれません。 ホワイトボックスとブラックボックスの違いはプログラム内部にある条件分岐や、他モジュールの呼び出しを意識するかどうかですので、単純なフォームのように分岐の少ないプログラムでは、ホワイトとブラックの違いは出にくいです。

noname#93286
質問者

お礼

なるほど。今回の場合は、差がほとんどないものになってもしょうがないのですね。 それが分かってすっきりしました。 ありがとうございました。