結合テストとは?手法・目的別分類・自動化のメリットとやり方も
COLUMN
最終更新日:2025年07月29日 / 投稿日:2022年07月21日

結合テストは、システムや機能を実装するにあたって必ず行われる工程で、ITエンジニアにとっては必須の知識です。これからテストエンジニアを目指す場合、「結合テストについてある程度把握しておきたい」と考える方も珍しくありません。
そこで今回は、結合テストの概要と種類、メリット・デメリット、テストの手法について紹介します。テスト実施時の注意点についても解説するため、結合テストに関する理解を深めたい場合は、ぜひ当記事を参考にしてください。
目次
1. 結合テストとは?

結合テストとは、システム・ソフトウェアの部品・機能であるモジュールを組み合わせて、動作の検証を行うテストです。
モジュール同士の組み合わせをさまざまなパターンでテストすることが特徴で、「統合テスト」「インテグレーションテスト」とも呼ばれます。
1-1. 結合テストの目的と重要性
結合テストはモジュール同士を組み合わせた際の挙動を調べるテストであり、システム開発において重要な役割をもちます。
結合テストの目的は、設計書に基づいて各モジュールを組み合わせた際に、仕様書通りに動作するかを検証することです。モジュール同士の組み合わせによって意図した挙動が得られるかや、不具合が発生していないかを確認できます。
結合テストで検証する範囲はあくまでも部分的なモジュールの組み合わせであるため、不具合の発生場所や原因を特定しやすいことが特徴です。結合テストの段階で不具合に対処すれば、後のテスト工程であるシステムテストや受入テストをスムーズに進められます。
1-2. 結合テストと単体テストの違い
統合テストより前に行うテスト工程は「単体テスト」と言います。
単体テストとは、個別のモジュールに対して行うテストのことです。例えばECシステムであれば「商品ページが表示される」「商品をカゴに追加できる」など、個々の機能を確認します。
一方、結合テストはモジュール同士を接続するインターフェースに対して行う点が特徴です。同様にECシステムの例では「商品ページが表示された後、商品をカゴに追加する」といった一連の動作が行えるかを検証します。
結合テストはモジュール単体が正しく機能することを前提としており、単体テストを通過した後に結合テストを行うのが基本の流れです。
単体テストとは?メリット・デメリットと手法から3つの注意点まで
2. 結合テストの実施範囲

