テスト手法

統合テスト とうごうてすと

統合テストインテグレーションテストE2EテストAPI テストテスト戦略テストピラミッド
統合テストってユニットテストと何が違うの?

簡単に言うとこんな感じ!

ユニットテストが「部品単体が正しく動くか」を確認するなら、統合テストは「部品を組み合わせたときに正しく連携するか」を確認するテストだよ!「DBとの接続」「APIとのやり取り」「複数のサービスをまたいだ処理」が期待通りかをテストするんだ。


統合テストとは

統合テスト(Integration Test) とは、複数のコンポーネント・モジュール・サービスを組み合わせて、それらが正しく連携して動作するかを検証するテストです。

ユニットテストが「1つの部品のみ」をテストするのに対し、統合テストは「複数の部品の接合部分」に焦点を当てます。DBへのCRUD操作・外部APIとの通信・マイクロサービス間の連携などが対象です。


テストピラミッド

          ╱ E2E ╲           少数・遅い・高コスト
        ╱──────────╲
      ╱ 統合テスト ╲
    ╱────────────────╲
  ╱   ユニットテスト   ╲     多数・速い・低コスト
└─────────────────────────┘

ユニットテストで基盤を固め、統合テストで接合部を確認し、E2Eテストで少数の主要シナリオを確認するのが理想的な構成です。


統合テストの種類

種類内容
APIテストRESTful APIの入出力・ステータスコードを検証
DBテスト実際のDBに接続したCRUD操作を検証
サービステストマイクロサービス間の通信を検証
コントラクトテストサービス間のAPI仕様(コントラクト)が一致しているか確認

歴史と背景

  • ウォーターフォール時代:テストフェーズとして独立して実施
  • アジャイル・CI/CD(2010年代):コード変更のたびに自動実行するパイプラインに統合
  • 現在:TestContainersなど、コンテナを使った実環境に近い統合テストが普及

関連用語