サンドイッチテストとは何か?トップダウンテスト・ボトムアップテストとの違いを含めて解説

2021年4月8日

サンドイッチテストとは

システム開発における「サンドイッチテスト」とは、結合テストの種類の1つです。
一箇所のテストが完了次第、次のテスト対象モジュールを追加していくため、「増加テスト(インクリメンタルテスト)」と呼ばれる種類に分類されます。
「トップダウンテスト」「ボトムアップテスト」の両方の性質を持っているため、「折衷テスト」と呼ばれることもあります。

サンドイッチテストの流れ

サンドイッチテストは、システム構造の中間からテストを開始し、徐々に上位と下位へテスト範囲を広げていく手法です。
サンドイッチテストはシステム構造の中間からテストを始めますが、上位から始めるテストをトップダウンテスト、下位から始めるテストをボトムアップテストと言います。

トップダウンテストは最上位のモジュールから結合テストを行う手法です。
上位モジュールの処理が複雑で、特に重要な機能となるシステムに向いています。
下位のモジュールを呼び出すテストの際、ダミー部品となる下位モジュール「スタブ」を作成する必要があります。

一方、ボトムアップテストは最下位のモジュールから結合テストを行う手法です。
下位モジュールの機能が重要で、安定性や信頼性を高める必要があるときに向いています。また既存システムへの新規モジュール追加にも適したテストです。
上位のモジュールを呼び出すテストの際、ダミー部品となる上位モジュール「ドライバ」を作成する必要があります。

サンドイッチテストとトップダウンテスト、ボトムアップテストとの違いは、テストを開始する位置が異なるだけで、大まかなテストの流れや性質はそのほかの増加テストとあまり変わりません。
中間から開始することにより、トップダウンテストとボトムアップテスト両方のメリットをバランスよく活かせるようになっています。
完成した部品からテストを行えるため、開発とテストを同時に進行できるというメリットもあります。
またモジュールの結合を1つずつテストするので、不具合を把握しやすく、バグ回収がしやすい手法と言えるでしょう。

サンドイッチテストの留意点

サンドイッチテストはトップダウンテスト・ボトムアップテスト両方の利点を活かせるテストです。
しかし中間構造のモジュールをテストするため、多くの場合「スタブ」「ドライバ」両方の準備が必要となります。そのため、サンドイッチテストは準備に必要な時間やコストが他のテスト手法に比べて多くなりがちです。

また、中間といえど、どのモジュールからテストを開発するかによってテストの効率は変動します。より効率よくテストを進めるためには、システム構造全体への理解も必要です。

参考