トップダウンテストは、ソフトウェア開発でよく使われるテスト手法のひとつです。しかし、具体的な実施方法やメリットについて詳しくない人も少なくありません。
そこでこの記事では、トップダウンテストに関連するテストから知っておくべき概念、メリットまで解説します。
トップダウンテストとは?
トップダウンテストとは、システムやアプリケーション開発におけるテストのひとつです。ひとつのシステムには複数のモジュールがあり、全てが連動して組み合わさりながら機能する必要があります。
1つひとつのモジュールに対して実施するテストを「単体テスト」と呼び、モジュールを組み合わせたテストを「結合テスト」と呼びます。結合テストを実施する際、モジュールを上位から下位へとテストすることが「トップダウンテスト」です。
トップダウンテストと関連する2つのテスト手法
トップダウンテストと関連するテスト手法には、以下の2つが挙げられます。
- ボトムアップテスト
- ビッグバンテスト
ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。
1.ボトムアップテスト
上位モジュールからテストを実施するトップダウンテストに対して、下位モジュールから行うものがボトムアップテストです。最初に下位モジュールのテストを実施し、問題が発生しなければ上位モジュールと結合してテストを進めます。
ボトムアップテストを実施する場合、利用できない上位モジュールが必要なケースでは、ダミーの上位モジュールとなる「ドライバ」を用意します。
2.ビッグバンテスト
トップダウンテスト・ボトムアップテストは、モジュールを1個ずつ追加していくことが共通しています。しかし、まだテストが実施されていないモジュールも含めて、一気に行うビッグバンテストがあり、テストをスピーディーにできることがメリットです。
その反面、不具合があれば「どこに原因があるのか」がわかりにくいというデメリットがあります。基本的には、トップダウンテストなどを実施後に、最終チェックするためにビッグバンテストを行うことが一般的です。
トップダウンテストを行う前に知っておきたい4つの概念
トップダウンテストを行う前に知っておきたい概念には、以下の4つが挙げられます。
- 上位モジュール
- 下位モジュール
- スタブ
- ドライバ
ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。
1.上位モジュール
上位モジュールは、システム内において「下位モジュールを呼び出す」場所に位置しています。システムのリソースなどを常に把握し、システム上ではアクティブな状態にあるモジュールです。
スマートフォンを例に考えると、スマートフォンが上位モジュールにあたり、インストールされているアプリが下位モジュールに該当します。
2.下位モジュール
下位モジュールは、システム内において「上位モジュールに呼び出される」場所に位置しています。下位モジュールの特徴は、以下の通りです。
- 単体機能が多い
- 呼び出されることによって機能を実行する
スマートフォンを例に考えると、アプリ自体は、いつスマートフォンから起動されるかは把握できないため、呼び出されたら機能を実行します。
3.スタブ
スタブはテストを実施する際、下位モジュールの代わりに利用されるモジュールです。スタブは、何の機能も有していないため、モジュールから呼び出されるだけのダミーモジュールと考えるとわかりやすいかもしれません。
スマートフォンの例を挙げると、アプリを起動した際にモジュールを呼び出せるかという動作を確認するためだけに呼び出されるモジュールです。
4.ドライバ
ドライバはボトムアップテストを実施する際、必要となる上位モジュールの代わりに使われるものです。ドライバは、ダミーの上位モジュールとして、テスト対象のモジュールを呼び出すことだけが役割となります。
つまり、トップダウンテストで利用される「スタブ」と逆の目的が与えられたダミーモジュールと考えるとわかりやすいかもしれません。
トップダウンテストのメリット
トップダウンテストのメリットは、不具合を早期発見できることです。トップダウンテストは上位モジュールから順にテストを実施し、下位モジュールを結合していきます。
そのため、モジュールを結合した場合に発生した不具合をすぐに発見することが可能です。たとえば、呼び出せない下位モジュールや想定していない挙動があれば、テスト時点で特定できます。
また、テストを実施するうえで、重要なモジュールは何度も使われるため、信頼性を高められることもメリットです。
トップダウンテストのデメリット
トップダウンテストにはデメリットもあり、スタブを作成しなければならないことが挙げられます。
もしも、テスト実施時に下位モジュールが開発中だった場合、スタブで代替します。しかし、完成していない下位モジュールがたくさんある場合は、スタブを作成し続けなければなりません。
また、下位モジュールはシステムごとに複数の分岐があることがほとんどです。そうなるとスタブも複雑になり、テストごとに必要となるスタブ作成だけで時間をロスしてしまいます。
トップダウンテストの2つの注意点
トップダウンテストの注意点として、以下の2つが挙げられます。
- 実施タイミング
- スケジュール
ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。
1.実施タイミング
トップダウンテスト実施のタイミングとしては、上位モジュールと下位モジュールを結合する場合です。システムの動作テストを上位から順に実行していくことにより、不具合の原因特定を容易にできることが見込めます。
また、下位モジュールが増えるほど、上位モジュールの実行回数も多くなるため、信頼性を担保することにもつながります。
2.スケジュール
トップダウンテストは、システムテスト実施の前段階で行われます。結合テストとなるため、多くのエラーや不具合が出ることを予測しておく必要があります。
そこで注意しなければならないのは、不具合の修正を見越したスケジュール管理です。一般的にシステムには、多岐にわたる下位モジュールが紐づいています。
また、処理が複雑になるほど、テストすべき範囲も広くなり、修正箇所もそれに比例して増えてしまうでしょう。
トップダウンテストに関するよくある2つの質問
トップダウンテストに関するよくある質問には、以下の2つが挙げられます。
- 質問1.トップダウンテストとは何ですか?
- 質問2.ドライバとスタブの違いは何ですか?
ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。
質問1.トップダウンテストとは何ですか?
トップダウンテストとは、ソフトウェア開発におけるテスト手法のひとつです。上位モジュールから下位モジュールの順に検証していきます。
ソフトウェアは、基本的に複数のモジュールが組み合わさって構成されています。複数のモジュールをつないで一度にテストしようとすると、問題箇所が特定しにくいおそれが高まってしまうでしょう。
そのため、1つひとつのモジュールをつなぎ合わせて、検証を繰り返していきます。
質問2.ドライバとスタブの違いは何ですか?
ドライバとスタブの違いは以下の通りです。
スタブ:トップダウンテストに必要なテスト用モジュール
ドライバ:ボトムアップテストに必要なテスト用モジュール
それぞれ、未完成のモジュールの代わりに上位・下位の呼び出しに呼応できるかを検証するためだけに用いられます。つまり、テスト時に置かれる場所に応じて呼び名が変わりますが、目的や役割に違いはありません。
まとめ
トップダウンテストに関することを解説しました。トップダウンテストは、上位モジュールから下位モジュールへと順番にテストを実施する手法です。1つひとつの結果をテストごとに検証するため、不具合の場所がすぐに特定できることがメリットだといえます。
しかし、その分時間がかかってしまうため、修正まで含めたスケジュールを組まなければなりません。トップダウンテストのメリット・デメリットを理解して、ソフトウェア開発に活用してみてください。