対象試験と出題頻度
結合テスト(統合テスト)は、基本情報技術者・応用情報技術者で出題されるテーマです。
モジュール間のインタフェース検証に関する問題として定番化しており、「スタブ」「ドライバ」の違いや「トップダウンテスト」「ボトムアップテスト」の使い分けが正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
情報処理試験を勉強していると、「結合テストって単体テストと何が違うの?」「統合テストとは別物?」と混乱しがちです。
結合テスト(Integration Test)とは、一言で言うと
「単体テスト済みのモジュールを組み合わせ、モジュール間のインタフェースが正しく動作するかを検証するテスト工程」
のことです。「統合テスト」はまったく同じ意味の別名です。
イメージとしては、「部品を組み立てた家電の動作確認」です。
洗濯機を例にすると、モーター単体、排水ポンプ単体ではそれぞれ動くことを確認済みです。
しかし、モーターとポンプをつないだときに「回転信号がポンプに正しく伝わるか」「水量データが適切にやり取りされるか」は、実際に接続してみないとわかりません。
結合テストは、この「部品同士のつなぎ目」を重点的に確認する工程です。
📊 結合テストの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Integration Test |
| 別名 | 統合テスト |
| テスト工程上の位置 | 単体テストの後、システムテストの前 |
| 検証対象 | モジュール間のインタフェース(引数・戻り値・データ受け渡し) |
| 代表的な手法 | トップダウンテスト、ボトムアップテスト、サンドイッチテスト、ビッグバンテスト |
解説
ソフトウェアは複数のモジュール(機能単位のプログラム)を組み合わせて構成されます。個々のモジュールが正常に動いても、モジュール同士をつないだ途端にデータの受け渡しで不具合が起きるケースは珍しくありません。
このリスクを早期に検出するために、モジュールを段階的に結合しながらインタフェースの整合性を確かめる工程が設けられています。
テスト工程の全体像(V字モデル)
結合テストの位置づけを理解するには、開発工程とテスト工程を対にして示すV字モデルで把握するのが近道です。
V字モデル:開発工程とテスト工程の対応
▲ 結合テストは「基本設計」に対応するテスト工程。モジュール間の連携が設計通りかを検証する
V字モデルでは、左側の開発工程が下るほど詳細になり、右側のテスト工程が上るほど広い範囲を検証します。
結合テストは基本設計の対となる工程で、「設計書で定義したモジュール間の連携仕様が正しく実装されているか」を確認する役割を担います。
4つの結合手法
モジュールをどの順序で組み合わせるかによって、手法が4つに分かれます。ここだけは確実に押さえてください。
| 手法 | 結合の順序 | 必要な代替モジュール | 特徴 |
|---|---|---|---|
| トップダウン | 上位 → 下位 | スタブ(下位の代役) | 上位の制御構造を先に確認できる。下位の検証が後回しになる |
| ボトムアップ | 下位 → 上位 | ドライバ(上位の代役) | データ処理やロジック部分を先に確認できる。画面など上位の確認が後回しになる |
| サンドイッチ | 上位と下位から同時に中間へ | スタブ+ドライバ | トップダウンとボトムアップの折衷。並行作業が可能 |
| ビッグバン | 全モジュールを一度に結合 | 不要 | 小規模システム向き。障害箇所の特定が困難になりやすい |
図解:スタブとドライバの役割
スタブとドライバは、結合テストの核心となる概念です。「どちらが上位の代役で、どちらが下位の代役か」を明確にしておく必要があります。
スタブとドライバの使い分け
トップダウンテスト
↓ 呼び出し
呼ばれたら固定値を返すだけの仮モジュール
ボトムアップテスト
↓ 引数を渡して呼び出す
上位の代わりにテスト対象を呼び出す仮モジュール
※ スタブ=「下位の代役(呼ばれる側)」、ドライバ=「上位の代役(呼ぶ側)」と覚える
覚え方のコツとして、「スタブ → 下(した)→ 下位の代役」「ドライバ → ドライブ(駆動)→ テスト対象を駆動する上位の代役」と紐づけると混同しにくくなります。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 結合テストの核心を3行で
・単体テスト済みのモジュールを組み合わせ、インタフェースの整合性を検証するテスト工程
・トップダウンテスト → スタブ(下位の代役)、ボトムアップテスト → ドライバ(上位の代役)
・V字モデルでは「基本設計」に対応する工程に位置する
試験ではこう出る!
結合テストは、FE・APの午前問題で繰り返し出題されている定番テーマです。
出題パターンは大きく2つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE R6 科目A 問11 |
上位モジュールから結合テストを行う場合、下位モジュールの代替となるものを選ぶ問題。 | ・正解は「スタブ」 ・エミュレータ・シミュレータ・ドライバがひっかけ |
| FE R1秋 午前 問48 |
ドライバ・スタブの説明として適切なものを選ぶ問題。 | ・「ドライバは引数を渡してテスト対象モジュールを呼び出す」が正解 ・スタブとドライバの役割が逆に書かれた選択肢がひっかけ |
| AP H29秋 午前 問47 |
上記FE R1秋 問48と同一構成の問題(流用)。 | ・FEとAPで同じ問題が出回る典型例 ・選択肢の文言もほぼ同一 |
| FE H25秋 午前 問50 |
トップダウン方式の結合テストで特に必要となるものを選ぶ問題。 | ・正解は「スタブ」 ・ドライバ・デバッガ・エミュレータは不正解 |
📝 IPA試験での出題パターン
パターン1:「スタブ or ドライバを選べ」
「上位から結合テスト → 下位の代役は何か」あるいは「下位から結合テスト → 上位の代役は何か」を問う形式。ひっかけとしてエミュレータやシミュレータが紛れ込む。「トップダウン=スタブ」「ボトムアップ=ドライバ」の対応を即答できれば正解できる。
パターン2:「スタブ・ドライバの説明を選べ」
4つの説明文から正しい記述を選ぶ形式。スタブとドライバの「呼ぶ側/呼ばれる側」の関係を逆にした選択肢がひっかけの常套手段。「ドライバはテスト対象を呼び出す」「スタブはテスト対象から呼び出される」という関係を正確に把握していれば得点できる。
試験ではここまででOKです。サンドイッチテストやビッグバンテストの詳細まで問われることはほぼないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 階層構造のモジュール群から成るソフトウェアの結合テストを上位モジュールから行う場合、未完成の下位モジュールの代替として使用するテスト用モジュールはどれか。
- A. ドライバ。ボトムアップテストにおいて、未完成の上位モジュールの代わりにテスト対象を呼び出す仮のモジュール。
- B. スタブ。トップダウンテストにおいて、未完成の下位モジュールの代わりに上位モジュールからの呼び出しに対して適切な値を返す仮のモジュール。
- C. エミュレータ。他のコンピュータ向けの命令プログラムを解読しながら実行するシミュレーターの一種。
正解と解説を見る
正解:B
解説:
上位モジュールから結合テストを行う方式はトップダウンテストです。この場合、まだ完成していない下位モジュールの代わりとして「スタブ」を使用します。スタブは、上位モジュールからの呼び出しに対し、あらかじめ決められた固定値を返す仮のプログラムです。
選択肢Aのドライバは、ボトムアップテスト(下位から上位へ結合する方式)で使用するもので、上位モジュールの代役として下位モジュールを呼び出す役割を持ちます。設問は「上位から行う」と指定しているため、ドライバではなくスタブが正解です。選択肢Cのエミュレータは、別のハードウェアやソフトウェア環境を模倣する技術であり、結合テストの代替モジュールとは無関係です。
よくある質問(FAQ)
Q. 結合テストと「結合試験」は同じ意味ですか?
同じです。「結合テスト」「結合試験」「統合テスト」「インテグレーションテスト」はすべて同義語として使われます。現場や企業ごとに呼び方が異なるだけで、検証する内容は共通です。IPA試験では「結合テスト」の表記が標準的に使われています。
Q. 結合テストとシステムテストの違いは何ですか?
結合テストは「モジュール間のインタフェース」に焦点を当てたテストです。一方、システムテストはすべてのモジュールを結合した完成品に対して、要件定義で定めた機能要件・非機能要件(性能、セキュリティなど)を満たしているかを検証するテストです。V字モデル上では、結合テストが基本設計に対応し、システムテストが要件定義に対応します。
Q. 実務ではトップダウンとボトムアップのどちらが多いですか?
プロジェクトの規模や構造によりますが、実務ではボトムアップテストが多く採用される傾向にあります。データ処理や計算ロジックなどの基盤部分を先に安定させたほうが、後工程での手戻りが少なくなるためです。ただし大規模プロジェクトでは、上位と下位から同時に進めるサンドイッチテストを採用して並行作業で工期を短縮するケースもあります。
Q. デバイスドライバと結合テストの「ドライバ」は同じものですか?
まったく別の概念です。デバイスドライバはOSと周辺機器(プリンタ、マウスなど)の間を橋渡しする常駐ソフトウェアです。一方、結合テストにおけるドライバは、未完成の上位モジュールの代わりにテスト対象を呼び出すための一時的な仮プログラムで、テスト終了後には破棄されます。名前が同じ「ドライバ」でも役割は完全に異なるため、文脈で判断してください。