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

トップダウンテストとは「結合テスト」を行う際に使われる手法の1つです。

システム開発の際には、1つ1つのプログラム/モジュールの動作を確認する「単体テスト」、プログラム/モジュールを組み合わせて予定通りに動作するか確認する「結合テスト」など、さまざまなテストを行います。

この結合テストの際に、上位モジュールから下位モジュールの順番でテストを行うことを「トップダウンテスト」と言います。

ボトムアップテストとは?

ボトムアップテストも「結合テスト」を行う際に使われる手法の1つです。ただし、トップダウンテストとは違い、下位モジュールから上位モジュールの順番でテストを進めていきます

上位モジュール・下位モジュールとは?

「上位モジュール・下位モジュールと聞いても、どのようなものか想像できない」という方も多いでしょう。

上位モジュールは機器全体のリソースやシステムの処理状況を管理する機能、下位モジュールは上位モジュールに呼び出される細かな部品のような機能を担っています。

ここからは、上位モジュール・下位モジュールについて詳しく説明します。

上位モジュール

上位モジュールとは、機器全体のリソースやシステムの処理状況を管理しているモジュールのことです。この特性上、常にアクティブになっています。

PCを例に挙げると、OSが上位モジュール、PCに入っているソフトが下位モジュールというイメージです。OSがPC全体のリソースを管理し、必要に応じて下位モジュールであるソフトを起動したり制御したりします。

より具体的に説明すると、画像編集ソフトを開いた時に、OSがメモリやCPUを確保してソフトを起動させるイメージです。画像を開く場合も、画像フォルダなどの下位モジュールを呼び出しています。

このように、上位モジュールは単体の機能を持つ下位モジュールを呼び出し、管理する働きを持っています。

下位モジュール

下位モジュールとは、上位モジュールに呼び出される単体機能のことです。

PCの例では、1ソフトでしかない下位モジュールは、いつOSに呼び出されるか、また自分が全体の何%のメモリを使っているのかなどは把握していません。

上位モジュールからの指示により、単体で機能を実行する役割を持ちます。

モジュールが揃っていない場合の対処方法

トップダウンテストやボトムアップテストを行う前に全てのモジュールが揃っていることが理想ではありますが、中には全て完成しないままテストがスタートすることもあります。

そのような場合は、未完成のモジュールの代わりに「ドライバ」や「スタブ」と呼ばれる仮のモジュールを利用することが一般的です。ここからは、ドライバ・スタブの役割や重要性を解説します。

下位モジュールの代わりに使用する「スタブ」を用意

スタブは、トップダウンテストを実施する際に使用される、簡易的な下位モジュールです。実質的な機能は持たず、単に呼び出されることだけを目的に設置されます。

例えば、画像編集ソフトの機能をテストする場合には実際に画像を反映・編集することは出来ませんが、上位モジュールに呼び出されたタイミングで起動します。

本来の下位モジュールの働きをシンプルに模倣することで、効率的にテストを進めていくことができます。

上位モジュールの代わりに使用する「ドライバ」を用意

ドライバは、ボトムアップテストを実施する際に使用される、簡易的な上位モジュールです。例えば「ソフトの起動を促す機能だけを持つPC環境」など、テスト対象モジュールを呼び出すだけの簡易的な働きを持っています。

本来のモジュールの働きを模倣したシンプルなモジュールを作成することで、効率的にテストを進めていくことができます。

トップダウンテストのメリット/デメリット

ここからは、トップダウンテストのメリット・デメリットを紹介します。

メリット

トップダウンテストのメリットは、モジュール間での不具合を早期に発見できることです。

上位モジュールからスタートし、徐々に下位モジュールを統合してテストを行うという手法上、以下のような不具合をシステム開発の初期段階で特定できます。

・下位モジュールを呼び出す際の不具合
・メモリなど、上位モジュールのリソースの管理不足
・起動や処理の不具合

そのほか、ボトムアップテストでは上位モジュールから下位モジュールまでを繰り返しテストする為、システムの信頼性が高まることや、システムの全体像を把握しやすいというメリットもあります。

デメリット

トップダウンテストのデメリットは、完成していない下位モジュールが多い場合は、その分たくさんのスタブを作成する必要があることです。

システムによっては、下位モジュールが分岐したり、複雑化していたりすることもあります。その場合テストの度にスタブを複数作成しなければならず、かなりの工数が割かれてしまいます。

ボトムアップテストのメリット/デメリット

ここからは、ボトムアップテストのメリット・デメリットを紹介します。

メリット

ボトムアップテストのメリットは、開発の初期段階から効率的に品質を管理できることです。

モジュールの開発とテストを同時に進める手法上、以下のように品質を高めることができます。

・各モジュールの機能を詳細に検証できる
・後工程での大規模な手戻りを回避できる

デメリット

ボトムアップテストのデメリットは、最終段階で大きな不具合が出てくるケースもあることです。

上位モジュールのテストを最後に実施するため、プロジェクトの最終段階でインターフェースに問題が発生し、修正を余儀なくされる可能性もあります。

上位モジュールで不具合が見つかると、それに合わせて下位モジュールも修正しなければなりません。広範囲に影響が広がる可能性があるのは、大きなデメリットと言えるでしょう。

トップダウンテストを行う際は、余裕を持ったスケジュール管理を

ここまで、トップダウンテスト・ボトムアップテストの特徴やメリット/デメリットを紹介してきました。システム開発は費用や期間に制限があるからこそ、最適なテスト方法を提案・実施できる開発会社を見つけることが大切です。

弊社BLUEWIND ASIAは、フィリピンのセブ島でオフショア開発の支援を行っております。 

プログラマー・シニアエンジニアなどのデベロッパーが一律月38万円でサポートいたしますので、国内で開発を行うよりもコストを削減できます。 

また、必ず窓口に日本人の担当者を配置しますので、オフショア開発においてネックになる文化・言語の障壁なく、スムーズにプロジェクトを進行できると好評をいただいております。 

まずは「自社のプロジェクトにオフショア開発が向いているか?」「予算や納期の目安は?」など、小さなことからでも構いません。 

日本人のスタッフが丁寧にお話しを伺いますので、まずはお気軽にお問い合わせください。