スタブとドライバの違い、トップダウンテストで使うのはどちらか
基本情報技術者試験 令和6年度 問11 / システム開発技術 › ソフトウェア結合・適格性テスト
過去問にチャレンジ
階層構造のモジュール群から成るソフトウェアの結合テストを,上位のモジュールから行う。この場合に使用する,下位のモジュールの代替となるテスト用のモジュールはどれか。
- ア
エミュレーター
- イ
シミュレーター
- ウ
スタブ
- エ
ドライバ
会話形式の解説
講師今回は結合テストの進め方の問題です。「上位のモジュールから行う」という条件と、代わりを務めるのが「下位のモジュール」だという点に注目してください。
受験者上位から結合していくので、トップダウンテストのことですよね。ただ、スタブとドライバのどちらが下位の代わりなのか、いつも迷ってしまいます。
講師では動きで考えてみましょう。トップダウンテストでは、上位モジュールが下位モジュールを呼び出します。下位側がまだ完成していないと、何が起こりますか。
受験者呼び出す先がないので、上位モジュールの処理が先に進めない、ということでしょうか。
講師そうです。そこで呼び出し先に仮のモジュールを置き、呼ばれたら固定値や簡単な応答を返すようにします。これがスタブです。これにより、上位モジュールの動作を先に確認できます。
受験者では、ドライバは何の代わりになるのですか。
講師ドライバは逆向きで、下位モジュールから結合していくボトムアップテストで、未完成の上位モジュールの代わりに使います。上位側の立場で下位モジュールを呼び出し、その動作を確かめる役です。
受験者代わりを務める方向が逆なのですね。今回は上位から進めるので、ドライバは条件に合わないと分かりました。
講師その通りです。残りのエミュレーターとシミュレーターはどう考えますか。
受験者どちらも何かを模倣する道具という印象ですが、テスト用モジュールの名前とは違う気がします。
講師はい。エミュレーターは、あるコンピュータや装置の機能を別の環境で模倣するためのものです。シミュレーターは、現象や装置をモデル化して模擬実験や訓練を行うためのものです。どちらも結合テストで下位モジュールを置き換えるための用語ではありません。
受験者整理すると、トップダウンテストでは下位の代わりにスタブ、ボトムアップテストでは上位の代わりにドライバを使う、ということですね。
講師はい。覚え方としては、「ドライバは上位側として呼び出す役、スタブは呼ばれて応答を返す役」とすると区別しやすくなります。問題文が上位と下位のどちらの代わりを聞いているかを、最初に確かめる習慣をつけておきましょう。
まとめ
結合テストを上位モジュールから進める方式をトップダウンテストといい、未完成の下位モジュールの代わりにスタブを使います。スタブは上位から呼び出されたときに固定値や簡単な応答を返し、これにより上位モジュールの動作を先に確認できます。反対に、下位から結合するボトムアップテストでは、未完成の上位モジュールの代わりにドライバを使い、下位モジュールを呼び出して動作を確かめます。エミュレーターやシミュレーターは、結合テストでモジュールを置き換えるための用語ではありません。
解答・解説
正解はウです
この問題のテーマ
結合テストを上位のモジュールから進める(トップダウンテスト)ときに、まだできていない下位モジュールの代わりに使うテスト用モジュールの名前を問う問題です。スタブとドライバの違いが分かっているかが問われます。
解き方の考え方
最初に、問題文の「上位のモジュールから行う」から、これがトップダウンテストだと判断します。トップダウンテストでは上位モジュールが下位モジュールを呼び出すため、下位側がまだ完成していないと呼び出し先がありません。その代わりに置き、呼び出されたら簡単な応答を返すモジュールがスタブです。逆のボトムアップテストで上位側の代わりに使うのはドライバなので、ここで取り違えないようにします。
選択肢ごとの解説
- ×ア エミュレーターエミュレーターは、あるコンピュータや装置の機能を別の環境で模倣するためのものです。結合テストで未完成の下位モジュールの代わりに置くテスト用モジュールを指す用語ではないので、この設問の答えには当たりません。
- ×イ シミュレーターシミュレーターは、現象や装置をモデル化して模擬実験や訓練を行うためのものです。結合テストで下位モジュールを置き換える目的のものではないので、誤りです。
- ○ウ スタブスタブは、トップダウンテストで未完成の下位モジュールの代わりに使うテスト用モジュールです。上位モジュールから呼び出されると、固定値や簡単な応答を返します。そのため、上位モジュールの処理の流れを確認できます。問題文の条件に合うので、これが正解です。
- ×エ ドライバドライバは、ボトムアップテストで未完成の上位モジュールの代わりに使うテスト用モジュールです。上位側の立場から下位モジュールを呼び出す役割を持ち、代わりを務める方向がスタブとは逆です。上位から結合していく今回の条件には合いません。
補足
スタブとドライバは、「ドライバは上位側として呼び出す役、スタブは呼ばれて応答を返す役」と覚えると区別しやすくなります。エミュレーターとシミュレーターは、どちらも結合テストでモジュールを置き換えるための用語ではありません。
POINT
- 上位モジュールから結合していく方式をトップダウンテストといい、未完成の下位モジュールの代わりにスタブを使います。
- 下位モジュールから結合していく方式をボトムアップテストといい、未完成の上位モジュールの代わりにドライバを使います。
- スタブは上位から呼び出されたときに、固定値や簡単な応答を返します。
- ドライバは上位側の立場で下位モジュールを呼び出し、その動作を確かめます。
