基本情報 令和6年度 科目A 問11:テクノロジ系に関する問題
階層構造のモジュール群から成るソフトウェアの結合テストを,上位のモジュール から行う。この場合に使用する,下位のモジュールの代替となるテスト用のモジュー ルはどれか。
- aエミュレータ
- bシミュレータ
- cスタブ正答
- dドライバ
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは c「スタブ」 です。
プログラムは部品(モジュール)を組み合わせて作ります。上から順番にテストしていくとき、まだ下の部品ができていないと動かせません。
そこで「下の部品のフリをする仮の部品」を置いて先にテストするのがスタブ。料理で例えると、まだ完成してない付け合わせの代わりに“盛り付けスペースを取るための紙”を置く感じです。
👉 覚え方:上から下へ → スタブ(下のフリ)。逆(下から上)はドライバ(上のフリ)。
ほかの選択肢:a エミュレータ=別の機械のフリをする装置/b シミュレータ=動きを真似て再現するソフト/d ドライバ=下からテストするときの“上のフリ”役。
なぜこれが正解か
正解は c。トップダウンテストでは上位モジュールから順に結合テストを行うため、まだ実装されていない下位モジュールの代わりにスタブを用意する。スタブは呼び出されると固定値を返すなど、下位モジュールの振る舞いを最小限模した仮実装。
各選択肢の解説
- a エミュレータ:異なるハードウェア/ソフトウェア環境を模倣する装置・プログラム。
- b シミュレータ:対象システムの挙動を数理的に模倣する。テスト代替部品の用語ではない。
- d ドライバ:ボトムアップテストで上位モジュールの代わりに下位を呼び出す側を担う。
覚え方・ひっかけ注意
「トップダウン → スタブ(下)」「ボトムアップ → ドライバ(上)」と方向で対にして覚える。スタブ=切り株(stub)で“下にちょこんと残っているもの”のイメージ。サンドイッチテスト(両端同時)では両方使う。
理論的背景
結合テスト(Integration Test)はモジュール間インタフェースの不整合を検出するフェーズ。順序戦略はトップダウン/ボトムアップ/ビッグバン/サンドイッチ(三明治)/インクリメンタルに分類される。トップダウンは上位の制御ロジック・主要シナリオを早期検証できる一方、下位の機能未実装によりI/Oや業務ロジックの検証が遅延しがち。これを補うのがスタブで、戻り値固定型・パラメータ判別型・記録型(spy)などの実装段階差がある。
実務での使われ方
xUnit系のテストダブル理論(Gerard Meszaros)では Dummy / Stub / Spy / Mock / Fake と分類され、IT資格で言う「スタブ」はこのうちStubに対応。実務ではMockito(Java)・unittest.mock(Python)・Jest(JS)などのモックライブラリで動的生成し、外部API・DB・決済ゲートウェイ等の副作用を遮断する。マイクロサービスではWireMock/Mountebankなどのサービス仮想化ツールがスタブ群を担う。
試験での位置づけ
基本情報では「スタブとドライバの方向」がほぼ毎回水準で出題。応用情報・PM試験ではテスト戦略選択や、CI/CD連携(契約テスト=Pact等)、テストピラミッド論まで広がる。近年はサービス間契約テスト(Consumer-Driven Contract)が高度試験でブレンド出題される傾向。
選択肢の発展補足
エミュレータとシミュレータの違いは頻出: エミュレータは“同じ結果を出す再現(命令セット互換等)”、シミュレータは“挙動の近似モデル化”。Androidエミュレータは仮想マシンレベルで命令を実行するため厳密にはエミュレータ寄り。ドライバはテストハーネスやJUnitのRunnerに相当し、CI環境では自動化されたドライバが各モジュールを駆動する。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和6年度 科目A 問11/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。