ソフトウェアテストの勉強を始めると、「ドライバとスタブ、どっちがどっち?」と毎回混乱しませんか。試験では必ずペアで問われるので、ここで一気に整理してしまいましょう。
対象試験と出題頻度
ドライバは、基本情報技術者・応用情報技術者で出題されるテーマです。
結合テストの方式(トップダウン/ボトムアップ)と組み合わせて出題されることが多く、スタブとの役割の違いを正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランク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. ドライバとモックは何が違うのですか?
役割の方向が違います。ドライバは「呼び出す側の代役」ですが、モックは「呼び出される側の代役」で、しかも呼び出され方を検証する機能(何回呼ばれたか、どんな引数だったか)を持ちます。位置的にはモックはスタブに近い仲間で、スタブの強化版と理解すると整理しやすいです。情報処理試験ではモックの細かい仕様までは問われないので、「ドライバの反対側にスタブ/モックがある」とだけ押さえれば十分です。