FE EXAM

結合テスト(モジュールの連携を確認する)

複数のモジュールを組み合わせて連携を確認するテスト。

DIAGRAM
モジュール
連携(インタフェース)
単体テスト済みのモジュールをつなぎ、つなぎ目(連携)を確認する単体テスト済みのモジュールログイン✓ 単体OK検索✓ 単体OK表示✓ 単体OK連携を確認結合してインタフェースをテストログイン検索表示データの受け渡しデータの受け渡しつなぎ目でデータが正しく渡るか・呼び出しが成功するかを確認単体テスト:部品の中身を確認結合テスト:部品のつなぎ目を確認
解説

📌
結合テストとは

部品をつないで連携を確認モジュールA連携モジュールBつなぎ目が正しく動くかをテスト

結合テストとは、複数のモジュールを組み合わせて連携を確認するテストのことです。単体テストを通って単独では正しく動くモジュール(部品)どうしをつなぎ、それらが協調して正しく動くかを確かめます。

部品が1つずつ正しくても、つなぎ合わせると問題が出ることがあります。たとえば、あるモジュールが渡すデータの形式と、受け取る側が期待する形式が食い違っていると、組み合わせて初めて不具合が表面化します。

身近な例で考えると、1つずつ検査した部品で機械を組み立てることに似ています。ネジやギアが単体で正しくても、噛み合わせる段になって寸法が合わないと動きません。上の図解のように、結合テストはモジュールどうしの「つなぎ目」に注目するテストです。

📌
テスト対象

結合テストの対象は、モジュール間のインタフェース(=部品どうしのつなぎ目。データの受け渡し口のこと)です。具体的には次の点を確認します。


データの受け渡し:呼び出す側が渡す値を、呼び出される側が正しく受け取れるか
呼び出しの順序:モジュールが正しい順番で呼び出され、想定どおりに連携するか
戻り値の扱い:返ってきた結果を呼び出し元が正しく処理できるか
異常時の連携:一方でエラーが起きたとき、もう一方が適切に対応できるか

ここで大切なのは、結合テストが「1つのモジュールの中身」ではなく「モジュール間のつなぎ目」を見るという点です。中身の正しさはすでに単体テストで保証されているので、結合テストでは連携の部分に集中します。

上の図解のように、たとえば「検索」モジュールが返した結果を「表示」モジュールが正しく受け取って画面に出せるか、といった連携の正しさを確認するのが結合テストの役割です。

📌
アプローチ(トップダウン/ボトムアップ)

トップダウン上位スタブスタブ上位から結合下位の代わり=スタブボトムアップドライバ下位下位下位から結合上位の代わり=ドライバ

結合テストは、モジュールをどの順番で組み合わせていくかによって、おもに2つのアプローチに分けられます。


トップダウンテスト:上位(呼び出す側)のモジュールから順に結合していく。まだ完成していない下位モジュールの代わりに、スタブ(呼ばれると決まった値を返すだけの仮の部品)を使う
ボトムアップテスト:下位(呼び出される側)のモジュールから順に結合していく。まだ完成していない上位モジュールの代わりに、ドライバ(下位を呼び出すための仮の部品)を使う

覚え方のコツは、「上から下りるトップダウンは、足りない下位をスタブで補う」「下から登るボトムアップは、足りない上位をドライバで補う」という対応です。上の図解で、点線の枠が仮の部品(スタブ・ドライバ)を表しています。どちらも、未完成の部分を仮の部品で代用しながら少しずつ結合していく点は共通です。

📌
スタブとドライバが必要な理由

スタブを使うケース上位(完成)スタブ(仮)下位が未完成のとき仮の返答をするだけドライバを使うケースドライバ(仮)下位(完成)上位が未完成のとき代わりに呼び出す

大きなシステムは複数のチームが分担して開発するため、すべてのモジュールが同時に完成するわけではありません。結合テストを始めたい段階で、隣のモジュールがまだ開発中という状況はよくあります。そこで登場するのが仮の部品です。

スタブは「呼ばれたら決まった値を返すだけ」の仮の下位モジュールです。本物のような複雑な処理はせず、「はい、正常に完了しました」「値は100です」のようにあらかじめ決めておいた答えを返すだけです。上位モジュールのテストを、下位の完成を待たずに進められます。

ドライバは「下位モジュールを呼び出してくれる」仮の上位モジュールです。本来は上位モジュールが呼び出す側ですが、それが未完成のためドライバが代わりに呼び出します。身近な例で言えば、本番の司会が来るまでリハーサルを進める仮の司会のようなものです。仮の部品を使えば、互いに完成を待たずに並行してテストを進められます。

📌
テスト工程全体での位置づけ

単体テスト結合テストシステムテスト受入テスト← 今ここ小さい単位 → 大きい単位 の順に進む

結合テストは、単体テストの次に行う工程です。テスト全体の流れを4段階で整理すると次のようになります。
単体テスト:モジュール1つ1つを単独で確認する
結合テスト:単体テスト済みのモジュールを組み合わせ、連携を確認する(←今ここ)
システムテスト:システム全体が仕様どおりに動くかを確認する
受入テスト:実際に使う人が、要件を満たすかを確認する

結合テストが担う役割は、「部品の正しさ」と「全体の正しさ」の橋渡しです。単体テストで部品ごとの正しさを確認したあと、部品を組み合わせたときのつなぎ目の問題をここで見つけます。結合テストで問題を発見・修正しておかないと、システムテストで大きな問題が表面化し、原因を探すのが格段に難しくなります。

練習問題

🎯
基本情報技術者 練習問題

Q1.結合テストの説明として最も適切なものはどれか。
A.モジュール単体が正しく動作するかを確認するテスト
B.複数のモジュールを組み合わせて連携を確認するテスト
C.利用者が要件を満たすかを確認するテスト
D.システム全体の負荷や性能を測定するテスト
Q2.結合テストで主に確認する対象として最も適切なものはどれか。
A.モジュール間のデータの受け渡し(インタフェース)
B.1つの関数内の計算結果のみ
C.利用者が操作するマニュアルの記述
D.サーバの設置場所や電源
Q3.結合テストの「トップダウンテスト」の説明として最も適切なものはどれか。
A.下位モジュールから順に結合し、上位を呼ぶドライバを使う
B.上位モジュールから順に結合し、未完成の下位の代わりにスタブを使う
C.全モジュールを一度に結合してまとめてテストする
D.モジュールを結合せず単体のままテストする

関連コンテンツ

結合テスト | Vizigo