下位モジュールのテストで未完成の上位モジュールを代替する部品。
ドライバとは、結合テストのときに下位モジュールをテストするため、まだできていない上位モジュールの代わりに下位を呼び出す部品です。プログラムは複数のモジュール(=処理のまとまりとなる部品)が呼び出し合って動きます。
下位モジュール(呼び出される側)をテストしたいのに、それを呼び出してくれる上位モジュール(呼び出す側)がまだ完成していない──。そんなとき、本物の上位の代わりに「テスト用の値を渡して下位を呼び出し、結果を受け取る」部品を用意します。これがドライバです。
身近な例で考えると、新しいエンジンを試す「テスト走行のドライバー(運転手)」に似ています。完成した車体(本物の上位)がまだなくても、運転手がアクセルを踏んでエンジンを回せば、エンジン単体の性能を確かめられます。ドライバも同じで、上位の本物がなくても下位を動かして試すための代役です。
ドライバが活躍するのは、ボトムアップテストのときです。ボトムアップテストとは、プログラムの下位(呼び出される側)のモジュールから先に作り、テストしながら上へ進めていく手法です。
このとき問題になるのが、下位はできても上位がまだ完成していない状況です。下位は誰かに呼び出されないと動かせないため、テストできません。そこで次のように対処します。
・未完成の上位:本物の代わりにドライバを用意する
・ドライバの働き:テスト用の値を渡して下位を呼び出す
・狙い:戻ってきた結果が正しいかを確認し、下位の動作を検証する
たとえば「税込価格を計算する下位」を先に作ったとき、ドライバから1000円を渡して呼び出し、1100円が返るかを確かめます。上位が完成したら、ドライバを本物に差し替えるだけです。
| 項目 | ドライバ | スタブ |
|---|---|---|
| 代役にするもの | 上位モジュール(呼び出す側) | 下位モジュール(呼び出される側) |
| テスト対象 | 下位モジュール | 上位モジュール |
| 使う手法 | ボトムアップテスト | トップダウンテスト |
| 主な働き | 下位を呼び出し結果を受け取る | 呼ばれたら固定値を返す |
ドライバとよく対比されるのがスタブです。どちらも「未完成のモジュールの代役」ですが、どちら側の代わりをするかが逆になります。
ドライバは上位(呼び出す側)の代役で、下位をテストするときに使います。一方スタブは下位(呼び出される側)の代役で、上位をテストするときに使います。テストしたい対象が下にあるか上にあるかで、必要な代役が決まると覚えると分かりやすいです。
覚え方のコツは、「ドライバは上から動かす/スタブは下を埋める」です。ドライバは下位を呼び出して「動かす」運転手のような部品、スタブは下位の「中身」を仮に埋める受け身の部品、とイメージすると混同しにくくなります。