外注先から納品された単体テスト済みモジュールで、結合テストの段階でバグがたくさん発見された。本来、単体テストで摘出すべきバグなのに――。システム開発の現場では、こうした問題がよく起こる。「どこからどこまで何をテストするのかが単体テストか」という認識が、元請け企業と下請け企業の間で異なるのが原因だ。 規模や複雑度が一定以上のシステムやプロダクトでは、一気に全モジュール、全機能、全システムを結合してテストするのは現実的ではない。システムやプロダクトをある粒度で区切る、というアプローチが一般的となる。まずは最も細かい粒度でテストを実施して、段階的に結合して大きな粒度にしながらテストを進めていく。 こうしたテスト対象を区切る粒度を「テストレベル」と呼ぶ。テストレベルの種類は、組織やプロジェクトごとにさまざまな定義がある。よく見かけるのが「単体テスト」「結合テスト」「システムテスト」「受け入れテスト