【ITパスポート】結合テストとは?スタブとドライバの違いを超わかりやすく解説

システム開発のテスト工程で、単体テストの次に行われるのが「結合テスト」です。

ここまではすんなり理解できても、試験勉強を進めると「トップダウンテスト」「スタブ」「ドライバ」といった聞き慣れないカタカナ用語が次々と登場し、混乱してしまう方が非常に多い分野でもあります。

特にスタブとドライバの違いは、ITパスポート試験で最も引っかけ問題になりやすいポイントです。この記事では、結合テストの目的と進め方、そしてスタブとドライバの違いを図解を使ってわかりやすく解説します!

目次

結合テストとは?部品同士の連携チェック

結合テスト(Integration Test)とは、単体テストをクリアした複数のプログラム(モジュール)をつなぎ合わせて、連携して正しく動作するかを確認するテストのことです。

部品ごとの動作確認(単体テスト)が終わった後、いきなりシステム全体を動かすのではなく、まずは2つ、3つと徐々に部品を組み合わせてテストを行います。これが結合テストの役割です。

【結合テストで確認することの例】

  • 画面から入力したデータが、正しくデータベース保存用のプログラムに渡っているか
  • プログラムAの処理結果を、プログラムBが正しく受け取って次の処理ができているか

このように、部品と部品の接点(インターフェース)に問題がないかを重点的にチェックし、外部設計(基本設計)で決めた仕様通りに動くかを検証します。

結合テストの2つの進め方

プログラムを結合していく順番には、大きく分けて「上から下へ」と「下から上へ」の2つのアプローチがあります。

1. トップダウンテスト(上から下へ)

システムの階層構造において、上位(親)のモジュールから下位(子)のモジュールへと順に結合してテストしていく手法です。

システム全体の制御など、中枢となる重要なプログラムからテストを始めるため、重大な欠陥を早期に見つけやすいというメリットがあります。また、画面などのユーザーインターフェース部分を早く確認できる点も優れています。

2. ボトムアップテスト(下から上へ)

逆に、システムの階層構造において、下位(子)のモジュールから上位(親)のモジュールへと順に結合してテストしていく手法です。

末端の個別の機能からテストを進められるため、単体テストが終わったモジュールから並行して効率よくテストを開始できるというメリットがあります。

超頻出!「スタブ」と「ドライバ」の違い

トップダウン・ボトムアップのどちらの順番でテストを進めるにしても、「テストしたいけど、つなぎ合わせる相手の部品がまだ完成していない!」というケースが必ず発生します。

システム開発ではすべてのモジュールが同時に完成するわけではないからです。そこで活躍するのが、未完成のモジュールの代わりをしてくれる「仮の部品(ダミーモジュール)」です。この仮の部品には、テストの進め方によって2つの名前がついています。

スタブ(Stub):下位の代役

トップダウンテストで、上位モジュールをテストする際に、まだ完成していない下位モジュールの代わりとして呼び出されるダミーモジュールのことです。

上位から指示を受け取って、「はい、わかりました!」とあらかじめ決められた固定の結果(エラーなしの返事など)だけを上位に打ち返してくれる簡単なプログラムです。

  • 役割:自分が呼び出される(呼ばれる側)
  • 使われる場面:トップダウンテスト(下位が未完成のとき)

ドライバ(Driver):上位の代役

ボトムアップテストで、下位モジュールをテストする際に、まだ完成していない上位モジュールの代わりとして下位を呼び出すダミーモジュールのことです。

「これを計算してね」と下位のプログラムにデータを渡し、返ってきた結果が正しいかをチェックする役割を担います。テストしたい部品を動かす(ドライブする)ためのプログラムです。

  • 役割:自分から呼び出す(呼ぶ側)
  • 使われる場面:ボトムアップテスト(上位が未完成のとき)

スタブとドライバの簡単な覚え方

試験で「あれ?どっちが上でどっちが下だっけ?」と迷ったときは、英語の意味をイメージすると間違えません。

  • ドライバ(Driver)=運転手。車(下位モジュール)を上から「動かす(操作する)」人だから、上位の代役
  • スタブ(Stub)=切り株、使い残り。下の方にポツンとあるイメージだから、下位の代役

ITパスポート試験での結合テスト出題傾向と対策

結合テスト関連の用語は、マネジメント系の「ソフトウェア開発管理技術」分野で非常によく出題されます。

試験でおさえるべきキーワード

  • 結合テスト:単体テスト後のモジュールをつなぎ合わせて連携を確認するテスト。外部設計を検証する。
  • トップダウンテスト:上位モジュールから下位モジュールへ順にテストする手法。
  • ボトムアップテスト:下位モジュールから上位モジュールへ順にテストする手法。
  • スタブ:トップダウンテストで使われる、未完成な下位モジュールの代わり(呼ばれる側)。
  • ドライバ:ボトムアップテストで使われる、未完成な上位モジュールの代わり(呼ぶ側)。

過去問に挑戦!

【問題】
システムの結合テストにおいて、トップダウンテストを行う際に、作成が完了していない下位モジュールの代わりとなるダミーのモジュールはどれか。

ア.アサーション
イ.エミュレータ
ウ.スタブ
エ.ドライバ

【正解】:ウ
【解説】:トップダウン(上から下)でテストをする際、まだ完成していない「下位モジュール」の代わりとして呼ばれるのは「スタブ」です。ドライバ(エ)はボトムアップテストで使われる上位モジュールの代わりです。

【問題】
モジュール結合テストの手法であるボトムアップテストの特徴として、適切なものはどれか。

ア.上位のモジュールから順にテストを行うため、システム全体の制御に関する不具合を早期に発見できる。
イ.下位のモジュールから上位のモジュールへと順次結合してテストを行う。未完成の上位モジュールの代わりとしてドライバが必要となる。
ウ.すべてのモジュールを一度に結合してテストを行うため、スタブやドライバを作成する手間が省ける。
エ.モジュール間のインターフェースを検証する目的で行われ、システム全体の性能要件の確認には適さない。

【正解】:イ
【解説】:ボトムアップテストは下位から上位へ結合していく手法で、未完成の上位の代役としてドライバを使います(イ)。アはトップダウンテストの特徴、ウはビッグバンテストと呼ばれる手法の特徴です。

まとめ:スタブとドライバの区別が最大のカギ!

今回は結合テストと、それに関わる重要用語について解説しました。ポイントをもう一度確認しましょう。

  • 結合テストはモジュールとモジュールをつなぎ合わせて接点(連携)を確認するテスト
  • 上からテストを進めるのがトップダウンテスト、下から進めるのがボトムアップテスト
  • トップダウンで使う下位の代役が「スタブ」
  • ボトムアップで使う上位の代役が「ドライバ(上から動かす人)」

特に「スタブ」と「ドライバ」の2つは本当によく入れ替えられて出題されます。「ドライバ=運転手=上から下に指示を出す代役」と覚えておけば、本番でも確実に1点をもぎ取れます!

目次