エンベデッドシステムスペシャリスト 2013年 午前2 問23
問題文
図のような階層構造で設計及び実装した組込みシステムがある。このシステムの開発プロジェクトにおいて、ハードウェア及びデバイスドライバ層の単体テスト工程が遅延し、アプリケーション層とミドルウェア層の単体テストが先に終了した。このとき、ソフトウェア結合のテスト方法として適切なものはどれか。

選択肢
ア:サンドイッチテスト
イ:トップダウンテスト(正解)
ウ:ビッグバンテスト
エ:ボトムアップテスト
🔒 解説は解答すると表示されます
トップダウンテスト【午前2解説】
正解の理由
階層型システムでは、上位層から下位層へ順に結合してテストする方法をトップダウンテストといいます。
この問題では、アプリケーション層とミドルウェア層の単体テストが終了している一方、デバイスドライバ層とハードウェアのテストが遅れています。そこで、まずテスト可能な上位層から結合テストを進め、未完成の下位層はスタブなどで代替します。この進め方に当たるイが適切です。
解法ステップ
- 図の階層を上から確認します。
アプリケーション層 → ミドルウェア層 → デバイスドライバ層 → ハードウェアの順です。 - テストが終了している層と、遅れている層を整理します。
上位の2層はテスト済みで、下位の2層は遅れています。 - 上位層から結合し、未完成の下位層をスタブで置き換える方法を選びます。
これはトップダウンテストです。
選択肢別の誤答解説
- ア:サンドイッチテスト
上位層からのトップダウンテストと、下位層からのボトムアップテストを並行して進め、途中で両者を結合する方法です。この問題では、下位側のテストが遅れているため、下位からのテストも並行して進める前提の方法は適しません。 - イ:トップダウンテスト
上位層から下位層へ順にテストします。未完成の下位層はスタブで代替できるため、問題の状況に合っています。 - ウ:ビッグバンテスト
すべてのモジュールをまとめて結合してテストする方法です。個々の不具合の原因を特定しにくく、遅れている層がある場合にも進めにくいため、適しません。 - エ:ボトムアップテスト
ハードウェアやデバイスドライバなど、下位層から上位層へ順にテストします。下位層のテストが遅れている状況では、開始しにくい方法です。
よくある誤解
- 上位層の単体テストが終わっていれば、すぐに全層を結合できる
下位層が未完成でも、スタブなどを使えば上位層から結合テストを進められます。 - トップダウンテストでは、下位層の準備は不要である
下位層を実物の代わりにするスタブなどが必要です。スタブは、呼び出されたときにあらかじめ定めた応答を返すテスト用の代替モジュールです。 - 「上から順」か「下から順」かではなく、層の完成状況も判断材料になります
テストの方向だけでなく、どの層が準備できているかを確認することが大切です。
補足コラム
トップダウンテストでは、未完成の下位モジュールをスタブで置き換えます。反対に、ボトムアップテストでは、未完成の上位モジュールの代わりにドライバを使います。
この問題では上位層がテスト済みで、下位層のテストが遅れています。そのため、下位層の完成を待たずに上位側から進められるトップダウンテストが有効です。
FAQ
Q. スタブとは何ですか?
A. テスト対象のモジュールが呼び出す、未完成の下位モジュールの代役です。呼び出しに対して、想定した値や応答を返します。
A. テスト対象のモジュールが呼び出す、未完成の下位モジュールの代役です。呼び出しに対して、想定した値や応答を返します。
Q. ボトムアップテストで使う代替モジュールは何ですか?
A. ドライバです。テスト対象となる下位モジュールを呼び出す、上位モジュールの代役として使います。
A. ドライバです。テスト対象となる下位モジュールを呼び出す、上位モジュールの代役として使います。
Q. トップダウンテストでは、ハードウェアがなくてもテストできますか?
A. ハードウェアとのインタフェースをスタブやシミュレータで代替できれば、ハードウェアの準備前に上位層のテストを進められます。
A. ハードウェアとのインタフェースをスタブやシミュレータで代替できれば、ハードウェアの準備前に上位層のテストを進められます。
関連キーワード: トップダウンテスト、ボトムアップテスト、サンドイッチテスト、ビッグバンテスト、スタブ、ドライバ

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

