戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 春期 午前(科目A)47


問題文

スタブを使用したテストの説明として、適切なものはどれか。

選択肢

指定した命令が実行されるたびに、レジスタや主記憶の一部の内容を出力することによって、正しく処理が行われていることを確認する。
トップダウンでプログラムのテストを行うとき、作成したモジュールをテストするために、仮の下位モジュールを用意して動作を確認する。(正解)
プログラムの実行中、必要に応じて変数やレジスタなどの内容を表示し、必要ならばその内容を修正して、テストを継続する。
プログラムを構成するモジュールの単体テストを行うとき、そのモジュールを呼び出す仮の上位モジュールを用意して、動作を確認する。

🔒 解説は解答すると表示されます

スタブの役割【午前解説】

正解の理由

正解は です。スタブ(stub)はトップダウンテストの際に、まだ作成されていないか利用できない下位モジュールの代わりに用意する簡易的なモジュールです。上位モジュールをテストするために、スタブは期待される戻り値や簡単な動作を提供して上位の制御フローや結合部分を検証します。これが設問イの説明と一致するため正解です。

解法ステップ

  1. 問題文のキーワード抽出:「スタブ」「トップダウン」「下位モジュールを用意」などを探す。
  2. 用語の定義確認:スタブ=下位の代替、ドライバ=上位の代替、トップダウン/ボトムアップの関係を思い出す。
  3. 各選択肢と定義の照合:スタブの定義に合致する選択肢を選ぶ。矛盾するものは誤答と判断する。
  4. 最終確認:誤解しやすい用語(出力やデバッグ操作)と混同していないかをチェックする。

選択肢別の誤答解説

  • ア: 指定した命令が実行されるたびにレジスタや主記憶の一部を出力するのはトレースやロギング、デバッガの機能でありスタブの説明ではありません。
  • : 正解。トップダウン方式で下位モジュールが未完成のときに、その代替として簡易実装を用意し上位モジュールの動作確認を行います。
  • ウ: 実行中に変数やレジスタを表示・修正してテストを継続する行為はインタラクティブなデバッグ(ウォッチ、ステップ実行)であり、スタブの定義とは異なります。
  • エ: 呼び出す仮の上位モジュールを用意するのはドライバ(driver)の説明で、ボトムアップ方式に該当します。したがってスタブとは逆の役割です。

よくある誤解

  • スタブとデバッグ出力を混同する:スタブは代替実装であり、単にレジスタや変数を表示するだけの手法ではありません。
  • スタブとドライバの役割逆転:トップダウンではスタブ、ボトムアップではドライバ(上位の仮実装)を使う点を取り違えやすいです。
  • 単体テスト=デバッグと考える誤り:単体テストでの「仮モジュール」はテスト設計の一部であり、逐次的なデバッグ操作とは目的が異なります。

補足コラム

  • スタブ(stub)とドライバ(driver)の使い分け:
    • トップダウンテスト:上位モジュールから順にテストするため、まだ存在しない下位を「スタブ」で代替。
    • ボトムアップテスト:下位モジュールからテストするため、上位呼び出しを「ドライバ」で代替。
  • スタブ実装の注意点:戻り値や副作用をテストケースに合わせて設計し、境界値・異常値も模擬して上位のエラー処理を確認する。
  • 自動化との親和性:単体テストフレームワークではモック(mock)やスタブを使って外部依存を切り離すことで CI に組み込みやすくなります。

FAQ

Q1: スタブとモックの違いは何ですか?
A1: スタブは主に戻り値を返す簡易実装で、呼び出し回数や順序を検証することは少ないです。モックは呼び出しの期待や振る舞いそのものを検証するためのテストダブルです。
Q2: トップダウンでテストするとき、必ずスタブが必要ですか?
A2: 下位モジュールが未実装または利用できない場合は必要です。すべての下位が利用可能なら必須ではありません。
Q3: ドライバとスタブを同時に使う場面はありますか?
A3: 大規模な統合テストや段階的な結合テストで、上下両方の一部が未完成の場合に併用することがあります。

関連キーワード: 単体テスト、スタブ、ドライバ、トップダウンテスト、ボトムアップテスト、モック、テストダブル、デバッグ、結合テスト、テスト自動化
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について