結合テストとは
結合テストとは、単体テストをクリアした複数のプログラムの部品(モジュール)を組み合わせたときに、それらが連携して正しく動作するかを検証するテストのことです。モジュール同士をつないだ境界(インターフェース)でデータの受け渡しがスムーズに行われているかを確認します。
個別の部品がどれだけ完璧に動いていても、それらを合体させたときに「データの形式が合わない」「処理を送るタイミングがズレて動かない」といった問題が頻繁に発生します。結合テストでは、複数のモジュールを段階的に組み立てながら、処理の流れがスムーズであるかを確認します。画面からデータを入力してデータベースに登録されるかといった、複数の層にまたがる処理の検証もここで行われます。
具体例
ユーザーが会員登録を行うWebシステムで、「入力画面モジュール」と「データベース保存モジュール」を結合してテストする例です。
- テスト手順:画面で「山田太郎」と名前を入力し、登録ボタンを押す。
- 検証内容:
- 入力画面からデータベースに対して、正しい形式(文字列型など)で名前データが送られているか。
- データベース保存モジュールがデータを受け取り、エラーにならずに保存を完了できるか。
- 保存完了後に、画面側へ「登録完了」のメッセージが正しく返ってくるか。
もう少し詳しく
結合テスト(インテグレーションテスト)は、単体テストが完了したモジュール同士を組み合わせて、インターフェース(接続部分)でのデータの受け渡しや、連携動作に不具合がないかを検証する工程です。
モジュールを結合していくアプローチには、主に以下の3つの手法があります。
- トップダウンテスト: システムの上位(コントロールを行う主要部分)モジュールから順番に結合してテストする手法です。未完成の下位モジュールは「スタブ」と呼ばれるダミープログラムに置き換えてテストを行います。システムの骨組みを早期に検証できるメリットがあります。
- ボトムアップテスト: システムの下位(末端の具体的な処理部分)モジュールから順番に結合してテストする手法です。未完成の上位モジュールは「ドライバ」と呼ばれるテスト用呼び出しプログラムに置き換えます。初期段階から並行してテストを進めやすいメリットがあります。
- ビッグバンテスト: すべてのモジュールを一度にすべて結合してテストする手法です。スタブやドライバが不要なため手軽ですが、バグが発生した際に「どのモジュール同士の連携でエラーが起きたのか」原因を特定するのが極めて困難になるため、小規模なシステム以外では推奨されません。
試験でのポイント
試験では、結合テストの進め方である「トップダウンテスト」と「ボトムアップテスト」の比較がよく出題されます。
トップダウンテストでは「スタブ」が必要になり、ボトムアップテストでは「ドライバ」が必要になるという対応関係が最重要ポイントです。また、それぞれのテスト手法の長所と短所(例:トップダウンはシステムの基本構造が早い段階で検証できるがスタブの作成負荷が高い、ボトムアップはモジュール個別の動作確認を効率的に進められるがシステム全体の動きを確認するのが遅くなるなど)についても、比較整理しておく必要があります。
関連する用語
関連する用語には、上位から結合していく「トップダウンテスト」、下位から結合していく「ボトムアップテスト」、ダミーの下位モジュールである「スタブ」、およびダミーの上位モジュールである「ドライバ」があります。