結合テストとは?目的や手法、単体テストとの違いを解説

 2022.05.13  株式会社システムインテグレータ

システム開発のプロジェクトでは、大きく分けて単体テスト・結合テスト・統合テストという3種類のテストが実施されます。結合テストは、プロジェクトの中盤以降に高頻度で実施される、プロジェクトの進捗にもプロダクトの品質にも影響する非常に重要なテスト工程です。

当記事では、結合テストの概要・重要性から、メリット・デメリット、テストの種類・手法、実施のポイントを解説します。結合テストについて詳しく知りたい方や理解を深めたい方は、ぜひ参考にして下さい。

結合テストとは

結合テストとは?目的や手法、単体テストとの違いを解説 1

結合テストとは、単体テストを終えた各モジュールを組み合わせて、意図した通りの動作や挙動になっているかを確認するテストです。一般的なウォーターフォールモデルの開発においては、プロジェクトの中盤から終盤にかけてさまざまな組み合わせの結合テストが複数回に渡って実施されます。

結合テストの範囲やどのモジュールを組み合わせるのかは、開発するプロダクトや企業の方針により決定されます。

結合テストの重要性

システム開発において、結合テストは非常に重要な役割を持ちます。その理由は大きく分けて次の2点が挙げられます。

  • 実際にモジュール同士を結合してみないと分からない挙動があるため

単体テストをクリアしたモジュール同士でも、組み合わせてみると動作不良や不具合が見つかることがあります。実際に結合した場合の挙動を確認するためにも、さまざまなパターンの結合テストを繰り返す必要があります。

  • システムテスト・受入テストへとスムーズに繋がるため

結合テストは柔軟な組み合わせが可能で比較的小規模から行われるため、広範囲に渡って実施されるシステムテスト・受入テストよりもバグや不具合の発生個所・原因の特定が容易であることが特徴です。結合テストの段階でバグや不具合にできるだけ対処しておくことで、後のテスト工程へとスムーズに繋げることが可能となります。

結合テストと単体テストの違い

単体テストと結合テストの大きな違いは、端的に説明すると、「テストを実施する範囲」です。具体的な両者の違いを以下に解説します。

  • 単体テスト
    ひとつの機能・画面に対してテストを実施して、個別に動作の確認を行う。


  • 結合テスト
    複数の機能・画面に対して、機能間・画面間・データ連携等の動作確認を行う。

このように単体テストと結合テストではテスト範囲が異なります。実施の目的・用途についても大きく異なるため、違いを理解しておくことが重要となります。

単体テストについては、以下の記事で全体像を詳しくご紹介していますので、併せてご参考にして下さい。

単体テストとは?メリット・デメリットやテスト手法を詳しく解説

結合テストのメリットと注意点

結合テストの特性を理解してスムーズに実施するためには、メリットや注意すべきポイントを把握しておくことが重要です。

ここでは、結合テストのメリットと注意すべき点についてそれぞれ解説します。

結合テストのメリット 

結合テストには、複数のモジュールを組み合わせて実施されることから、さまざまなメリットがあります。ここでは、結合テストの主なメリットについて解説します。

  • 単体テストの欠点をカバーできる

単体テストでは、単一のモジュールの動作しか確認することができませんが、結合テストではモジュール連携時の動作やデータのやり取りなど、単体テストでは確認できない部分までカバーできるのがメリットです。あらゆるテストケースを施行することでシステムの品質向上を図れます。

  • 後の工程での大きな手戻り・トラブルを低減できる

さまざまな結合テストを実施することでシステムの品質が担保され、後の工程で大きな不具合や問題が生じる可能性を低減できます。手戻りを防ぎプロジェクトをスムーズに進行できるというメリットがあります。

結合テストにおける注意点

結合テストの特性・性質を理解するためにも、注意すべきポイントについても把握しておきましょう。

  • 単体テストよりも大きな負担がかかる

結合テストは、モジュール同士をさまざまなパターンで組み合わせて動作を確認するため、単体テストよりも多くの時間・労力が必要となる点がデメリットです。開発するシステムの規模次第では大きな負担となるため、プロジェクトのスケジュールを検討する際にはテスト工程の負荷を加味しておく必要があります。

  • 単体テストよりも正確性に欠ける

モジュール同士を組み合わせて実施する結合テストは、個々の機能単位の検証では単体テストよりも正確性に欠けます。そのため、結合テストの実施にあたっては、事前に対象となるモジュールの単体テストを通過させておくことが重要です。

結合テストの種類

結合テストとは?目的や手法、単体テストとの違いを解説 2

結合テストは、目的や内容によっていくつかの種類に分けられます。ここでは、結合テストの主な種類について解説します。どのようなテストが行われるのかを把握しておきましょう。

インターフェーステスト

インターフェーステストとは、個々のプログラムやモジュールを連携させた場合の動作を確認するためのテストのことです。結合テストの最も基本的なテストとなります。

インターフェースとは異なるプログラムやモジュールを接続した場合にデータをやり取りする仕組みのことです。同テストでは、主にデータの引き継ぎが正常に行われているかの確認を行います。

ブラックボックステスト

ブラックボックステストとは、システムの内部構造を把握していない状態で、インプットに対してアウトプットが正常に行われるかを確認するテストです。

同テストは単体テストでも行われる手法となりますが、結合テストでは単体テストを通過したモジュール同士を結合した状態で実施されます。

業務シナリオテスト

業務シナリオテストとは、実際の業務を想定してあらゆるパターンの操作を行い、動作・挙動の確認を行うテストです。業務を進めるための基本的な操作を行った際の確認だけでなく、例外的な操作を行った際の不具合についても確認を行っておきます。

