基本情報技術者 2012年 春期 午前(科目A) 問47
問題文
階層構造のモジュール群から成るソフトウェアの結合テストを、上位のモジュールから行う。この場合に使用する、下位モジュールの代替となるテスト用のモジュールはどれか。
選択肢
ア:エミュレータ
イ:シミュレータ
ウ:スタブ(正解)
エ:ドライバ
🔒 解説は解答すると表示されます
スタブによる結合テスト【午前解説】
正解の理由
正解:ウ スタブ
トップダウン結合テストでは上位モジュールから順に結合を進めるため、まだ実装されていない下位モジュールを簡易的に置き換える必要があります。スタブは下位モジュールの代替として、期待される戻り値や固定の振る舞いを返す簡易実装であり、上位モジュールの呼び出しや処理の流れ、例外処理やエラーハンドリングを検証できます。これが問題文の条件に合致するため、ウ(スタブ)が正解です。
トップダウン結合テストでは上位モジュールから順に結合を進めるため、まだ実装されていない下位モジュールを簡易的に置き換える必要があります。スタブは下位モジュールの代替として、期待される戻り値や固定の振る舞いを返す簡易実装であり、上位モジュールの呼び出しや処理の流れ、例外処理やエラーハンドリングを検証できます。これが問題文の条件に合致するため、ウ(スタブ)が正解です。
解法ステップ
- 問題文で「上位のモジュールから行う結合テスト(トップダウン)」と明記されているか確認する。
- トップダウンでは「下位モジュールが未実装でも上位をテスト」する必要があると判断する。
- 「下位の代替となるテスト用モジュール」が何かを問うているため、下位を模すもの(スタブ)を選ぶ。
- 選択肢を見て、スタブが下位の簡易実装であることを確認し正解とする。
選択肢別の誤答解説
- ア: エミュレータ
誤り。エミュレータは別環境(しばしばハードウェア)をソフトで模倣し、システム全体やハード依存部分を再現する目的で使う。モジュール間の下位代替という限定的用途には当てはまらない。 - イ: シミュレータ
誤り。シミュレータは動作や性能を模擬するための環境再現ツールであり、モジュール結合テストで「下位モジュールだけを簡易実装して代替する」という意味のスタブとは役割が違う。 - ウ: スタブ
正解。トップダウン結合テストで未完成の下位モジュールの代替として、定型的な戻り値や簡易動作を提供し上位の検証を可能にする。 - エ: ドライバ
誤り。ドライバはテスト対象の下位モジュールを呼び出す上位の役割を模したテスト用モジュールで、ボトムアップ結合テストで使用される。問題の「上位から行う」ケースとは逆方向である。
よくある誤解
- スタブとシミュレータ/エミュレータを混同する:シミュレータやエミュレータは環境やハードの挙動再現が目的で、モジュール間の呼び出し代替として使う概念とは異なります。
- ドライバとスタブの方向を逆に理解する:ドライバは下位モジュールを呼び出す「上位役」を模したテスト用モジュールで、ボトムアップで使う点を忘れがちです。
- モックとスタブを同一視する:モックは期待された呼び出しの検証(振る舞い検査)に重点を置く場合が多く、スタブは固定応答で役割が簡潔です。試験では「下位の代替=スタブ」を回答するのが原則です。
補足コラム
- スタブとドライバの対応表(覚え方)
- トップダウン → スタブ(下位を代替)
- ボトムアップ → ドライバ(上位を代替)
- 簡単なイメージ(疑似コード)
# 上位モジュールのテスト時に使うスタブ(下位の代替)
def lower_module_stub(input):
# 本来は複雑な処理だが、テストでは固定の戻り値を返す
return "固定応答"
def upper_module(x):
y = lower_module_stub(x) # 実運用では lower_module を呼ぶ
return f"上位処理:{y}"
print(upper_module("データ")) # スタブを使って上位の振る舞いを確認
- 実務的にはスタブは単純な戻り値提供に留め、振る舞い検証が必要ならモック(期待呼び出しの検証)を併用します。
FAQ
Q1: スタブとモックはどちらを選ぶべきですか?
A1: 単に下位の応答を与えて上位の処理フローを確認するならスタブで十分です。呼び出し順序や引数などの振る舞いを検証したい場合はモックを使います。
A1: 単に下位の応答を与えて上位の処理フローを確認するならスタブで十分です。呼び出し順序や引数などの振る舞いを検証したい場合はモックを使います。
Q2: エミュレータやシミュレータは結合テストで使われますか?
A2: はい、外部デバイスや実機がない場合の総合的な検証や性能試験で使いますが、モジュール単位での下位代替とは役割が異なります。
A2: はい、外部デバイスや実機がない場合の総合的な検証や性能試験で使いますが、モジュール単位での下位代替とは役割が異なります。
Q3: 試験ではどう短時間で判別すればいいですか?
A3: 「テストの方向(トップダウン/ボトムアップ)」をまず特定し、その方向で代替するモジュールがスタブ(下位)かドライバ(上位)かを即判断してください。
A3: 「テストの方向(トップダウン/ボトムアップ)」をまず特定し、その方向で代替するモジュールがスタブ(下位)かドライバ(上位)かを即判断してください。
関連キーワード: 結合テスト、トップダウンテスト、ボトムアップテスト、スタブ、ドライバ、エミュレータ、シミュレータ、モック、単体テスト

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

