上位モジュールから順に下位を結合して検証していくテスト。
トップダウンテストとは、複数のモジュール(=部品となる小さなプログラム)を結合していくとき、上位(呼び出す側)のモジュールから順に、下位(呼び出される側)を結合して検証していく方式のことです。複数モジュールを組み合わせて検証することを結合テストと呼びます。
身近な例で考えると、家を建てるときにまず全体の骨組み(柱や梁)から作るのに似ています。先に大きな構造を組んでから、内装や細かい設備を順に取り付けていくイメージです。プログラムでも全体を制御する流れを先に確かめます。
上のツールで▶ボタンを押すと、最上位 A から始めて B・C、さらに D・E へと、上から下へモジュールを本物に置き換えながら結合していく流れを確認できます。
上位モジュールをテストしようとすると、上位はその下にある下位モジュールを呼び出します。しかし下位がまだ完成していないと、テストが進みません。そこで使うのがスタブ(stub)です。スタブとは、呼び出されたら決まった値を返すだけの、下位モジュールの仮の代用品です。
スタブの特徴は次のとおりです。
・中身は張りぼて:本来の処理はせず、あらかじめ決めた結果を返すだけ
・下位の代わり:上位から呼ばれたときの「受け皿」になる
・順次置き換え:下位が完成したら本物に差し替えていく
料理に例えると、盛り付けの練習で使う食品サンプルのようなものです。本物の料理(下位)がまだなくても、サンプルを置けば全体の盛り付け(上位の動き)を確認できます。上のツールで黄色の点線枠がスタブで、本物が完成すると緑に変わります。
結合テストには、上から進めるトップダウンと、下から進めるボトムアップの2つの方向があります。どちらも目的は同じですが、進む向きと使う仮の部品が逆になります。
| 項目 | トップダウンテスト | ボトムアップテスト |
|---|---|---|
| 進む向き | 上位 → 下位 | 下位 → 上位 |
| 使う仮の部品 | スタブ(下位の代用) | ドライバ(上位の代用) |
| 早く分かること | 全体の制御の流れ(骨格) | 下位の細かい機能の正しさ |
覚え方として、トップダウンは「下を仮置き」なのでスタブ、ボトムアップは「上を仮置き」なのでドライバと、向きと仮部品をセットで押さえると混同しにくくなります。