業務シナリオテストはユーザーがシステムを使用する際に不具合に直面しないことを目的としており、システムの品質担保には欠かせないテストとなります。

負荷テスト

負荷テストとは、システムに限界まで負荷をかけた際に、動作停止・システムダウン・パフォーマンス低下といった不具合が発生しないかを確認するテストです。

リリース後のシステムはアクセスの集中や重たい処理が重なることにより大きな負荷がかかる場合があるため、事前に限界性能・安全性を確保しておくためにも非常に重要なテストとなります。

結合テストの手法

結合テストとは?目的や手法、単体テストとの違いを解説 3

結合テストの手法には、大きく分けてトップダウンテストとボトムアップテストの2種類があります。両者ではテストの内容・特性が大きく異なるため、違いを理解しておくことが重要です。以下に、それぞれの手法の詳細について解説していますので、ぜひご参考にして下さい。

トップダウンテスト

トップダウンテストとは、プログラムの上位階層に位置するモジュールから下位のモジュールへと順番にテストを行う手法です。

一般的にシステムのモジュールは上位から下位へとピラミッド状に構成されています。同テストでは重要度の高い上位モジュールからテストを行うことで不具合を早期発見しやすいことや、上位のモジュールに対するテストの試行回数が増えることで重大な不具合を検出しやすいことが特徴です。

しかし、下位のモジュールが完成していない段階でテストを実施する際には、スタブ(モジュールの代替品)を数多く作成する必要があり、非常に手間がかかるというデメリットがあります。

ボトムアップテスト

ボトムアップテストとは、下位のモジュールから上位のモジュールへと順にテストを進めていく手法です。

上位モジュールが完成していない開発初期段階でもテストを実施できることや、モジュール単位での機能を細かくチェックできることが大きな特徴です。その反面、重要度の高い上位モジュールのテストが後回しになるため、重大な不具合の発覚が遅れるという難点があります。

上位モジュールが完成していない場合には、ドライバと呼ばれる代替品を用意してテストをおこなう必要があります。

結合テスト実施のポイント

結合テストは、プログラムやモジュールの動作確認を行い、品質を担保するための重要なテストです。確実かつスムーズに実施するためには、いくつか押さえておくべきポイントがあります。以下に解説していますので、ぜひご参考にして下さい。

できるだけ本番環境に近づけてテストを行う

結合テストは、実際にシステムを使用するシーンでの動作不良や不具合まで検知しておくことが望ましいため、できるだけ本番環境に近い環境でテストを実施することが重要です。

端末・周辺機器・ブラウザ・データ・スケジュール・時間帯など、考えられるあらゆる要素を本番環境に近づけることがポイントとなります。

システムの動作は環境により左右されるため、本番環境を再現して結合テストを実施することで、実際にシステムを使用する際の不具合を事前に解決できる可能性も高まります。

データベースを直接書き換えない

単体テストでは、直接データベースを編集してテストデータの作成を行うケースが多く見られますが、結合テストでは原則としてデータベースを直接編集することは厳禁です。

複数の機能・モジュールの連携やデータのやり取りを検証する結合テストでは、誤って必要なデータを削除したり不正なデータを書き込んでしまったりする可能性が高まるためです。

結合テストを実施したデータベースに不具合が生じてしまうと、テスト品質が担保できないだけでなく、データベースの修正という無駄な作業を行わなければならなくなります。

手間と時間はかかりますが、テスト品質・システムの品質を担保するためにも、結合テスト用のデータは別途用意するようにしましょう。

連携させるプログラム数を抑える

結合テストでは、一度のテストケースで連携させるプログラム数が多いほど、工数を削減してスピーディーにテストを終えることができます。しかし、連携させるプログラム数が増えるほど、バグや不具合を発見しにくくなり、また原因の特定も困難となります。

そのため、結合テストを実施する際には、なるべく連携させるプログラム数を抑えることが重要なポイントとなります。

小規模で確度の高いテストを複数回繰り返して品質を確認してから、より多くのプログラムを統合させた広範囲なテストへと段階的に進めて行くようにしましょう。

テストのスケジュールに余裕を持たせておく

結合テストは単体テストを完了したモジュールに対して実施されますが、モジュールを組み合わせる段階で単体テストの抜け漏れが発覚したり、モジュールを組み合わせてから想定外の不具合が検出されたりするケースが多くあります。

テストの実施や不具合への対応には多くの時間が必要となる可能性もあるため、結合テストの実施にあたってはスケジュールに十分な余裕を持たせておく必要があります。

結合テストの遅延はプロジェクト全体のスケジュールを圧迫するため、イレギュラーが起こってもプロジェクトに影響を与えないスケジューリングを行うようにしましょう。

まとめ

システム開発プロジェクトで必須となるテスト工程の一つ、結合テストについてご紹介してきました。結合テストは、単体テストや統合テストといった他のテストとは内容・目的・用途が大きく異なるため、違いを把握して使いこなすことが非常に重要です。プロダクトの質を担保するためにも、プロジェクトをスムーズに推進するためにも、結合テストの概要・特徴について、しっかりと理解しておきましょう。

開発現場がひっ迫していてテスト工程を効率化したいとお悩みの方は、以下の資料もぜひご覧ください。


RELATED POST関連記事


RECENT POST「システム開発」の最新記事


システム開発

単体テストとは?メリット・デメリットやテスト手法を詳しく解説

システム開発

システムテストとは?目的やテストの種類、手順を徹底解説

システム開発

テスト自動化とは?重要性やメリット・デメリットを解説

システム開発

アジャイル開発におけるテストの方法とは?ポイントや効率化のコツを解説

結合テストとは?目的や手法、単体テストとの違いを解説

OBPM Neo TOPへ

ブログ購読のお申込み

人気資料ランキング