ソフトウェアテストの勉強を始めると、「ドライバとスタブ、どっちがどっち?」と毎回混乱しませんか。試験では必ずペアで問われるので、ここで一気に整理してしまいましょう。

対象試験と出題頻度

ドライバは、基本情報技術者・応用情報技術者で出題されるテーマです。

結合テストの方式(トップダウンボトムアップ)と組み合わせて出題されることが多く、スタブとの役割の違いを正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★☆☆
ランクB(標準)覚えておくと有利

用語の定義

情報処理試験を勉強していると、「ドライバって、PCの周辺機器を動かすあのドライバ?それともテストの話?」と混乱しがちです。試験で問われる「ドライバ」はソフトウェアテストの文脈の話です。

ドライバ(Driver)とは、一言で言うと

 「テスト対象の下位モジュールを呼び出して動かすための、上位モジュールの代役プログラム

のことです。

イメージとしては、新人俳優のオーディションで、相手役のセリフを読み上げる代役の係員です。

主役の演技を確かめたいのに、相手役がまだ決まっていないと演技を見られません。そこで代役が「セリフを投げかける役」を担うことで、主役のテストが進められます。

ドライバも同じで、テストしたい部品(下位モジュール)に対して、本来呼び出すはずの上の部品がまだ完成していないとき、代わりに「呼び出す側」を演じる仮のプログラムです。

📊 ドライバの基本情報

項目 内容
英語名 Driver(Test Driver)
分類 テスト用の補助モジュール(仮の部品)
主な利用工程 単体テスト・結合テスト(特にボトムアップテスト)
対になる用語 スタブ(Stub)

解説

ソフトウェアは複数のモジュール(部品)が呼び出し合う構造になっています。

普通は上の部品が下の部品を呼び出して動きますが、開発の途中ではすべての部品が同時に揃うわけではありません。

下の部品だけ先にできあがったとき、それ単体では「呼び出してくれる相手」がいないため、動かして確認することができません。

この困った状況を解決するために、上の部品の役割をする仮プログラムを用意します。これがドライバです。

ドライバとスタブの位置関係

テスト対象モジュールから見て、ドライバは「上」、スタブは「下」に位置します。図で押さえるのが一番早いです。

▼ ドライバとスタブの呼び出し関係

🎬 ドライバ(仮の上位モジュール)
↓ 呼び出す
⭐ テスト対象モジュール
↓ 呼び出す
🎬 スタブ(仮の下位モジュール)

点線枠=仮のプログラム / 実線枠=本物のテスト対象

ドライバが活躍する場面:ボトムアップテスト

結合テストには「上から組み立てる」トップダウンと、「下から組み立てる」ボトムアップの2方式があります。

ドライバが主役になるのはボトムアップ方式です。

テスト方式 進め方 必要な仮モジュール
トップダウン 上位モジュールから順に下へ結合していく スタブ
ボトムアップ 下位モジュールから順に上へ結合していく ドライバ

覚え方のコツ:「下から積むときに足りないのは上=ドライバ」「上から組むときに足りないのは下=スタブ」と、対になる位置を意識するだけで二度と迷いません。

ドライバの中身(簡易イメージ)

ドライバは難しいプログラムではなく、「テスト対象に引数を渡して呼び出し、戻り値を表示するだけ」の小さなコードです。

// ドライバの例(疑似コード)

function driver_main() {
    // ① テスト対象モジュールに渡す入力値を準備
    input = 100;

    // ② テスト対象モジュールを呼び出す
    result = calcTax(input);  // ← テスト対象

    // ③ 結果を出力して期待値と比較
    print("結果: " + result);
}

このように、本来の上位モジュールが行う「呼び出し」だけを最低限再現するのがドライバの仕事です。

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 ドライバの核心を3行で

・テスト対象を「呼び出す側」を演じる仮の上位モジュール
・ボトムアップテストで使われる(下位から積み上げるとき上が足りない)
・対になるスタブは「呼び出される側」を演じる仮の下位モジュール


試験ではこう出る!

