トップダウンテストとは??ボトムアップテストと比較しながら分かりやすく解説!
トップダウンテストは、上位モジュールから下位モジュールへの連携をテストします。システム開発者としては必須の知識といえるでしょう。また、テスト時に利用するスタブの役割なども知っておく必要がります。今回は、トップダウンテストについて、ボトムアップテストと比較しながら分かりやすく解説します。
目次
トップダウンテストとは
トップダウンテストとは、システム開発における結合テストのひとつです。
システムは、さまざまな機能にわかれたモジュールが、すべて組み合わさり機能しなければなりません。
一つ一つのモジュールテストを単体テストと呼び、モジュールを組み合わせたテストを結合テストと呼びます。
このとき、テスト対象のモジュールを上位モジュールから下位モジュールへテストする流れをトップダウンテストといいます。
トップダウンテストをおこなう際に、利用できない下位モジュールがある場合にはスタブというダミーの下位モジュールを利用します。(スタブについては後述します)
ボトムアップテストとは
上位モジュールからテストをおこなうトップダウンテストに対して、下位モジュールからおこなうテストをボトムアップテストといいます。
まずシステムの部品となる下位のモジュールのテストのテストを行い、問題がなければ上位モジュールと結合してテストを進めていきます。
ボトムアップテストをおこなう際に、まだ利用できない上位モジュールが必要な場合には、ダミーの上位モジュールであるドライバを用意します。(ドライバについては後述します)
ビッグバンテストとは
トップダウンテストやボトムアップテストはモジュールを1個ずつ追加していく増加テストに対して、まだテストを行っていないモジュールも含め一気に行うビッグバンテストがあります。
この方法だとテストを速く行える一方、もし不具合が生じた場合にどこに原因があるか調べるのが難しいという欠点もあります。
基本的にはボトムアップテストやビッグバンテストを完了後に最終確認として用いられます。
しかし、プロジェクトの進捗がギリギリになってしまいやむ得ない場合や、モジュールの少ない単純なプログラムの場合にもビッグバンテストは採用されます。
本記事ではトップダウンテストとボトムアップテストについて紹介していきますが、ビッグバンテストという方法があることも是非覚えといていただけると幸いです。
上位モジュールと下位モジュール
トップダウンテストやボトムアップテストの説明をするうえで上位モジュールや下位モジュールがどのようなものかを理解しておく必要があります。
上位モジュール
上位モジュールは、システム内で下位モジュールを呼び出す立ち位置です。システムの処理状態やリソースなどを把握しており、常にシステム上でアクティブであるモジュールです。
スマートフォンを例に挙げるとすると、スマートフォン自体が上位モジュールにあたり、スマートフォンを操作して起動するアプリが下位モジュールといったイメージです。
スマートフォンは、現在どのようなアプリが起動しているかを把握し、リソースの状態によっては不要なアプリの機能を停止します。
アラームをセットすれば、スマートフォン自体が時間モジュールから時刻を把握し、セットされた時間にアラームモジュールを呼び出し起動するイメージだとわかりやすいかもしれません。
上位モジュールは、単体の機能をもつ下位モジュールを呼び出し、状態を把握するモジュールです。
下位モジュール
下位モジュールとは、システム内で上位モジュールに呼び出されるモジュールです。
下位モジュールの特徴と機能は以下の通りです。
・汎用性の高い単体機能が多い
・呼び出されたら単体で機能を実行する
上述のスマートフォンの例でいえば、いつスマートフォンから起動されるかは把握しておらず、呼び出されたら実行するというだけです。
アラームのモジュールであっても、実行する時間は把握していませんので、スマートフォンから呼び出されればアラームを鳴らしますし、スマートフォンから命令があればアラームを止めます。
リソースなども把握していませんので、上位モジュールに開放されれば素直に従います。
\ IT転職のプロが無料でサポート! /
スタブとドライバ
システムテストにおいて、トップダウンテストでもボトムアップテストでも、すべてのモジュールがそろっている状態が理想です。
しかし、モジュールがそろっていない場合には、簡易的にダミーのモジュール(スタブやドライバ)を用意してテストをおこないます。
スタブの役割
下位モジュールの代わりに利用するモジュールがスタブです。
スタブは、基本的に何の機能も持っておらず、モジュールから呼び出されるだけの、ダミーのモジュールとして用意されます。
スマートフォンの例でいえば、時間通りにアラームモジュールを呼び出せるかというテストの際、その動作を確認するためだけに、鳴らないアラームモジュールを用意するイメージです。これが、スタブの役割です。
ドライバの役割
ボトムアップテストをおこなう際、必要な上位モジュールの代わりに利用するのがドライバです。
ドライバは、ダミーの上位モジュールとして、テスト対象のモジュールを呼び出すだけの役割を果たします。
テスト対象のモジュールがスマートフォンのアラームであれば、アラームを呼び出す部分だけを持つ、ダミーのスマートフォンを用意するのです。
トップダウンテストで利用するスタブとは真逆のダミーモジュールです。
トップダウンテストのメリットとデメリット
トップダウンテストには、メリットとデメリットがあります。
メリット:不具合の早期発見
トップダウンテストは上位モジュールのテストを行い、下位モジュールを結合して徐々にテストをおこなうため、モジュールを結合した場合の不具合を早期発見できます。
呼び出せない下位モジュールや、リソース管理の不具合、処理や起動のタイミングなどで期待しない動きがあれば、早い段階で特定できるのです。
また、テストでは重要なモジュールが何度も使用されるため、モジュールの信頼性を高めるというメリットがあります。
デメリット:スタブを作る必要がある
下位モジュールが開発途中の場合、スタブで対応します。しかし、完成していない下位モジュールの数が多い場合は、その分スタブをつくり続けなければなりません。
下位モジュールは、システムによっては複数の分岐したモジュールが必要な場合もあります。
スタブは複雑になり、テストごとのスタブ作成だけで時間がとられてしまうことがあるのです。
ボトムアップテストのメリットとデメリット
ボトムアップテストにも、メリットとデメリットがあります。
メリット:開発と同時進行しやすい
下位モジュールからテストしていくため、初期の段階で開発とテストの同時進行を行いやすいメリットがあります。そのためモジュール単体の機能の吟味やそのテストを十分に行うことが可能です。
デメリット:一気に影響を受けやすい
上位モジュールのテストを最後に行うため、最終段階でインターフェイス上で何か問題が出てくる可能性が高いです。
また、上位モジュールで問題が発生してしまい余儀なく改修する場合、その際に下位モジュールもそれに合わせて改修する必要があり影響がでてきます。
トップダウンテストをおこなうタイミングと注意点
以下、トップダウンテストをおこなう際に意識する、タイミングと注意点です。
・上位モジュールと下位モジュールを結合テストするタイミング
・余裕を持ったスケジュール
上位モジュールと下位モジュールの結合テスト
トップダウンテストをおこなうタイミングのひとつは、上位モジュールと下位モジュールの結合テストです。
システムの本来の動作を上位から実行することで、不具合の問題切り分けを容易にします。
下位モジュールが多いほど、上位モジュールが実行される回数も多くなり、上述したメリットである信頼性の担保にもつながるのです。
余裕を持ったスケジュール
トップダウンテストは、システムテストをおこなう前の段階で実施されます。
結合テストですので、多くの不具合が出ることも予測しておかなければなりません。そこで注意すべき点は、不具合の改修の余裕も見越したスケジュール管理です。
システムの多くは、多岐にわたる下位モジュールをもっています。システムの処理が複雑になればなるほど、そのテスト範囲も広くなり、不具合も比例して多くなるでしょう。
スタブを使ったテストではうまくいっていたものも、すべての下位モジュールがそろうと不具合が出るという現象もあります。
不具合を改修し、テストをおこなう。この繰り返しを見越したスケジュール管理が必要ということです。
まとめ
トップダウンテストは、上位モジュールから下位モジュールへと降りていく結合テストです。下位モジュールがなければスタブを作成することで、テストをおこないます。
スタブとドライバで混乱するという人もいますが、身近なモノに置き換え、しっかりとイメージして覚えましょう。
また、何度もテストを繰り返すことで、信頼性の向上にもつながります。状況に合わせて、トップダウンテストとボトムアップテストを使い分けることが大切です。
\ IT転職のプロが無料でサポート! /
あわせて読みたい関連記事
この記事を読んでいる人におすすめの記事