基本情報技術者 2015年 秋期 午前(科目A) 問48
問題文
ボトムアップテストの特徴として、適切なものはどれか。
選択肢
ア:開発の初期の段階では、並行作業が困難である。
イ:スタブが必要である。
ウ:テスト済みの上位モジュールが必要である。
エ:ドライバが必要である。(正解)
##: ボトムアップテストの特徴として、適切なものはどれか。 【午前2 解説】
要点まとめ
- 結論:ボトムアップテストは下位モジュールから統合を進め、未実装の上位呼び出しを模擬するドライバが必須となります。
- 根拠:下位モジュールを先に結合・検証するため、呼び出し側(上位)を代替するドライバでテストを駆動します。
- 差がつくポイント:ドライバとスタブの役割を明確に区別し、トップダウンとの比較で「どちらが呼び出す側を代替するか」を判断する癖をつけること。
正解の理由
正解は エ(ドライバが必要である)。
ボトムアップテストは下位(下層)のモジュールから順に統合していく手法です。下位モジュールを動作させる際、通常はそれを呼び出す上位モジュールが未実装または未テストであるため、上位の振る舞いを模擬して下位モジュールを呼び出す「ドライバ」が必要になります。したがって「ドライバが必要である」はボトムアップの特徴として正しいです。
ボトムアップテストは下位(下層)のモジュールから順に統合していく手法です。下位モジュールを動作させる際、通常はそれを呼び出す上位モジュールが未実装または未テストであるため、上位の振る舞いを模擬して下位モジュールを呼び出す「ドライバ」が必要になります。したがって「ドライバが必要である」はボトムアップの特徴として正しいです。
よくある誤解
- ドライバとスタブを混同する:ドライバは呼び出し側を模擬し、スタブは呼ばれる側を模擬する点を取り違えやすいです。
- 「上位がテスト済みでないとできない」と誤解する:実際は上位が未実装でもドライバで代替して下位からテスト可能です。
- 並行作業が困難だと誤解する:下位モジュールの実装・検査は並行して進められるため、必ずしも初期段階で並行が難しいわけではありません。
解法ステップ
- 問題文で「ボトムアップテスト」とあることを確認する。
- ボトムアップの要点(下位モジュールから統合)を思い出す。
- ドライバ/スタブの定義を整理する(呼び出す側を模擬=ドライバ、呼ばれる側を模擬=スタブ)。
- 選択肢を見て、上位を模擬する必要があるかどうかで正答を決定する(ドライバが必要ならボトムアップ)。
選択肢別の誤答解説
- ア: 開発の初期の段階では、並行作業が困難である。
→ 誤り。下位モジュールの設計・実装は並行して進められることが多く、必ずしも並行作業が困難とは言えません。 - イ: スタブが必要である。
→ 誤り。スタブは呼ばれる側(下位モジュール)の代替で、トップダウンテストで上位から下位へ進める際に使います。 - ウ: テスト済みの上位モジュールが必要である。
→ 誤り。上位モジュールが未実装でもドライバで上位の呼び出しを模擬して下位からテストできます。 - エ: ドライバが必要である。
→ 正解。ボトムアップでは下位モジュールを呼び出すために上位の役割を果たすドライバが必要です。
補足コラム
- トップダウン vs ボトムアップ(簡潔まとめ)
- トップダウン:上位モジュールから統合し、未実装の下位はスタブで代替する。
- ボトムアップ:下位モジュールから統合し、未実装の上位はドライバで代替する。
- ドライバの具体例(擬似コード)
# 下位モジュール(被テスト対象)
def calc(a, b):
return a + b
# ドライバ(上位の代替) - テスト用に呼び出す
if __name__ == "__main__":
print(calc(2, 3)) # 結合テストで下位モジュールを呼び出す役割
- 実務では両者を組み合わせることもあり、テストハーネスや自動化ツールでドライバ/スタブを用意します。
FAQ
Q1: ボトムアップはどんな場面で有利ですか?
A1: 下位モジュールが安定していて早期に機能検証したい場合や、ハードウェア駆動の機能を先に確認したい場合に有利です。
A1: 下位モジュールが安定していて早期に機能検証したい場合や、ハードウェア駆動の機能を先に確認したい場合に有利です。
Q2: ドライバとスタブはどちらも必要になることはありますか?
A2: 大規模開発では上下両方の未実装部分があるため、局所的にドライバとスタブの両方を使うことがあります。
A2: 大規模開発では上下両方の未実装部分があるため、局所的にドライバとスタブの両方を使うことがあります。
Q3: 単体テストとボトムアップテストの違いは?
A3: 単体テストは個々のモジュールの動作検証、ボトムアップ統合テストは下位モジュール同士を結合して相互動作を確認する工程です。
A3: 単体テストは個々のモジュールの動作検証、ボトムアップ統合テストは下位モジュール同士を結合して相互動作を確認する工程です。
関連キーワード: ボトムアップテスト、ドライバ、スタブ、統合テスト、単体テスト、テストハーネス、テスト駆動、トップダウンテスト

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

