【けつごうてすと】

結合テスト とは?

💡 部品を「組み合わせたときに動くか」を確認するテスト
📌 このページのポイント
単体テスト vs 結合テスト 単体テスト モジュールA ✓ OK モジュールB ✓ OK 結合テスト A B 接続部分を検証 結合テストで発見できる問題 データ受け渡しの不整合 API呼び出しの不具合 タイミング・順序の問題 個々は正常でも繋ぐと発覚する
結合テストのイメージ
ひよこ ひよこ

ユニットテストが全部通ってれば結合テストはいらないんじゃ?

ペンギン先生 ペンギン先生

それが落とし穴。個々の部品が完璧でも、組み合わせると問題が出ることがある。APIが返すJSON形式と、それを受け取る側が期待するフィールド名が微妙に違う、みたいな「つなぎ目のミス」はユニットテストでは発見できない。

ひよこ ひよこ

結合テストって何を対象にするの?

ペンギン先生 ペンギン先生

代表的なのはAPIのエンドポイントテスト(リクエストを送って期待するレスポンスが返るか)、サービスとDBを組み合わせたテスト(データが正しく保存・取得できるか)、外部APIとの通信テストなど。

ひよこ ひよこ

E2Eテストとどう違うの?

ペンギン先生 ペンギン先生

E2Eは「ユーザーがブラウザを操作してから結果が表示されるまで」の全体を通したテスト。PlaywrightCypressなどのツールでブラウザを自動操作する。結合テストより範囲が広い分、実行が遅く環境の影響を受けやすい。

ひよこ ひよこ

結合テストをCIで実行すると時間がかかりすぎることない?

ペンギン先生 ペンギン先生

あるある問題。対策は「ユニットテストはPRのたびに実行、重い結合テストは夜間やmainへのマージ時だけ実行」と分けること。テストの実行時間が伸びたときは「どのテストが遅いか」をプロファイルして、遅いテストから最適化していく。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
結合テストって出てきたら「複数の部品を組み合わせた連携を確認するテスト」と思えばだいたいOK!
📖 おまけ:英語の意味
「integration test」 = 統合テスト。部品を統合(integrate)した状態のテスト
💬 ユニットテスト→結合テスト→システムテストというテストの階層(テストピラミッド)の中間に位置する
← 用語集にもどる