モジュール分割および統合テスト
ソフトウェアシステム (またはユニット)をより細かい部分に分解することで、その部分同士の相互作用をテストする必要性が生じる。最初に分解を実施した設計者が、最も統合テストのドキュメント化、記述に適している。
これらテストの実際のコーディングは、分解が実施されるまで待つことができる。コーディングされると、これらの統合テストは、互換性のないインターフェースの発生によって生じたリグレッションを検出するために、CIサイクルにおいて重要な役割を果たす。
コーディングおよびユニットテスト
おそらくソフトウェア開発業界において全員の意見が合致する唯一のことは、ユニットのコードを作成する開発者が、ユニットテストを記述するのに最も適しているということであろう。
ユニットテストは、特定目的に使うコードの細かい部分をテストするために設計されているので、コードがどのように実装されたかに直結している。
デバッギングおよびフォールト位置特定
テストに失敗、あるいはエンドユーザがバグを報告してきたら、 そのバグが修正を要するほどの重要性があるかについて、判断する。フォールト位置特定は、コード内にあるバグの正確な位置を特定する作業である。
例えば、スタックトレース、コードカバレッジレポート、エラーメッセージなどのテストプロセスで生成された成果物は、フォールト位置特定を早めるのに役立つ。
上述で明らかなように、 ソフトウェア開発活動をソフトウェアのテスト活動とともに、慎重にオーケストレーションする必要性がある。ソフトウェア開発(要件、設計) のテスト活動には最適な成果物が存在し、テストへの投資効果を最大にするためには、適切なフェーズで行わなければならない(例えば、システムテストの設計は要件抽出フェーズ、そしてユニットテストの開発はコーディングフェーズ)。