ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
本稿は 結合テスト (IT: Integration Test) に関する記事です。結合テストは、単体テスト (UT) の後段に位置し、複数のモジュール・コンポーネントを組み合わせた状態でシステムが正しく動作するかを確かめる工程です。単体では発見できないI/F の食い違い・データの受け渡し・状態遷移の不整合などを検出するのが目的です。
結合テストの位置づけ
| 工程 | 視点 |
|---|---|
| 単体テスト (UT) | 関数・クラス単位の正しさ |
| 結合テスト (IT) | モジュール間の連携・I/F の整合 |
| システムテスト (ST) / 総合テスト | システム全体の機能・非機能 |
| 受入テスト (UAT) / 運用テスト | 業務視点・運用視点での合格判定 |
結合テストで確認する観点
| 観点 | 例 |
|---|---|
| I/F の整合 | API のリクエスト/レスポンス形式、CSV ヘッダ・桁・型 |
| データ受け渡し | 画面 ↔ コントローラ ↔ サービス ↔ DAO ↔ DB の連携 |
| 状態遷移 | セッション・トランザクション・ワークフロー |
| 例外伝播 | 下位の例外が想定どおり上位に渡る/変換される |
| 外部システム連携 | API 呼び出し・メール送信・ファイル転送 |
| 権限と認可 | ロールに応じた API/画面アクセス制御 |
| 性能 | ピーク時の応答時間 (性能テストへの橋渡し) |
結合テストのアプローチ
| アプローチ | 説明 |
|---|---|
| ボトムアップ | 下位モジュールから順に結合。下位の動作確認が早く取れる |
| トップダウン | 上位 (画面・コントローラ) から結合。スタブで下位を仮置き |
| ビッグバン | すべて結合してから一気にテスト。問題切り分けが難しい |
| サンドイッチ / ハイブリッド | 上下を並行に結合。多くの実プロジェクトで採用 |
| 機能 (Feature) ベース | 1 つの業務シナリオごとに結合する |
スタブ / ドライバ / モック
| 呼び方 | 役割 |
|---|---|
| スタブ (Stub) | 下位モジュールが未実装の場合に用意する仮実装 (返り値だけ用意) |
| ドライバ (Driver) | 上位モジュールが未実装の場合に下位を呼び出すテスト用ハーネス |
| モック (Mock) | 呼ばれ方を検証できる仮実装 |
| サービス仮想化 | 外部 API・メインフレーム等の応答をシミュレート |
主な成果物
- 結合テスト計画書 — スコープ・体制・期間・テスト環境
- テスト観点・シナリオ・テストケース — 機能ID / 画面ID と紐付け
- テストデータ — マスタ・トランザクション・境界値
- 環境構成資料 — 結合テスト用 DB / API のスタブ・モック
- テスト結果報告書 — 実施件数・OK/NG・欠陥一覧
- 欠陥トラッキング — 起票 → 修正 → 再テストのフロー
典型的なシナリオ例 (Web アプリ)
- ログイン → 画面遷移 → CRUD 操作 → 結果確認 (Happy path)
- 権限が無いユーザでの操作 (403 になるか)
- 入力チェックの境界値 (桁・型・必須・相関)
- セッションタイムアウト中の再操作
- 外部 API 呼び出し失敗時のリトライ・代替動作
- 同時アクセスでの楽観/悲観ロック挙動
- ファイルアップロード・大容量データ・タイムアウト
使われるツール
| 用途 | ツール |
|---|---|
| API テスト | Postman、Insomnia、curl、HTTPie、Karate |
| E2E (画面操作) | Selenium、Cypress、Playwright、Puppeteer |
| DB セットアップ | DbUnit、Testcontainers、Flyway / Liquibase |
| モック / スタブ | WireMock、MockServer、Hoverfly |
| Java の結合テスト | JUnit 5 + Spring Boot Test (@SpringBootTest)、Testcontainers |
| 負荷 | JMeter、k6、Gatling |
| CI/CD | GitHub Actions、Jenkins、GitLab CI |
結合テストの合格基準 (例)
- 計画したテストケースを100% 実施済み
- 重大度 High の欠陥がすべてクローズ
- 主要な業務シナリオがエラーなく通る
- 同時アクセス・データ量の想定シナリオで応答が SLA 内
- 外部 I/F のフォーマット・タイミングが仕様どおり
- 関係者によるレビューと承認
うまくいかないサイン
- テストデータが本番想定とかけ離れている — 件数 1 件、固定値だけ
- 異常系が抜けている — Happy path しかテストしない
- 環境差を吸収するモックが過剰 — 本物の I/F の不整合を見逃す
- 欠陥の収束が見えない — 毎日新規欠陥が増える状態でリリース判定
- UT を結合テストで肩代わり — 単体で潰すべき欠陥がここに集まる
注意点
- UT で潰す欠陥は UT で潰す。結合テストは I/F・連携の検証に集中する
- テスト環境のデータ管理を仕組み化する (Flyway / Liquibase / fixture)
- 本番相当の負荷で 1 度通す経験を作る (性能課題の先送り防止)
- 個人情報・本番データを検証環境にコピーする場合はマスキング必須
- 欠陥の再現条件・重大度・回避策を必ず記録する
- CI で自動回帰実行できる結合テストを段階的に増やす
関連
- 親カテゴリ: 開発工程
- 前工程: 要件定義 / 基本設計 / 単体テスト
- 後工程: 受入テスト/運用テスト
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?