サンドイッチテストとは

サンドイッチテストは、ソフトウェアテスト工程における結合テスト(Integration Test)の手法の一つであり、ボトムアップテストとトップダウンテストの利点を組み合わせ、テストを効率的に進める方式のことであり、システムの最上位モジュールと最下位モジュールから並行して結合テストを開始し、中間層のモジュールをスタブやドライバを使用せずに実物で結合テストを行うための、大規模システム開発で採用されるハイブリッドな統合テスト戦略のことです。

サンドイッチテストの概要と位置づけ

サンドイッチテスト(Sandwich Testing)は、特に階層構造を持つ大規模なシステムにおいて、統合テストのフェーズを効率的に進めるために考案された手法です。

システムの最上層(ユーザーインターフェースなど)と最下層(データベースや外部インターフェースなど)から同時にテストを開始し、中間層でそれらを結合します。この手法は、トップダウンテストとボトムアップテストの欠点を補い合うハイブリッドなアプローチです。

1. トップダウンテストとボトムアップテスト

サンドイッチテストを理解するためには、その基礎となる二つの手法の特性を把握しておく必要があります。

  • トップダウンテスト: 最上位の制御モジュールから開始し、下位モジュールに向かってテストを進めます。未完成の下位モジュールはスタブ(Stub)と呼ばれるダミープログラムに置き換えられます。
    • 利点: 重要な機能やインターフェースを早期に確認できます。
    • 欠点: 入出力の細部(I/O処理)のテストが遅れ、スタブ作成のコストがかかります。
  • ボトムアップテスト: 最下位のモジュールから開始し、上位モジュールに向かって結合テストを進めます。未完成の上位モジュールはドライバ(Driver)と呼ばれるダミープログラムに置き換えられます。
    • 利点: 入出力処理やユーティリティ機能などの基本機能のテストが確実に行えます。
    • 欠点: システムの全体像や上位機能の検証が遅れ、ドライバ作成のコストがかかります。

2. サンドイッチテストの戦略

サンドイッチテストは、この両手法の利点を統合します。

  • 上層: トップダウンテストを実施します。
  • 下層: ボトムアップテストを実施します。
  • 中間層: 上層からのテスト結果と下層からのテスト結果を統合し、スタブやドライバを使用せずに実物のモジュール同士を結合します。

この構造が、サンドイッチのように見えることから、この名称がつけられました。

サンドイッチテストの実施手順とメリット

1. 実施手順

  1. システム分割: システムを上位、中間、下位の三つの論理的な層に分割します。
  2. 並行テスト開始:
    • 上位層: トップダウンテストを開始し、中間層に相当するモジュールをスタブで代用します。
    • 下位層: ボトムアップテストを開始し、中間層に相当するモジュールをドライバで代用します。
  3. 中間層の結合: 上位層と下位層のテストが一定の段階に達した時点で、中間層のモジュールを完成させ、スタブやドライバを実モジュールに置き換えて結合テストを行います。

2. サンドイッチテストの主なメリット

  • 効率的なテスト: トップダウンとボトムアップの活動を並行して進めることができるため、テスト期間の短縮に貢献します。
  • 早期の問題発見: システムの最上位(ユーザーに近い部分)と最下位(データに近い部分)という重要なインターフェースが早期にテストされるため、主要な設計上の欠陥を早期に発見できます。
  • スタブ/ドライバ作成コストの削減: 中間層のモジュールテストでは実物を使用するため、他の手法と比較してテスト用のダミープログラム(スタブやドライバ)を作成するコストを削減できます。

3. デメリット

  • テスト戦略の複雑性: トップダウンとボトムアップの二つの独立した結合テスト活動を同時に管理する必要があるため、計画と進捗管理が他の手法よりも複雑になります。
  • 中間層のテスト遅延: 上層と下層のテストがある程度完了するまで、中間層のモジュール単体でのインターフェーステストが遅れる可能性があります。

サンドイッチテストは、特に開発規模が大きく、複数の開発チームが上位と下位で同時並行的に作業を進める場合に、その真価を発揮する統合テスト戦略です。

関連用語

結合テスト | 今更聞けないIT用語集
ソフトウェアテスト | 今更聞けないIT用語集
ソフトウェアエンジニアリング

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。