最終更新日: 2022年12月8日
結合テスト(統合テスト)は、ソフトウェアテストの工程の一部です。単体のプログラムごとのテスト(単体テスト)の後に行われます。プログラム間の連携が正しく動作するのが、結合テストの役割です。
ただ結合テストには複数の種類や手法があり、初めての方には理解しづらいかもしれません。そこで、この記事では結合テストの概要や種類や手法、実施時の注意点について簡単に解説しています。
結合テスト(統合テスト)とは

結合テストの種類
結合テストは「コンポーネント統合(結合)テスト」「システム統合(結合)テスト」に分類されます。以下、それぞれのテストの概要を紹介します。
コンポーネント結合(統合)テスト
コンポーネント統合テストは、複数のコンポーネント間の連携が想定通りかチェックするためのテストです。より具体的には、コンポーネント間の連携によって生じるインターフェースの表示や処理内容が仕様書の通りかをチェックします。
たとえばRPGゲームを例にとると、「道具屋でのアイテム購入が想定通り動作するか」を確認するテストといえばわかりやすいでしょうか。このテストでは、道具屋でアイテムを販売する機能と、持ち物の機能(購入後に持ち物がどう変化するか)が連携するためです。
システム結合(統合)テスト
システム統合テストは、さらに2種類に分類されます。まず1つ目は、他システムと正しく連携するかをチェックするテストです。こちらもゲームに例えると、アイテムを課金して購入する動作のテストがわかりやすいでしょう。ゲーム内でアイテムを購入する機能と、課金システムの連携が試されるためです。
もう1つはソフトウェアと、そのソフトウェアを動作させるOS・ハードウェアとの連携を試すテストです。この2種類をあわせてシステム統合テストと呼びます。
結合テストの手法
結合テストの主な手法として、トップダウンテスト・ボトムアップテストの2種類があります。「トップダウン」「ボトムアップ」という言葉通り、これら2つはアプローチの仕方が正反対です。以下、それぞれの手法の概要を紹介します。
トップダウンテスト
「トップダウンテスト」という文字通り、より上位のモジュールの連携から試すテストのことです。下位のモジュールが開発途中の際は、ダミー(「スタブ」)を用意することもあります。
トップダウンテストは最上位のモジュールからテストをすることから、システムの重大な欠陥を速やかに発見しやすいのがメリットです。一方で開発と平行してテストを行うような場合に、必要となるスタブの数が増えその準備負担も大きくなるというデメリットがあります。
ボトムアップテスト
こちらも文字通り、より下位のモジュールの連携から試すテストのことです。上位のモジュール開発が完了してない場合は、モジュールを読み出すためのダミー(「ドライバ」)を用意することもあります。
ボトムアップテストでは下位のモジュールからテストすることになるため、開発と並行してテストを行いやすいのがメリットです。また下位のモジュールが検索や計算処理のような重要な機能を担う際は、より優先度の高い機能からテストできる点もメリットと言えます。
たいして、より上位のモジュールでバグが発見され改修が必要となったときは、下位のモジュールも改修が必要となる可能性が高いです。結果、作業量が増えてしまうというデメリットがあります。
結合テストを実施する時の注意点
結合テストの概要をみてきました。それでは結合テストを実施する際は、具体的にどんな点に気を付けるべきでしょうか。ここでは主な注意点を紹介します。
一度に多くを統合しない
結合テストでは効率を上げるために、より多くのプログラムを連携させてテストを行いたくなるかもしれません。しかしバグが発見された場合、連携させるプログラムが多くなるほど、どこに原因があるか見つけにくくなってしまいます。そのため統合テストでは、一度に多くのプログラムを統合させテストするべきではありません。
なお全てのプログラムを組み合わせて1度に行うテストのことを「ビッグバンテスト」と呼びます。ビッグバンテストは結合テストをスピーディーに完了できる反面、バグの原因の発見も難しくなります。そのため、以下にあげるケース以外では推奨されません。
・プロジェクトの進行上、どうしても時間がないとき
・プログラム数が少なくて一度にテストしても不具合の発見が困難でないとき
スケジュールは余裕をもたせる
結合テストでは複数のプログラムを連携させることから、想定以上の数のバグが発見されることも稀ではありません。そのため、あらかじめ多数のバグが発見された場合に備え、そのための改修も含めてスケジュールに余裕を持たせることが推奨されます。
スタブやドライバといったダミーを使ったテストでは正常でも、モジュールがそろったときにバグが発見されるということもあります。
まとめ
結合テストは、複数のプログラム(コンポーネント・モジュール)が正しく連携するかチェックするためのテストです。結合テストは、さらに「コンポーネント統合テスト」「システム統合テスト」に分類されます。
コンポーネント間統合テストとは、複数のコンポーネント間の連携を試すテストです。一方、システム統合テストは、コンポーネントと他システムの連携を試すテストや、ソフトウェアとOS・ハードウェアの連携を試すテストを指します。
結合テストでは、一度に多くのプログラムを連携させて実施するのは避けるべきです。連携するプログラムの数が多いと、バグの原因も探りにくくなります。また想定以上に多くのバグが発見される可能性があることから、スケジュールに余裕を持って行うことが推奨されます。

ソフトウェアテストに従事して約20年。 テストマネージャーとして、Webシステムやスマホアプリ、ゲーム等の様々なソフトウェアのテスト計画策定、テストチーム構築、テスト管理、品質分析および品質向上施策提案などに携わる。保有資格として、IVECハイレベル5やJSTQB AL TMなど。現在は、AIQVE ONE株式会社にて、ソフトウェアテストについての社員教育や、テストプロセス・テスト手法の仕組み化・標準化に取り組んでいる。
【著作】『ゲームをテストする バグのないゲームを支える知識と手法』(翔泳社)