FE EXAM

トップダウンテスト(上位から結合)

上位モジュールから順に下位を結合して検証していくテスト。

INTERACTIVE VISUALIZATION
結合済
スタブ
テスト中
フェーズ
idle
結合した本物
0 / 5
使用中スタブ
0
シナリオ
ステップ1 / 6
STEP 1/6モジュール構成を確認プログラムは複数のモジュール(=部品となる小さなプログラム)に分かれています。上から A(全体制御)、その下に B・C、さらに B の下に D・E がぶら下がる木構造です。トップダウンテストでは、この木の上から順に結合していきます。
A 全体制御未着手B 入力処理未着手C 出力処理未着手D 検査未着手E 変換未着手
解説

📌
トップダウンテストとは

ABC上位を先にテスト、下位はスタブで代用

トップダウンテストとは、複数のモジュール(=部品となる小さなプログラム)を結合していくとき、上位(呼び出す側)のモジュールから順に、下位(呼び出される側)を結合して検証していく方式のことです。複数モジュールを組み合わせて検証することを結合テストと呼びます。

身近な例で考えると、家を建てるときにまず全体の骨組み(柱や梁)から作るのに似ています。先に大きな構造を組んでから、内装や細かい設備を順に取り付けていくイメージです。プログラムでも全体を制御する流れを先に確かめます。

上のツールで▶ボタンを押すと、最上位 A から始めて B・C、さらに D・E へと、上から下へモジュールを本物に置き換えながら結合していく流れを確認できます。

🧩
スタブの役割

上位 A(本物)呼び出す下位スタブ(仮)

上位モジュールをテストしようとすると、上位はその下にある下位モジュールを呼び出します。しかし下位がまだ完成していないと、テストが進みません。そこで使うのがスタブ(stub)です。スタブとは、呼び出されたら決まった値を返すだけの、下位モジュールの仮の代用品です。

スタブの特徴は次のとおりです。
中身は張りぼて:本来の処理はせず、あらかじめ決めた結果を返すだけ
下位の代わり:上位から呼ばれたときの「受け皿」になる
順次置き換え:下位が完成したら本物に差し替えていく

料理に例えると、盛り付けの練習で使う食品サンプルのようなものです。本物の料理(下位)がまだなくても、サンプルを置けば全体の盛り付け(上位の動き)を確認できます。上のツールで黄色の点線枠がスタブで、本物が完成すると緑に変わります。

⚖️
ボトムアップとの違い

結合テストには、上から進めるトップダウンと、下から進めるボトムアップの2つの方向があります。どちらも目的は同じですが、進む向きと使う仮の部品が逆になります。

項目トップダウンテストボトムアップテスト
進む向き上位 → 下位下位 → 上位
使う仮の部品スタブ(下位の代用)ドライバ(上位の代用)
早く分かること全体の制御の流れ(骨格)下位の細かい機能の正しさ

覚え方として、トップダウンは「下を仮置き」なのでスタブ、ボトムアップは「上を仮置き」なのでドライバと、向きと仮部品をセットで押さえると混同しにくくなります。

練習問題

🎯
基本情報技術者 練習問題

Q1.トップダウンテストの説明として最も適切なものはどれか。
A.上位モジュールから順に下位を結合して検証していく方式
B.下位モジュールから順に上位を結合して検証していく方式
C.すべてのモジュールを一度に結合して検証する方式
D.モジュールを使わず1つの大きなプログラムで検証する方式
Q2.トップダウンテストで使う「スタブ」の役割として正しいものはどれか。
A.まだ完成していない上位モジュールを呼び出す仮のプログラム
B.まだ完成していない下位モジュールの代わりに、決まった値を返す仮のプログラム
C.テスト結果を自動で集計するツール
D.本番環境に置く正式なモジュール
Q3.トップダウンテストの特徴として最も適切なものはどれか。
A.下位の細かい機能を最初に確実に確認できる
B.プログラム全体を制御する流れ(骨格)を早い段階から確認できる
C.ドライバ(呼び出し役)を多数用意する必要がある
D.スタブが一切不要である

関連コンテンツ