結合テストは、結合する対象や実施範囲の違いによって「内部結合テスト」と「外部結合テスト」の2種類に分けられます。それぞれのテストで確認すべき内容は異なるため、どのような観点で検証を進めればよいかを押さえておきましょう。
以下では、2種類のテスト範囲についてより詳しく説明します。
2-1. 内部結合テスト
内部結合テストとは、同じサブシステム内のモジュール連携が意図した通りに行えるかを検証するテストです。規模が大きいシステムでは結合テストの前半に内部結合テストを行うケースが多く、「ITa(Integration Test a)」と呼ばれることもあります。
例えば「商品一覧から商品を選択し、商品ページを表示する」という動作のテストは、同じサブシステム内で行われるため内部結合テストです。
内部結合テストを行うことにより、サブシステム内のインターフェースに不具合がないかを確認できます。
2-2. 外部結合テスト
外部結合テストとは、異なるサブシステム間や他システムとの機能連携を検証するテストです。「ITa」とも呼ばれる内部結合テストに対し、外部結合テストは「ITb(Integration Test b)」と呼ばれます。
例えばECシステムの商品ページ上に正しい商品在庫数が表示されるかを検証する工程は、管理システムとの連携を確認するため外部結合テストに該当します。
また、商品の購入確認後に決済システムの呼び出しが行われるかの確認も、外部結合テストで検証するべき項目の1つです。
規模が大きいシステムでは多くの他システムと連携するため、外部結合テストを入念に行う必要があります。
3. 結合テストの主な手法
結合テストでは、「どのような順序でモジュールを結合してテストするか」といった手法がいくつか存在します。ここからは、結合テストの代表的な手法である「トップダウンテスト」と「ボトムアップテスト」について紹介します。
3-1. トップダウンテスト
モジュール同士は、処理を呼び出す側と呼び出される側に分かれます。モジュールを呼び出す側を上位・呼び出される側を下位とし、上位モジュールから下位モジュールへとテストを行う方法がトップダウンテストです。
上位モジュールは他のモジュールを呼び出す役割を担い、重要性の高いモジュールとして位置づけられます。そのため、トップダウンテストでは、重要性の高い上位モジュール側からテストを始めることになります。
トップダウンテストでは重要な上位モジュールからテストを実施する特性上、早い段階で重要なモジュールの不具合を検出でき、機能の漏れを見つけやすい点がメリットです。
一方で、未完成の下位モジュールが多い場合、モジュールの代替品であるスタブを作らなければテストが進まず、時間がかかるというデメリットもあります。
3-2. ボトムアップテスト
トップダウンテストとは反対に、下位モジュールから上位モジュールに向かってアプローチする方法がボトムアップテストです。ボトムアップテストの場合、最下位のモジュールから結合テストを始めます。上位モジュールの代わりにテスト対象のモジュールを呼び出すテストドライバを作成し、テストを進めます。
下位モジュールからテストを実施すると、下位モジュールを開発したそばからテストすることが可能です。
一方で、最も重要性が高い最上位のモジュールのテストが後回しになるので、致命的な不具合が発覚するのが最後になる恐れがあります。上位モジュールの不具合検出が遅れるほど修正量が膨大になり、手戻りによるロスが大きくなることも考えられるしょう。
また、開発の進捗状況にかかわらず、テストを実施するごとにテストドライバを作り直す手間が発生します。
4. 結合テストの目的別分類(タイプ)

結合テストは、目的や実施方法に応じてさまざまな種類に分類されます。各テストは検証するポイントが異なるため、それぞれの特徴を理解したうえで適切に使い分けることが大切です。
以下では結合テストの種類を6つに分けて、各テストの特徴や実施する目的を解説します。
4-1. インターフェーステスト
インターフェーステストとは、 個々のモジュールが仕様書通りに連携するかどうかを検証するためのテストです。各モジュール間のデータの引渡しや、連携が正常に行われるかどうかに重点を置いて検証を行います。
インターフェースは異なる機器やシステム同士を結びつける「接点」を意味する用語です。システムやソフトウェアの稼働にはさまざまなモジュールの連携が欠かせないため、正しく連携できるかを検証するインターフェーステストは基本的なテストと言えます。
4-2. 業務シナリオテスト
業務シナリオテストとは、 作成したシナリオをもとに動作確認を行うテストです。
シナリオはユーザーが業務上で行う操作や一日の工程など、具体的な業務を想定して作成します。シナリオ通りの操作を行ったときに不具合が発生しないかを検証することが、業務シナリオテストの目的です。
実際の業務ではユーザーがイレギュラーな操作を行うことがあり、開発者が想定した操作でテストを行うだけでは検出しきれない不具合が発生する恐れがあります。そのため、意図的にイレギュラーな操作をシナリオに組み入れて不具合を検出します。
4-3. 負荷テスト
負荷テストは別名ロードテストとも呼ばれる手法で、 システムの耐久性を検証するためのテストです。システムに意図的に負荷をかけ、動作が停止したりパフォーマンスが低下したりしないか、想定される連続稼働時間内にシステムダウンしないかなどの検証を行います。
リリースしたシステムはアクセスが集中したり、連続稼働が行われたりして大きな負荷がかかることが想定されます。事前に負荷をかけることでシステムの限界性能を確認し、安全に稼働できる範囲を調べることが負荷テストの目的です。
4-4. 機能テスト
機能テストとは、 システムに実装した機能が正しく動作することを確認するテストです。特定の操作を行って、システムからの出力が仕様を満たしているかどうかを検証します。
例えばユーザーが会員登録ボタンを押したときに、登録用フォームが表示されるかを検証することが一例です。機能テストを行うことで、機能に関する不具合やバグを発見しやすくなります。
4-5. セキュリティテスト
セキュリティテストとは、 悪意ある第三者による攻撃からシステムが保護されているかを検証するテストです。
セキュリティテストの手法には、システム全体の弱点を検査する「脆弱性診断」や、想定される攻撃を実際に行う「ペネトレーションテスト」といった手法があります。テストによってシステムの脆弱性やサイバー攻撃による被害が分かり、システムに施されたセキュリティ対策が有効に働くかを確認できます。
4-6. ユーザビリティテスト
ユーザビリティテストとは、 実際の業務を想定してシステムを稼働し、UIなどの操作性に関わる部分が仕様を満たしているかをユーザー目線で検証するテストです。テスターは実際のユーザーに近い条件の人を選定し、アンケートやインタビューで評価を行います。
ユーザビリティテストの目的は、UIなどの問題点・改善点を抽出してブラッシュアップすることです。ユーザビリティテストの実施によってシステムの利便性が向上し、リリース後にユーザー満足度の向上が期待できます。
5. 結合テストの主な技法

