最終更新日:2026年8月17日
fe fe-technology system-development software-testing integration-test
まず結論
スタブは、未完成の下位モジュールの代わりです。
ドライバは、未完成の上位モジュールの代わりです。
FE試験では、次のように切り分けます。
トップダウンテスト
→ 上位から確認する
→ 下位が足りない
→ スタブ
ボトムアップテスト
→ 下位から確認する
→ 上位が足りない
→ ドライバ
上からならスタブ、下からならドライバ。
直感的な説明
ソフトウェアは、複数のモジュールを組み合わせて作られます。
- 上位モジュール:全体の流れを管理する
- 下位モジュール:具体的な処理を行う
結合テストでは、モジュール同士をつないで、正しく連携できるかを確認します。
しかし、すべてのモジュールが同時に完成するとは限りません。
そこで、未完成のモジュールを仮のテスト用モジュールで置き換えます。これがスタブとドライバです。
定義・仕組み
トップダウンテストとスタブ
トップダウンテストは、上位モジュールから順に結合して確認する方法です。
上位モジュールが呼び出す下位モジュールが未完成なら、下位の代わりにスタブを使います。
スタブは、呼び出されたときに仮の処理や仮の値を返します。
上位モジュール
↓ 呼び出す
スタブ
つまり、スタブは呼び出される側の代役です。
ボトムアップテストとドライバ
ボトムアップテストは、下位モジュールから順に結合して確認する方法です。
下位モジュールを呼び出す上位モジュールが未完成なら、上位の代わりにドライバを使います。
ドライバは、下位モジュールへテスト用の入力を与えて呼び出します。
ドライバ
↓ 呼び出す
下位モジュール
つまり、ドライバは呼び出す側の代役です。
比較表
| 観点 | スタブ | ドライバ |
|---|---|---|
| 使うテスト | トップダウンテスト | ボトムアップテスト |
| 代わりになるもの | 下位モジュール | 上位モジュール |
| 役割 | 呼び出される | 呼び出す |
| 主な動作 | 仮の値を返す | 入力を与えて呼び出す |
このテーマは、基本情報技術者試験の「ソフトウェアテスト」「結合テスト」と関係します。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
問題文に「上位モジュールから順にテストする」とあれば、トップダウンテストです。
上位は完成
下位は未完成
→ 下位の代役が必要
→ スタブ
問題文に「下位モジュールから順にテストする」とあれば、ボトムアップテストです。
下位は完成
上位は未完成
→ 上位の代役が必要
→ ドライバ
「呼び出す側」「呼び出される側」で判断する
上位・下位が分かりにくい場合は、呼び出し関係に置き換えると判断しやすくなります。
呼び出される側の代役
→ スタブ
呼び出す側の代役
→ ドライバ
デバッグ用語との切り分け
スタブやドライバの問題では、似た説明としてデバッグ支援の用語が混ざることがあります。
| 用語 | 役割 |
|---|---|
| スタブ | 未完成の下位モジュールを代用する |
| ドライバ | 未完成の上位モジュールを代用する |
| スナップショットダンプ | 実行時点のレジスタや主記憶などの状態を出力する |
| インスペクタ | 実行中の変数などを確認・変更する |
試験では、「仮のモジュールを用意する」ならスタブかドライバ、「実行状態を調べる」ならデバッグ支援と切り分けます。
どんな場面で使う?
上位モジュールを先に確認したい
画面操作や全体の処理フローを先に確認したい場合です。
データ取得処理などの下位モジュールが未完成なら、スタブが仮の戻り値を返します。
下位モジュールを先に確認したい
計算処理やデータベース処理など、重要な下位モジュールを先に確認したい場合です。
上位モジュールが未完成なら、ドライバがテスト入力を与えて下位モジュールを呼び出します。
よくある誤解・混同
スタブとドライバは同じ
どちらも仮のモジュールですが、役割は逆です。
スタブ:呼び出される
ドライバ:呼び出す
上位モジュールの代わりがスタブ
逆です。上位モジュールの代わりはドライバです。
下位モジュールの代わりがドライバ
逆です。下位モジュールの代わりはスタブです。
「単体テスト」と書いてあればドライバ
必ずしもそうとは限りません。
ドライバは単体テストで使われることもありますが、FE試験ではテスト名だけで決めず、上位モジュールの代役として呼び出す側かどうかを確認します。
スナップショットダンプやインスペクタも代用モジュール
違います。
スタブ・ドライバ
→ テスト用の仮モジュール
スナップショットダンプ・インスペクタ
→ 実行状態を調べるためのデバッグ支援
目的が異なります。
確認問題(FE試験対策)
ある販売管理システムでは、下位の「在庫照会」モジュールが先に完成した。上位の「受注処理」モジュールはまだ完成していないが、在庫照会モジュールへ商品コードを渡し、返された在庫数が正しいかを確認したい。
このテストのために用意するものとして、最も適切なものはどれか。
- ア. 在庫照会モジュールを呼び出し、テスト用の商品コードを渡す仮モジュール
- イ. 在庫照会モジュールの代わりに固定の在庫数を返す仮モジュール
- ウ. 実行中の変数の値を表示・変更する機能
- エ. 実行時点の主記憶やレジスタの内容を出力する機能
▶ クリックして答えと解説を見る(ここを開く)
正解:ア
下位の在庫照会モジュールは完成していますが、それを呼び出す上位の受注処理モジュールが未完成です。
そのため、上位モジュールの代わりにテスト対象を呼び出すドライバを用意します。
- ア:正解。上位モジュールの代役として呼び出すのでドライバ
- イ:下位モジュールの代役なのでスタブ
- ウ:インスペクタなどのデバッグ支援
- エ:スナップショットダンプ
👉 判断ポイント
下位をテストする → 上位が足りない → ドライバです。
関連記事
まとめ(試験直前用)
- スタブは下位モジュールの代役
- ドライバは上位モジュールの代役
- トップダウンテストではスタブを使う
- ボトムアップテストではドライバを使う
- スタブは呼び出される側、ドライバは呼び出す側
- 「仮モジュール」か「実行状態を調べるツール」かも切り分ける