最終更新日:2023年09月20日 / 投稿日:2022年07月21日

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

1 結合テストとは?単体テストとの違い

結合テストとは、システム・ソフトウェアの部品・機能であるモジュールのテスト後に実施されるテストです。結合テストの目的は、設計書に基づいて各モジュールを組み合わせた際に、仕様書通りに動作するかを検証することです。

結合テストの前に、個別のモジュールに対して行うテストを「単体テスト」と言います。単体テストは個別のモジュールに対して行う一方、結合テストはモジュール同士を接続するインターフェースに対して行う点が特徴です。

単体テストとは?メリット・デメリットと手法から3つの注意点まで

1-1 結合テストの代表的な種類

結合テストには、目的や実施方法が異なる3種類のテストがあります。各テストの内容や意義を理解し、目的に応じて適切なテストを実施することが重要です。

インターフェーステスト個々のモジュールが仕様書通りに連携するかどうかを検証するためのテストです。各モジュール間のデータの引渡しや、連携が正常に行われるかどうかに重点を置いて検証を行います。
業務シナリオテスト具体的な業務を想定したシナリオをもとに、動作確認を行うテストです。実際の業務ではユーザーがイレギュラーな操作を行うことがあり、開発者が想定した操作でテストを行うだけでは検出しきれない不具合が発生する恐れがあります。そのため、意図的にイレギュラーな操作をシナリオに組み入れて不具合を検出します。
負荷テスト別名ロードテストとも呼ばれる手法で、システムの耐久性を検証するためのテストです。システムに意図的に負荷をかけ、動作が停止したりパフォーマンスが低下したりしないか、想定される連続稼働時間内にシステムダウンしないかなどの検証を行います。

1-2 結合テストのメリット・デメリット

結合テストで得られるメリットは、以下の通りです。

単体テストの弱点を補える結合テストを実施することで、モジュール間の連携部分を検証できないという単体テストの弱点を補うことが可能です。
致命的な不具合を洗い出せる単体テストでは洗い出せない連携部分の不具合には、致命的なものもあります。結合テストを行うことで、想定外の不具合による手戻りを防ぎ、後の工程に大きなリスクを残さずに開発を進められます。致命的な不具合を未然に防げば、システム・ソフトウェアの品質を高めることも可能です。

システム・ソフトウェアの品質を高めるのに大いに役立つ一方、結合テストには以下のようなデメリットも存在します。

時間がかかる単体テストよりもテスト工程が多くなるので、テストには時間がかかります。あらかじめ工数を多く見積もっておきましょう。
詳細さに欠ける結合テストで不具合が判明した場合、不具合があることは明らかになるものの、不具合が起きている箇所などの詳細までは明らかになりません。結合テストで不具合を検出すると、モジュールへの手戻りが発生し、修正のためにさらに時間を要することになります。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら

2 結合テストの手法とは?観点も紹介

結合テストは「内部結合テスト」と「外部結合テスト」の2種類に分けられます。内部結合テストは同じサブシステム内のモジュール連携、外部結合テストは異なるサブシステム間の機能連携と、それぞれ異なる観点からテストを行う必要があります。テストを行う際は、実施中のテストの観点を把握しつつ、適切な手法を選択することが必要です。

ここではテストの手法として、アプローチの異なる2つのテストを解説します。

2-1 トップダウンテスト

モジュール同士は、処理を呼び出す側と呼び出される側に分かれます。モジュールを呼び出す側を上位・呼び出される側を下位とし、上位モジュールから下位モジュールへとテストを行う方法がトップダウンテストです。
上位モジュールは他のモジュールを呼び出す役割を担い、重要性の高いモジュールとして位置づけられます。そのため、トップダウンテストでは、重要性の高い上位モジュール側からテストを始めることになります。
トップダウンテストでは重要な上位モジュールからテストを実施する特性上、早い段階で重要なモジュールの不具合を検出でき、機能の漏れを見つけやすい点がメリットです。一方で、未完成の下位モジュールが多い場合、モジュールの代替品であるスタブを作らなければテストが進まず、時間がかかるというデメリットもあります。