結合テストのやり方(技法)は、大きく分けて「ブラックボックステスト」と「ホワイトボックステスト」の2つがあります。2つのテストは検証する対象や観点が異なるため、実施するテストに合わせて適切な技法を選びましょう。
ブラックボックステストとホワイトボックステストについて、どのようなやり方のテストであるかを解説します。
5-1. ブラックボックステスト
ブラックボックステストとは、 システムの内部構造は考慮せず、入力に対して出力が正常に行われるかを確かめるテストです。機能テストやユーザビリティテストなど、ユーザーの目に触れる部分を重点的にチェックしたいテストではブラックボックステストが採用されています。
ただし、ブラックボックステストはシステムの入出力のみを見るため、出力結果が合っていれば内部の処理に問題があっても分かりません。システムの内部もチェックするためには、次のホワイトボックステストを実施する必要があります。
5-2. ホワイトボックステスト
ホワイトボックステストとは、 システムの内部構造に目を向けて、プログラムが仕様通りに動作しているかを確かめるテストです。ブラックボックステストでは見逃されるシステム内部の問題も検出できるため、網羅的なテストを行えます。
ホワイトボックステストの注意点は、システムの規模が大きいとテストに多くの時間とコストがかかることです。結合テストにおいてはブラックボックステストのほうが多用されるものの、補助としてホワイトボックステストも使われることがあります。
6. 結合テストのメリット・デメリット

結合テストにはメリットとデメリットの両面があります。
【結合テストのメリット】
●単体テストの弱点を補える
結合テストを実施することで、モジュール間の連携部分を検証できないという単体テストの弱点を補うことが可能です。
●致命的な不具合を洗い出せる
単体テストでは洗い出せない連携部分の不具合には、致命的なものもあります。結合テストを行うことで、想定外の不具合による手戻りを防ぎ、後の工程に大きなリスクを残さずに開発を進められます。致命的な不具合を未然に防げば、システム・ソフトウェアの品質を高めることも可能です。
【結合テストのデメリット】
●時間がかかる
単体テストよりもテスト工程が多くなるため、テストには時間がかかります。あらかじめ工数を多く見積もっておきましょう。
●詳細さに欠ける
結合テストで不具合が判明した場合、不具合があることは明らかになるものの、不具合が起きている箇所などの詳細までは明らかになりません。結合テストで不具合を検出すると、モジュールへの手戻りが発生し、修正のためにさらに時間を要することになります。
7. 結合テストを実施する際の3つの注意点

