うさぎ組

kyon_mm with software

このエントリーをはてなブックマークに追加

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

はじめに

このエントリはソフトウェアテストAdventCalendar2014の7日目の記事です。

http://connpass.com/event/4544/

両者の違い

ホワイトボックステストとブラックボックステストの違いというのは「テスト対象のプロダクトコードを読んでテストに反映させたかそうでないか」だけです。基本的にはこれのみです。ですが、よく○○テストはホワイトボックステストなのかブラックボックステストなのか?といった話がありますし、C1カバレッジはホワイトボックスが云々という話も聞きます。それはハッキリというとかなり省略して言っているか勘違いして言っています。

よくある書かれ方

  • 「境界値分析はホワイトボックステスト(もしくはブラックボックステスト)である。」
  • 「カバレッジを計測するテストはホワイトボックステストである。」
  • 「画面遷移のテストはブラックボックステストである。」

などなどです。先にも書いたようにホワイトボックスかブラックボックスかを決定するのは「テスト対象のプロダクトコードを読んでテストに反映させたかそうでないか」なので、上記のようなテストケース作成方法においてはどちらかでないと無理であることはありません。

例えば、境界値分析を仕様書や不具合モードから行うこともあります。後者でいえば、ページング処理やリストの境界値はコードを見ていなくてもテストで考慮することが多いはずです。

カバレッジもプロダクトコードを知っているかどうかは関係がなく計測が可能です。より効率的にカバレッジを上げるためには、ホワイトボックステストであることが多いというだけです。

画面遷移のテストをホワイトボックステストとして行なう、つまりプロダクトコードを読んでいるからこそ、共通処理部分などのテストケースを減らすなどは可能です。

まとめ

ホワイトボックステストとして行なうか、ブラックボックステストとして行なうかは、かなりの部分がテスト戦略に絡む話であって、それがテスト技法と同一視されるようなものではない。

一部のコードだけを気にするなどのグレーボックステストというのも存在しますが、最近あまり使われなくなった用語かなぁと思います。僕個人が開発者と一緒にテストをしている場合はほとんどがグレーボックステストで、一部ホワイトボックスであるという感じに落ち着いています。

はじめて学ぶソフトウェアのテスト技法