Skip to the content.

最終更新日:2026年8月17日

まず結論

スタブは、未完成の下位モジュールの代わりです。

ドライバは、未完成の上位モジュールの代わりです。

FE試験では、次のように切り分けます。

トップダウンテスト
→ 上位から確認する
→ 下位が足りない
→ スタブ

ボトムアップテスト
→ 下位から確認する
→ 上位が足りない
→ ドライバ

上からならスタブ、下からならドライバ。

直感的な説明

ソフトウェアは、複数のモジュールを組み合わせて作られます。

  • 上位モジュール:全体の流れを管理する
  • 下位モジュール:具体的な処理を行う

結合テストでは、モジュール同士をつないで、正しく連携できるかを確認します。

しかし、すべてのモジュールが同時に完成するとは限りません。

そこで、未完成のモジュールを仮のテスト用モジュールで置き換えます。これがスタブとドライバです。

定義・仕組み

トップダウンテストとスタブ

トップダウンテストは、上位モジュールから順に結合して確認する方法です。

上位モジュールが呼び出す下位モジュールが未完成なら、下位の代わりにスタブを使います。

スタブは、呼び出されたときに仮の処理や仮の値を返します。

上位モジュール
↓ 呼び出す
スタブ

つまり、スタブは呼び出される側の代役です。

ボトムアップテストとドライバ

ボトムアップテストは、下位モジュールから順に結合して確認する方法です。

下位モジュールを呼び出す上位モジュールが未完成なら、上位の代わりにドライバを使います。

ドライバは、下位モジュールへテスト用の入力を与えて呼び出します。

ドライバ
↓ 呼び出す
下位モジュール

つまり、ドライバは呼び出す側の代役です。

比較表

観点 スタブ ドライバ
使うテスト トップダウンテスト ボトムアップテスト
代わりになるもの 下位モジュール 上位モジュール
役割 呼び出される 呼び出す
主な動作 仮の値を返す 入力を与えて呼び出す

このテーマは、基本情報技術者試験の「ソフトウェアテスト」「結合テスト」と関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。

科目Aでどう出る?

問題文に「上位モジュールから順にテストする」とあれば、トップダウンテストです。

上位は完成
下位は未完成
→ 下位の代役が必要
→ スタブ

問題文に「下位モジュールから順にテストする」とあれば、ボトムアップテストです。

下位は完成
上位は未完成
→ 上位の代役が必要
→ ドライバ

「呼び出す側」「呼び出される側」で判断する

上位・下位が分かりにくい場合は、呼び出し関係に置き換えると判断しやすくなります。

呼び出される側の代役
→ スタブ

呼び出す側の代役
→ ドライバ

デバッグ用語との切り分け

スタブやドライバの問題では、似た説明としてデバッグ支援の用語が混ざることがあります。

用語 役割
スタブ 未完成の下位モジュールを代用する
ドライバ 未完成の上位モジュールを代用する
スナップショットダンプ 実行時点のレジスタや主記憶などの状態を出力する
インスペクタ 実行中の変数などを確認・変更する

試験では、「仮のモジュールを用意する」ならスタブかドライバ、「実行状態を調べる」ならデバッグ支援と切り分けます。

どんな場面で使う?

上位モジュールを先に確認したい

画面操作や全体の処理フローを先に確認したい場合です。

データ取得処理などの下位モジュールが未完成なら、スタブが仮の戻り値を返します。

下位モジュールを先に確認したい

計算処理やデータベース処理など、重要な下位モジュールを先に確認したい場合です。

上位モジュールが未完成なら、ドライバがテスト入力を与えて下位モジュールを呼び出します。

よくある誤解・混同

スタブとドライバは同じ

どちらも仮のモジュールですが、役割は逆です。

スタブ:呼び出される
ドライバ:呼び出す

上位モジュールの代わりがスタブ

逆です。上位モジュールの代わりはドライバです。

下位モジュールの代わりがドライバ

逆です。下位モジュールの代わりはスタブです。

「単体テスト」と書いてあればドライバ

必ずしもそうとは限りません。

ドライバは単体テストで使われることもありますが、FE試験ではテスト名だけで決めず、上位モジュールの代役として呼び出す側かどうかを確認します。

スナップショットダンプやインスペクタも代用モジュール

違います。

スタブ・ドライバ
→ テスト用の仮モジュール

スナップショットダンプ・インスペクタ
→ 実行状態を調べるためのデバッグ支援

目的が異なります。

確認問題(FE試験対策)

ある販売管理システムでは、下位の「在庫照会」モジュールが先に完成した。上位の「受注処理」モジュールはまだ完成していないが、在庫照会モジュールへ商品コードを渡し、返された在庫数が正しいかを確認したい。

このテストのために用意するものとして、最も適切なものはどれか。

  • ア. 在庫照会モジュールを呼び出し、テスト用の商品コードを渡す仮モジュール
  • イ. 在庫照会モジュールの代わりに固定の在庫数を返す仮モジュール
  • ウ. 実行中の変数の値を表示・変更する機能
  • エ. 実行時点の主記憶やレジスタの内容を出力する機能
▶ クリックして答えと解説を見る(ここを開く)

正解:ア

下位の在庫照会モジュールは完成していますが、それを呼び出す上位の受注処理モジュールが未完成です。

そのため、上位モジュールの代わりにテスト対象を呼び出すドライバを用意します。

  • ア:正解。上位モジュールの代役として呼び出すのでドライバ
  • イ:下位モジュールの代役なのでスタブ
  • ウ:インスペクタなどのデバッグ支援
  • エ:スナップショットダンプ

👉 判断ポイント
下位をテストする → 上位が足りない → ドライバです。

関連記事

まとめ(試験直前用)

  • スタブは下位モジュールの代役
  • ドライバは上位モジュールの代役
  • トップダウンテストではスタブを使う
  • ボトムアップテストではドライバを使う
  • スタブは呼び出される側、ドライバは呼び出す側
  • 「仮モジュール」か「実行状態を調べるツール」かも切り分ける

© 2024-2026 stemtazoo. All rights reserved.