結合テストは、システム・ソフトウェアの品質を高める上で重要な役割を果たす業務です。結合テストを的確かつスムーズに進めるためには、下記の注意点を押さえておきましょう。
● スケジュールに余裕を持たせる
● データベースのデータを書き換えない
● 本番環境と同じ環境でテストをする
ここからは、それぞれの注意点について詳しく説明します。
7-1. スケジュールに余裕を持たせる
結合テストを行う際は、スケジュールに余裕を持たせることが鉄則です。単体テストで問題がなかった場合でも、結合テストで不具合が検出されるケースが想定されます。テストの工数を最小限に見積もると、結合テストで不具合が検出された際に修正に時間を取られ、プロジェクト全体のスケジュールが遅延する恐れがあります。
最初から不具合の修正を行う前提で、余裕を持たせたスケジューリングを行えば、途中で不具合が検出されてもプロジェクト全体を遅滞なく進められるでしょう。
テスト工程をより戦略的に進めるためには、テスト計画書の作成が欠かせません。テスト計画書には、テストの目的・範囲・実施体制・スケジュール・リスクなどが整理され、プロジェクトメンバー全体で品質保証の方向性を共有するうえで重要な役割を果たします。
テスト計画書の具体的な記載内容や作成のポイントについては、以下の記事でも詳しく解説しています。ぜひあわせてご覧ください。
テスト計画書について詳しく解説|目的や記載方法・作成のポイントも
WBSとガントチャートの違いとは?作り方やメリットについても解説
7-2. データベースのデータを書き換えない
単体テストの場合、データベースを編集してテストデータを作成するケースがあります。一方、結合テストの場合、データベースからテストデータを作成することは望ましくありません。
結合テストでデータベースを編集すると、必要なデータを削除したり正常ではないデータを作り出したりするケースが考えられます。場合によってはテスト結果の信頼度が保てなくなり、テストそのもののやり直しが発生することもあります。
結合テストでは、安易にデータベースの編集を行わないことが重要です。面倒でもテスト用のデータは別途用意する、テスト時にはデータベースに権限を設定して編集を防止するなどの対策を講じましょう。
7-3. 本番環境と同じ環境でテストをする
結合テストを行う際には、できる限り本番に近い環境の再現を目指しましょう。実際に業務が行われる現場では、些細なことが不具合を発生させる原因になるケースもあります。
システムにアクセスする端末の機種やバージョンを揃える、実際に機能が使用される時間帯にテストを行うなど、詳細にわたってテスト環境を整えることが大切です。
環境の再現性を高めることで、動作確認だけでは検出できない問題にアプローチできる可能性が高まります。
8. 結合テストは自動化がおすすめ!

結合テストを手動で行うとさまざまな手間が発生するものの、テスト自動化ツールを導入すれば自動化ができます。
テスト自動化ツールとは、 結合テストなどのソフトウェアテストについてテストの自動化を支援するツールです。結合テストを自動化すると以下のようなメリットがあります。
【結合テスト自動化のメリット】
●業務効率の向上
テスト自動化ツールを導入すると、複数のシナリオやテストケースを網羅的に自動で実行してくれます。人員を他の作業に充てることができるため、業務効率の大幅な向上につながります。
●人為的なミスの防止
手動で行うテストではヒューマンエラーが発生するリスクを排除できません。テスト自動化ツールを導入すれば人為的なミスが発生しなくなり、一貫した結果を取得できます。
自動化ツールを選ぶときは、まずどこまで自動化するのかを決めましょう。インターフェーステストや業務シナリオテストのみを自動化するのか、負荷テストや機能テストも含めるのかといった違いにより、選ぶべきツールは変わります。
また、テスト対象との相性や他ツールとの連携性も重要です。自社のシステムやテスト範囲に合ったテスト自動化ツールを選びましょう。
まとめ
結合テストは、各モジュール間の動作確認を行うテストです。単体テストでシステムのパーツであるモジュールの動作を検証し、結合テストでモジュール同士の連携を検証することで、互いの不足を補完しながら不具合を検出します。
結合テストはシステムの品質を担保する重要な役割を担っているものの、時間がかかることに考慮が必要です。テスト時には余裕を持ったスケジューリングを行う、データベースを慎重に扱うなどして、プロジェクト全体の遅延を招かないよう対策を講じる必要があります。
また、結合テストの効率化を図りたいならテスト自動化ツールの導入もおすすめです。