情報処理安全確保支援士 2025年 秋期 午前2 問22
問題文
図のような階層構造で設計された組込みシステムがある。このシステムの開発プロジェクトにおいて、デバイスドライバ層の単体テスト工程が未終了で、アプリケーション層及びミドルウェア層の単体テストが先に終了した。この段階で行えるソフトウェア結合テストの方式として、適切なものはどれか。

選択肢
ア:サンドイッチテスト
イ:トップダウンテスト(正解)
ウ:ビッグバンテスト
エ:ボトムアップテスト
階層構造の組込みシステムで行える結合テスト方式【午前2 解説】
要点まとめ
- 結論→ アプリケーション層とミドルウェア層が単体テスト済みで下位のデバイスドライバが未終了なため、上位から統合するトップダウンテストが最適です。
- 根拠→ トップダウンは上位モジュールを実際の実装で進め、未完成の下位モジュールはスタブで代替して結合試験を継続可能にします。
- 差がつくポイント→ スタブの精度とインタフェース仕様の厳密さが不具合検出力に直結するため、下位仕様の模擬設計に注力してください。
正解の理由
システムは上から順に「アプリケーション→ミドルウェア→デバイスドライバ→ハードウェア」と階層化されています。問題では上位2層の単体テストは完了しているが、デバイスドライバ層の単体テストが未終了です。トップダウンテストは上位モジュールから順に統合を行い、未完成の下位モジュールはスタブで置き換えてテストできる方式です。したがって、上位が準備できている現状では、デバイスドライバが完成するのを待たずに結合テストを進められるトップダウンテストが最も適切です。
よくある誤解(2〜3 行)
- 「下位が未完成ならボトムアップの方が安全」と考えがちですが、ボトムアップは下位の完成を前提とするため今回の状況には合いません。
- スタブを使うと本質的な検証ができないと思われがちですが、インタフェース検証や上位ロジックの結合不具合は十分検出可能です。
解法ステップ(番号付きリスト)
- 図から層構造を確認し、どの層が単体テスト済か未実施かを特定する。
- 結合テスト方式の特徴を整理する(トップダウン=上位から、ボトムアップ=下位から、サンドイッチ=両端併用、ビッグバン=一斉統合)。
- 未完成の層が上位か下位かで使える方式を判断する(未完成が下位ならトップダウン、上位ならボトムアップ)。
- 未完成の下位をスタブで代替可能か検討し、問題の条件と照合する。
- スタブで代替可能ならトップダウンを選択し、スタブの仕様とテスト観点を決める。
選択肢別の誤答解説
- ア: サンドイッチテスト
- 上位・下位の両方から統合を行うハイブリッド方式で、上下双方がある程度完成していることを想定します。今回のように下位が未完成で上位のみが準備済みの場面では実施が難しく、オーバーヘッドが大きいです。
- イ: トップダウンテスト
- 正解。上位モジュール(アプリケーション・ミドルウェア)がテスト済みで、下位(デバイスドライバ)が未完の場合、スタブで下位を模擬して結合テストを進められる方式です。
- ウ: ビッグバンテスト
- 全モジュールが揃ってから一度に統合する方式で、開発段階で一部が未完成だと実行できません。欠点として不具合箇所の特定が困難になる点もあります。
- エ: ボトムアップテスト
- 下位から順に統合する方式で、デバイスドライバが未完成だと開始できません。今回の条件には不向きです。
補足コラム(関連知識など)
- スタブとテストドライバの違い:トップダウンで使う「スタブ」は下位のダミー実装で、期待する戻り値やエラー条件を返す。一方ボトムアップで使う「テストドライバ」は上位の呼び出し側を模擬して下位を単体で試験します。
- 組込み系ではハードウェア未実装時にハードウェア抽象化レイヤ(HAL)やシミュレータを用いてトップダウン的に検証することが多いです。
- サンドイッチテストは上下同時に進められる場合や並行開発体制が整っている場合に有効ですが、調整コストが高くバグの局所化が難しくなります。
- CI/CD環境での結合テスト自動化では、スタブやモックを組み込んで早期に上位ロジックの結合を検証するのが実務的です。
FAQ
Q: スタブはどの程度精度で作ればよいですか?
A: インタフェース契約(APIの引数・戻り値・例外振る舞い)を忠実に再現し、異常系も含めて最低限の振る舞いを実装すれば十分です。ハードウェア固有のタイミング振る舞いは別途シミュレータで補うことが多いです。
A: インタフェース契約(APIの引数・戻り値・例外振る舞い)を忠実に再現し、異常系も含めて最低限の振る舞いを実装すれば十分です。ハードウェア固有のタイミング振る舞いは別途シミュレータで補うことが多いです。
Q: なぜビッグバンは避けるべきですか?
A: 全モジュールが揃うまでテストが始められず、問題発生時に原因箇所の絞り込みが難しくなるため、リスクが高く回避されることが多いです。
A: 全モジュールが揃うまでテストが始められず、問題発生時に原因箇所の絞り込みが難しくなるため、リスクが高く回避されることが多いです。
Q: トップダウンで見つかった不具合は下位の完成後にも再確認が必要ですか?
A: はい。スタブで発見したインタフェースに関する問題は、実装された下位モジュールで再度統合検証し、スタブとの差異を確認する必要があります。
A: はい。スタブで発見したインタフェースに関する問題は、実装された下位モジュールで再度統合検証し、スタブとの差異を確認する必要があります。
関連キーワード: 結合テスト、トップダウンテスト、スタブ、デバイスドライバ、組込みシステム、単体テスト、ミドルウェア、テストハーネス

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

