結合テストとは
結合テスト(けつごうてすと)とは、単体テストをクリアした複数のプログラム部品を組み合わせ(結合し)、それらが連携して正しく動作するかどうかを検証するテスト工程です。英語では「インテグレーションテスト」と呼びます。
家づくりに例えると、個別のチェックが終わったドアとドア枠を壁に取り付けてみて、「ドアが引っかからずにスムーズに開閉するか」「鍵がきれいに閉まるか」といった、部品同士の相性や連携具合を確認する作業に相当します。個々の部品が完璧でも、繋ぎ合わせた時にデータの受け渡しがうまくいかないというトラブルがよく発生するため、このテストは非常に重要です。
具体例
Webサイトで「ログイン画面」と「会員データベース」を組み合わせてテストする場合が挙げられます。具体的には以下のような点を確認します。
- ログイン画面にIDとパスワードを入力して「ログインボタン」を押したとき、その情報がデータベースに正しく送信されるか
- データベース側で登録情報と一致していると判定されたら、ログイン画面から「マイページ」へと正しく画面が遷移するか
- 間違ったパスワードを送ったときに、データベースからエラーが返り、ログイン画面に「パスワードが違います」と正しく表示されるか
もう少し詳しく
結合テストでは、モジュール間のデータ受け渡しや連携動作の正しさを検証します。この工程では、システムの内部構造を意識せずに、入力と出力の関係だけに着目する「ブラックボックステスト」が主に用いられます。結合テストの進め方には、主に「トップダウンテスト」と「ボトムアップテスト」の2種類があります。トップダウンテストは、システムの上位モジュール(ユーザーインターフェースに近い部分)から順に下位モジュールを結合していく手法で、未完成の下位モジュールの代わりに「スタブ」と呼ばれるダミープログラムを使用します。一方、ボトムアップテストは、下位モジュールから順に上位へと結合していく手法で、未完成の上位モジュールの代わりに「ドライバ」と呼ばれるダミープログラムを使用します。これらの手法の選択は、開発スケジュールやシステムの特性に応じて判断されます。
試験でのポイント
試験対策としては、「スタブ」と「ドライバ」の役割の違いを正確に理解しておくことが最大のポイントです。上位モジュールをテストする際に下位の代わりを務めるのが「スタブ(Stub:切り株のように下に置く)」、下位モジュールをテストする際に上位の代わりを務めるのが「ドライバ(Driver:動かすもの)」です。この2つを入れ替えたひっかけ問題が頻出します。また、結合テストが「単体テストで確認済みの部品同士を繋ぎ合わせるテスト」であり、データのインターフェース(接続部分)の不整合や、複数の処理が重なった時の排他制御の問題などを検出するために行われるという目的も頻繁に出題されます。
関連する用語
単体テスト、システムテスト、スタブ、ドライバ、ブラックボックステスト