ドライバはFE・APの午前問題で繰り返し問われている定番論点です。出題パターンはほぼ2つに収束しています。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
FE H29春
午前 問49
ボトムアップテストの特徴を選ぶ問題。 ・「ドライバが必要」が正解の根拠
・スタブを答えに混ぜたひっかけ
AP H27秋
午前 問49
トップダウン/ボトムアップで使う仮モジュールの組合せを問う問題。 ・トップダウン=スタブ/ボトムアップ=ドライバの対応
・組合せを逆にしたひっかけが頻出
FE H22秋
午前 問47
ドライバの説明として正しいものを選ぶ問題。 ・「下位モジュールを呼び出す」記述が正解
・「上位を代替」「データの流れを整える」がひっかけ

📝 IPA試験での出題パターン

パターン1:「ドライバとスタブを入れ替える」
選択肢の文章で「ドライバ」と「スタブ」の説明を入れ替えてあるひっかけ。「上位の代わり=ドライバ/下位の代わり=スタブ」を瞬時に判定してください。

 

パターン2:「テスト方式との組合せ」
「ボトムアップテストで必要なのは( )」という空欄補充。ボトムアップ=ドライバ、トップダウン=スタブの対応をそのまま答えれば正解。

 

なお、デバイスドライバ(OSとハードウェアをつなぐソフトウェア)の意味で出題されることはほぼありません。「テスト」「結合」「モジュール」といった文脈の単語があれば、迷わずソフトウェアテストの文脈で考えてください。ここまででOKです。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. ソフトウェアの結合テストで使われる「ドライバ」の説明として、最も適切なものはどれでしょうか?

  • A. テスト対象モジュールから呼び出される下位モジュールの代わりとなる仮プログラムで、トップダウンテストで利用される。
  • B. テスト対象モジュールを呼び出す上位モジュールの代わりとなる仮プログラムで、ボトムアップテストで利用される。
  • C. プログラム実行中の変数の値や処理の流れを追跡し、不具合を発見するための解析ツールである。

正解と解説を見る

正解:B

解説:
ドライバはテスト対象を呼び出す上位モジュールの役割を演じる仮プログラムで、下位から組み上げるボトムアップテストで使われます。「上位の代役」と「ボトムアップ」の2点が揃っているのは選択肢Bだけです。

選択肢Aはスタブの説明です。下位モジュールの代わりとなり、トップダウンテストで使われる点が特徴で、ドライバとは上下と方式が逆になっています。選択肢Cはデバッガ(あるいはトレーサ)の説明です。プログラム実行を追跡して不具合を見つけるツールであり、テスト対象を呼び出す仮モジュールであるドライバとは目的そのものが異なります。


よくある質問(FAQ)

Q. プリンタやマウスの「デバイスドライバ」と、試験に出る「ドライバ」は同じものですか?

別物です。デバイスドライバはOSとハードウェアの間に入って制御を仲介する常駐ソフトウェアで、開発時の検証目的とは無関係です。試験で「結合テスト」「モジュール」「ボトムアップ」などの文脈にある場合は、テスト用の仮プログラムの方を指していると判断してください。同じ「ドライバ」でも分野が違えば指すものが違う、という典型例です。

Q. ドライバは自作するのですか?それとも何かツールを使うのですか?

実務では両方あります。簡易な確認なら開発者が数行のコードで自作することも多いですが、JavaのJUnitやPythonのpytestといった単体テストフレームワークを使うと、テストコードそのものがドライバの役割を果たします。「フレームワーク=高機能なドライバ」と捉えると整理がつきます。試験範囲では「自作の小プログラム」というイメージで十分です。

Q. トップダウンとボトムアップ、結局どちらが優れているのですか?

どちらも一長一短で、優劣はありません。トップダウンは早期に画面側の動作確認ができる反面、下位の不具合発見が遅れます。ボトムアップは基盤部分の品質を早く固められる反面、システム全体の動きを見るのが後回しになります。両方を組み合わせる「サンドイッチテスト」という折衷案もあるので、現場では状況に応じて選び分けます。

Q. ドライバとモックは何が違うのですか?

役割の方向が違います。ドライバは「呼び出す側の代役」ですが、モックは「呼び出される側の代役」で、しかも呼び出され方を検証する機能(何回呼ばれたか、どんな引数だったか)を持ちます。位置的にはモックはスタブに近い仲間で、スタブの強化版と理解すると整理しやすいです。情報処理試験ではモックの細かい仕様までは問われないので、「ドライバの反対側にスタブ/モックがある」とだけ押さえれば十分です。