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

情報処理安全確保支援士 2018年 秋期 午前222


問題文

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

選択肢

サンドイッチテスト
トップダウンテスト(正解)
ビッグバンテスト
ボトムアップテスト

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

トップダウンテスト【午前2解説】

正解の理由

アプリケーション層とミドルウェア層の単体テストが完了し、下位のデバイスドライバ層が未完了である状況では、上位から順に結合していく方式が合理的です。上位が既に検証済みであり、下位(未完成部分)をスタブやシミュレータで代替しながら統合を進められるため、インタフェースの誤りや上位ロジックの結合不具合を早期に発見できます。したがって選択肢のうち(トップダウンテスト)が妥当です。

解法ステップ

  1. 層ごとの単体テスト完了状況を確認する(上位完了/下位未完了)。
  2. 「上位が動作確認済みで下位が未完成」のパターンなら、トップダウンを採用することを判断する。
  3. 未完成の下位モジュールをスタブまたはハードウェアシミュレータで置き換え、上位から順に結合してテストを実行する。
  4. 下位モジュールが完成したらスタブを実モジュールに差し替え、再結合/回帰テストを行う。

選択肢別の誤答解説

  • ア: サンドイッチテスト
    上位と下位の双方から同時に統合を進める混合方式。上位が検証済みで下位が未完成な本問の状況では、下位主導の作業(ボトム側)を同時に回す余地がないため最適とは言えません。テスト資源やドライバ/スタブの準備負荷が増す点に注意。
  • : トップダウンテスト(正解)
    上位から順に統合していく方式。上位が完成している場合、未完成の下位部分をスタブやシミュレータで代替可能なので、上位ロジックの結合不具合を早期に検出でき、今回の開発進行に最も適合します。
  • ウ: ビッグバンテスト
    すべてのモジュールが揃ってから一度に結合してテストする方式。未完成のデバイスドライバがある時点では実行不能で、欠陥局所化も困難になるため不適切です。
  • エ: ボトムアップテスト
    下位から順に統合する方式。下位(デバイスドライバ)が未完成であれば開始できないため、今回の状況には合いません。ボトムアップは下位が先に完成している場合に有効です。

よくある誤解

  • トップダウンは「上位だけテストする」わけではない:未完成の下位はスタブで代替し、結合インタフェースや上位の振る舞いを検証するための手法です。
  • ビッグバンは時間短縮になると思い込みがち:一度に結合すると不具合の原因追跡が難しく、結局手戻りが増えることが多いです。
  • サンドイッチ=万能と思わないこと:両方向から進めるため管理・テスト環境の準備が複雑になりやすく、状況に応じて使い分ける必要があります。

補足コラム

組込み開発でトップダウン結合を行う際の実務ポイント:
  • スタブ(下位機能の簡易実装)を用意して返値や例外を制御しやすくする。
  • 実機が必要な場合はハードウェアシミュレータやハードウェア抽象化層(HAL)を活用してテストを継続する。
  • テストハーネスでログを詳細に取り、上位→下位のインタフェース仕様(API呼出し、メッセージ形式、エラーコード)を重点的に検証する。
  • 下位モジュールが完成したら、スタブから実モジュールへ段階的に置換して回帰テストを実行する。
簡単なスタブ例(C言語、デバイス読み取り関数の代替):
// 実デバイスが未実装のためテスト用スタブを作成
int device_read(char *buf, int len) {
    // 固定データを返すことで上位の処理を検証
    const char *sim = "SIM_DATA";
    int n = strlen(sim);
    if (len < n) return -1;
    memcpy(buf, sim, n);
    return n;
}

FAQ

Q: 下位が未完成でもトップダウンで完全な結合テストは可能ですか?
A: 完全な実機動作検証は下位実装が必要ですが、トップダウンではインタフェースの整合性や上位ロジックの結合不具合を十分に検出できます。実機固有のタイミングや例外は下位完成後に追加検証します。
Q: スタブとドライバの違いは何ですか?
A: スタブはテスト時に下位機能を模擬する簡易実装で、ドライバは実際のデバイス制御を行う実装です。トップダウンでは下位が未完成なときにスタブを使います。
Q: サンドイッチテストを選ぶべき場面は?
A: 上位と下位の両方が並行して進行し、双方の主要部分が早期に検証される必要があるときに有効です。ただし管理や環境準備は複雑になります。

関連キーワード: 結合テスト、トップダウンテスト、スタブ、シミュレータ、段階的統合、組込みソフトウェア、テストハーネス、ドライバ代替
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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