基本情報

基本情報 令和元年度 秋期 問48|テクノロジ系に関する問題

問題

基本情報 | 令和元年度 秋期 | 分野:テクノロジ系

テストで使用するスタブ又はドライバの説明のうち,適切なものはどれか。

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は D
  • A
  • B
  • C
  • D

自信の3択

えらぶと、この端末に記録します(登録はいりません)

解説

答えは d「ドライバは,引数を渡してテスト対象モジュールを呼び出す」 です。

モジュールを1つずつテストするとき、まわりの部品がまだできていないことがあります。そこで使う「代役」が2種類あります。

  • ドライバ:テスト対象を呼び出す側の代役(引数を渡して呼び出し、結果を受け取る)
  • スタブ:テスト対象から呼び出される側の代役(決まった値を返すだけの仮の部品)

👉 覚え方:ドライバ=上から呼ぶ(運転手)/スタブ=下で呼ばれる(切り株)。

ほかの選択肢:a 戻り値の表示・印刷はスタブの役割ではない/b 呼び出す側はドライバ/c 呼び出される側はスタブ。

なぜこれが正解か

正解は d。単体テストや結合テストでは,未完成のモジュールの代わりにテスト用の仮モジュールを使う。

  • ドライバ:テスト対象モジュールを呼び出す上位モジュールの代わり。テストデータを引数として渡してテスト対象を呼び出し,結果を受け取る。ボトムアップテストで使う。
  • スタブ:テスト対象モジュールから呼び出される下位モジュールの代わり。呼び出されたら決められた値を返す。トップダウンテストで使う。

したがって「ドライバは,引数を渡してテスト対象モジュールを呼び出す」が正しい。

各選択肢の解説

  • a 誤り:スタブはテスト対象から呼び出されて値を返す仮モジュールで,テスト対象からの戻り値を表示・印刷する役割ではない(戻り値を受け取るのはドライバ側)。
  • b 誤り:テスト対象モジュールを呼び出すのはドライバ。
  • c 誤り:テスト対象モジュールから呼び出されるのはスタブ。
  • d 正しい:ドライバは引数を渡してテスト対象を呼び出す。

覚え方・ひっかけ注意

「上位の代わり=ドライバ(呼ぶ)」「下位の代わり=スタブ(呼ばれる)」。トップダウンテストは上から作るので下位が足りずスタブが必要,ボトムアップテストは下から作るので上位が足りずドライバが必要,とテストの進め方とセットで覚える。

理論的背景

モジュールを組み合わせて検証する結合テストの進め方には,上位モジュールから順に結合するトップダウンテストと,下位モジュールから順に結合するボトムアップテストがある。トップダウンでは,まだ完成していない下位モジュールの代わりにスタブを置き,呼び出されたら固定値や簡単な処理結果を返すようにする。ボトムアップでは,まだ完成していない上位モジュールの代わりにドライバを置き,テストデータを引数として渡してテスト対象を呼び出し,戻り値や出力を確認する。両者を組み合わせたサンドイッチテストや,全モジュールを一度に結合するビッグバンテストもある。

実務での使われ方

現在の単体テストでは,テストコード(JUnit,pytest などのテスト関数)そのものがドライバの役割を果たす。依存先の代役は,固定値を返すスタブ,呼び出され方を記録・検証するモック,簡易な実装を持つフェイクなどに細分化され,テストダブルと総称される。外部APIやデータベースに依存する処理をテストするとき,テストダブルに置き換えることで,速く安定したテストが可能になる。

試験での位置づけ

基本情報では,スタブとドライバの役割の区別,トップダウン/ボトムアップテストとの対応が頻出。応用情報では,テスト技法(ブラックボックス/ホワイトボックス),網羅基準,回帰テストと組み合わせて問われる。

選択肢の発展補足

b と c は,スタブとドライバの役割を入れ替えたひっかけ。a はスタブに「戻り値の表示・印刷」という役割を与えているが,テスト対象からの戻り値を受け取って確認するのは呼び出し側(ドライバ)である。ドライバ=driver(動かすもの),スタブ=stub(切り株・残りかす)という英語の意味から,「上から動かす」「下で受け止める」と結び付けると忘れにくい。

この問題の根拠出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和元年度 秋期 問48
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和元年度 秋期 問48/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。