統合テスト とうごうてすと
統合テストインテグレーションテストE2EテストAPI テストテスト戦略テストピラミッド
統合テストってユニットテストと何が違うの?
簡単に言うとこんな感じ!
ユニットテストが「部品単体が正しく動くか」を確認するなら、統合テストは「部品を組み合わせたときに正しく連携するか」を確認するテストだよ!「DBとの接続」「APIとのやり取り」「複数のサービスをまたいだ処理」が期待通りかをテストするんだ。
統合テストとは
統合テスト(Integration Test) とは、複数のコンポーネント・モジュール・サービスを組み合わせて、それらが正しく連携して動作するかを検証するテストです。
ユニットテストが「1つの部品のみ」をテストするのに対し、統合テストは「複数の部品の接合部分」に焦点を当てます。DBへのCRUD操作・外部APIとの通信・マイクロサービス間の連携などが対象です。
テストピラミッド
╱ E2E ╲ 少数・遅い・高コスト
╱──────────╲
╱ 統合テスト ╲
╱────────────────╲
╱ ユニットテスト ╲ 多数・速い・低コスト
└─────────────────────────┘
ユニットテストで基盤を固め、統合テストで接合部を確認し、E2Eテストで少数の主要シナリオを確認するのが理想的な構成です。
統合テストの種類
| 種類 | 内容 |
|---|---|
| APIテスト | RESTful APIの入出力・ステータスコードを検証 |
| DBテスト | 実際のDBに接続したCRUD操作を検証 |
| サービステスト | マイクロサービス間の通信を検証 |
| コントラクトテスト | サービス間のAPI仕様(コントラクト)が一致しているか確認 |
歴史と背景
- ウォーターフォール時代:テストフェーズとして独立して実施
- アジャイル・CI/CD(2010年代):コード変更のたびに自動実行するパイプラインに統合
- 現在:TestContainersなど、コンテナを使った実環境に近い統合テストが普及
関連用語
- ユニットテスト — 統合テストの基礎となる部品レベルのテスト
- E2Eテスト — 統合テストより上位のエンドツーエンドテスト
- テストカバレッジ — 統合テストでのカバレッジ計測
- CI/CDパイプライン — 統合テストを自動実行するパイプライン
- マイクロサービス — 統合テストが特に重要なアーキテクチャ