2-2 ボトムアップテスト

トップダウンテストとは反対に、下位モジュールから上位モジュールに向かってアプローチする方法がボトムアップテストです。ボトムアップテストの場合、最下位のモジュールから結合テストを始めます。上位モジュールの代わりにテスト対象のモジュールを呼び出すテストドライバを作成し、テストを進めます。

下位モジュールからテストを実施すると、下位モジュールを開発したそばからテストすることが可能です。一方で、最も重要性が高い最上位のモジュールのテストが後回しになるので、致命的な不具合が発覚するのが最後になる恐れがあります。上位モジュールの不具合検出が遅れるほど修正量が膨大になり、手戻りによるロスが大きくなることも考えられるしょう。
また、開発の進捗状況にかかわらず、テストを実施するごとにテストドライバを作り直す手間が発生します。

3 結合テストを実施する際の3つの注意点

結合テストは、システム・ソフトウェアの品質を高める上で重要な役割を果たす業務です。結合テストを的確かつスムーズに進めるためには、下記の注意点を押さえておきましょう。

  • スケジュールに余裕を持たせる
  • データベースのデータを書き換えない
  • 本番環境と同じ環境でテストをする

3-1 スケジュールに余裕を持たせる

結合テストを行う際は、スケジュールに余裕を持たせることが鉄則です。単体テストで問題がなかった場合でも、結合テストで不具合が検出されるケースが想定されます。テストの工数を最小限に見積もると、結合テストで不具合が検出された際に修正に時間を取られ、プロジェクト全体のスケジュールが遅延する恐れがあります。

最初から不具合の修正を行う前提で、余裕を持たせたスケジューリングを行えば、途中で不具合が検出されてもプロジェクト全体を遅滞なく進められるでしょう。

3-2 データベースのデータを書き換えない

単体テストの場合、データベースを編集してテストデータを作成するケースがあります。一方、結合テストの場合、データベースからテストデータを作成することは望ましくありません。結合テストでデータベースを編集すると、必要なデータを削除したり正常ではないデータを作り出したりするケースが考えられます。場合によってはテスト結果の信頼度が保てなくなり、テストそのもののやり直しが発生することもあります。
結合テストでは、安易にデータベースの編集を行わないことが重要です。面倒でもテスト用のデータは別途用意する、テスト時にはデータベースに権限を設定して編集を防止するなどの対策を講じましょう。

3-3 本番環境と同じ環境でテストをする

結合テストを行う際には、できる限り本番に近い環境の再現を目指しましょう。実際に業務が行われる現場では、些細なことが不具合を発生させる原因になるケースもあります。システムにアクセスする端末の機種やバージョンを揃える、実際に機能が使用される時間帯にテストを行うなど、詳細にわたってテスト環境を整えることが大切です。

環境の再現性を高めることで、動作確認だけでは検出できない問題にアプローチできる可能性が高まります。

まとめ

結合テストは、各モジュール間の動作確認を行うテストです。単体テストでシステムのパーツであるモジュールの動作を検証し、結合テストでモジュール同士の連携を検証することで、互いの不足を補完しながら不具合を検出します。

結合テストはシステムの品質を担保する重要な役割を担っているものの、時間がかかることに考慮が必要です。テスト時には余裕を持ったスケジューリングを行う、データベースを慎重に扱うなどして、プロジェクト全体の遅延を招かないよう対策を講じる必要があります。

監修:六元素情報システム株式会社
監修
六元素情報システム株式会社 ATgoチーム

六元素情報システムは、システム開発現場で培った高い技術力と実務経験を持つ企業です。その知見を活かして開発したテスト自動化ツールATgo(特許6830701号)の提供を通して、日本のシステム開発における生産性向上と品質向上に貢献します。

コーポレートサイト:https://www.rgsis.com/
ATgo Facebook:https://www.facebook.com/ATgo.rgs/
ATgo X(旧Twitter):https://twitter.com/ATgo_rgs

テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
テスト自動化ツールATgo

1か月無料ですべての機能をお試しいただけます。お気軽にお問い合わせください。