単体テストの主な目標は、アプリケーションのテスト可能な最小ユニットを取り出して残りのコードから分離し、それが予定どおりの動作をするかどうかを調べることです。まず各ユニットを個別にテストしてから、これらをモジュールに結合し、モジュール間のインターフェイスをテストします。単体テストの間にかなりの割合の欠陥が識別されるため、単体テストは重要です。
単体テストに最もよく使用されるのは、ドライバとスタブを作成する方法です。ドライバは呼び出す側のユニットを、スタブは呼び出される側のユニットをシミュレートします。この作業に開発者の時間を取られるため、単体テストの優先レベルを下げることがありますが、ほとんどの場合、それは誤った行為です。ドライバやスタブの作成には時間と費用がかかりますが、単体テストには確実に利点があります。単体テストによって、テスト プロセスを自動化でき、より複雑なユニットに存在するエラーを発見しやすくなります。また、各ユニットに注意が払われるため、テストで網羅する割合も向上します。
たとえば、2 つのユニットがあるときに、最初から結合されたユニットとしてテストする方が費用効果が高いと考えることもできますが、この場合、さまざまな場所でエラーが発生する可能性があります。
- ユニット 1 の欠陥が原因のエラーかどうか。
- ユニット 2 の欠陥が原因のエラーかどうか。
- 両方のユニットの欠陥が原因のエラーかどうか。
- ユニット間のインターフェイスの欠陥が原因のエラーかどうか。
- テストの欠陥が原因のエラーかどうか。
結合されたモジュールのエラーを発見することは、まずユニットを分離して個別にテストした後にそれらを結合して全体としてテストする場合に比べ、はるかに複雑です。
開発サイクルでは絶えず変更が発生しますが、そのたびに追加のテスト コードを大量に作成しなくても、ドライバとスタブを再利用して頻繁に再テストを実施できます。実際、これによって、使用のたびにドライバとスタブを作成するコストを削減でき、再テストの費用も管理しやすくなります。
"