web-dev-qa-db-ja.com

「単体テスト」はホワイトボックステストまたはブラックボックステストのどちらに該当しますか?

「単体テスト」はホワイトボックステストまたはブラックボックステストのどちらに該当しますか?それとも、他の2つのテストとは完全に別のタイプのテストですか?

24
Manish

これは Kent Beckによる記事 より多くのTDDへの言及であり、ユニットテストはこれをかなりうまくまとめています。基本的には、実際のテストの記述方法によって異なります*。 この件に関する別の記事です 物事を明確にするのに役立つかもしれません。

*アプリケーション内からテストする場合は、ホワイトボックスです。部外者が公開APIのみを呼び出すようにテストしている場合、それはブラックボックスです。

25
Justin Pihony

ホワイトボックステストの通常の基準は、実行パスとデータ構造の鋭敏化です。これらは、「ブランチテスト」、「パステスト」、「データフローテスト」と呼ばれることもあります。ホワイトボックステストについては、ウィキペディアを参照してください。

つまり、ユニットテストはシステムの構造でテストが行​​われるレベルを指し、ホワイトボックスおよびブラックボックステストは、どのレベルでも、テストアプローチが内部設計に基づいているか、またはユニットの外部仕様。

したがって、ユニットテストで、テストするユニット内のすべての実行パスとデータ構造が影響を受ける場合、それはホワイトボックステストです。ただし、ユニットがユニットのパスとデータ構造のほとんどを感知できない場合は、ホワイトボックステストであるとは言えません。

一部の組織では、単体テストがAPIだけでなくユニットの設計に基づいているかどうかに関係なく、単体テストはホワイトボックステストと呼ばれています。この点について上司と議論しないことをお勧めします。

12
Eli Rosencruft