Facebook Twitter

ジャンル

ソフトウェア開発・テスト用語

結合テストとは?主な種類・実施方式と心掛けるべき3つのポイントを解説

最終更新日時:2023.05.18 (公開日:2018.12.19)
結合テストとは?主な種類・実施方式と心掛けるべき3つのポイントを解説

結合テストはテスト工程の1つで、単体テストの後に実施されるテストです。単体テストはモジュールごとにテストするのに対し、結合テストは複数のモジュールを組み合わせて動作確認を行います。結合テストを実施するときは、どのようなポイントに注意すれば良いのでしょうか。

今回は結合テストの手法と役割、テストを実施する際のポイントについてご紹介します。

もくじ
  1. 結合テストとは|基本設計を検証する工程
  2. 結合テストの種類
  3. 結合テストの実施方式
  4. 結合テストの実施で心掛けるべき3つのポイント
  5. まとめ

1.結合テストとは|基本設計を検証する工程

結合テストとは、複数のモジュールを組み合わせて動作確認をするテスト工程のことです。

具体的にいうと、モジュール間のインターフェースの構造自体に問題がないか、モジュールを結合した状態でデータのやり取りや動作が適切に行われるかなどについて確認する役割があります。

▼ウォーターフォール型V字モデル

スクリーンショット 2022-11-02 120254.png

ソフトウェア開発の手法の一つであるウォーターフォール型V字モデルでは、単体テストの後に実施されます。

基本設計に対して、設計を検証するテストです。「IT(Integration Test)」や「JT(Joint Test)」とも呼ばることもあります。

2.結合テストの主な種類

主な結合テストとしては、インターフェーステスト、モジュールを結合した状態でのブラックボックステスト、シナリオテスト、負荷テストの4種類が挙げられます。以下でそれぞれの特徴について見ていきましょう。

インターフェーステスト

8607-00035-2

インターフェーステストは結合テストとして一般的にイメージされることが多く、「連結テスト」とも呼ばれます。インターフェースとは、異なる機器やモジュールを接続したときに、データのやり取りを仲介する回路や仕組みのことで、インターフェーステストでは、異なる機能やモジュール間で引き渡すべきデータを適切な形で引き継ぐことができているかを確認します。

ブラックボックステスト

ブラックボックステストとは、テスト対象の内部構造を把握せずに、入力に対して正しい出力が得られるかを確かめるテストです。結合テストでは、単体テストを終えたモジュール同士を結合してブラックボックステストを実施し、モジュールの動作順序やタイミングを含めて動作確認を行います。

シナリオテスト

シナリオテストとは、実際の利用シーンやシナリオを想定して動作の確認を行うテストです。実利用上の妨げになるような不具合の発見や、機能やシステムの連携を妨げる不具合を発見する目的で実施されます。実際の運用時に出てくるであろう問題の洗い出しを行うために、正常系のテスト以外に異常系(イレギュラーな動作など)のテストも実施することがあります。

負荷テスト

負荷テストとは、システムが実際の業務に耐えられる処理能力を持っているか確認するために行うテストです。別名で「ストレステスト」や「ラッシュテスト」とも呼びます。システムに対して想定を超える負荷がかかると異常停止やパフォーマンスの低下などが起こる場合があります。そこで、あえて大量のアクセスを行ったり、想定外の環境(高温状態など)で運用を行うなどして反応を検証します。

3.結合テストの実施方式

結合テストは、「増加テスト」と「非増加テスト」の2つのアプローチに大別することができます。

増加テストとは、テストが完了したモジュールに未テスト状態のモジュールを追加しながら、徐々にテストを進めていくアプローチです。増加テストにはトップダウンテストとボトムアップテストがあります。両者の違いは、上位モジュールからテストを行うのか、それとも下位モジュールから行うのかという点です。これに加え、両者を同時並行で実施する「サンドイッチテスト」が挙げられます。

一方、非増加テストとは、モジュールを結合して一気に実施するテストです。これを「ビッグバンテスト」と呼びます。

それぞれ詳しく解説していきます。

トップダウンテスト

トップダウンテストとは、上位モジュールを呼び出した後に下位モジュールヘと移行してテストを進めていく方式です。上位モジュールから順番にテストをしていくことで、致命的な不具合を早期発見しやすいというメリットがあります。
結合テストはシステムテストを行う前段階に実施されることが多く、テスト対象以外のモジュールが開発途中である場合もあります。テストに関わる全ての下位モジュールの開発を待たずに結合テストを実施しなければならない事態も避けられません。このような場合には、「スタブ」と呼ばれる下位モジュールの機能を代替するモジュールを作成し、テスト対象を動作させるために必須なモジュールのみを呼び出してテストを行います。

ボトムアップテスト

ボトムアップテストとは、プログラムの下位階層にあるモジュールから優先的にテストを進めていく方式です。下位モジュールが検索や計算処理などシステムの根幹に関わる機能を担う場合、優先度の高い機能から順番にテストを進められるメリットがあります。
トップダウンテスト同様、上位モジュールのインターフェースやメイン機能が完成しないうちにテストを行わなければならない場合があります。このように上位モジュールが開発しきれていない場合には、「ドライバ」と呼ばれる上位モジュールの機能を代替するモジュールを作成し、下位モジュールの動作に必要な値を出力させてテストを進めます。

ビッグバンテスト

ビッグバンテストは、別名で「一斉テスト」、「一斉結合テスト」とも呼ばれる結合テストの実行方法の一つです。単体テストが終了した複数のモジュールをすべて結合してテストを行います。不具合が発生した箇所の特定が難しいデメリットがあることから、小規模だったり単純なシステムに適している手法であるといえます。

4.結合テストの実施で心掛けるべき3つのポイント

8607-00035-3

開発規模や対象システムなどによって、結合テストの種類や実施方式は変わってきます。しかし、結合テストの内容にかかわらず、共通して気を付けたいポイントもあります。

テストスケジュールに余裕を持たせる

結合テストは単体テストをクリアしたモジュールに対して実施されますが、設計上のミスや単体テストのケース漏れなどの理由から、統合テストを実施して初めて問題が発覚することも少なくありません。その他、顧客の要求の変更や機能追加の依頼に応じて、仕様変更を行うことも考えられます。この場合、手戻りによって大きな時間的ロスが発生します。

結合テストの工程では、このような突発的なトラブルが起こりやすいという特徴があります。結合テストの遅延はプロジェクト全体の遅延につながるため、テストスケジュールに余裕を持たせることが重要です。

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

単体テストでは、データ準備コストを削減するため、データベースを直接編集してテストデータを作成するケースがよく見られます。これは、モジュールやメソッド単位での動作確認を行う際には有効かもしれませんが、複数機能やモジュール間のデータのやり取りについて確認する結合テストでは推奨できません。

テスト環境のデータベースを直接編集してしまうと、人的ミスで必要なデータを削除してしまう、システムでは作成しえない不正データを作ってしまうリスクがあります。リスクが現実化した場合、テスト環境下で行ったテスト結果の信頼度が下がり、最悪の場合テストのやり直しが発生します。

ソフトウェアの品質を確実に担保するため、テスト環境のデータベースの書き換えは避けるようにしましょう。安易にデータを編集できないように権限を設定することも1つの方法です。

本番に近い環境でテストをする

結合テストは、できるだけ本番環境に近いところでテストを実施しましょう。

なぜなら、実際に起きる不具合は環境に影響されることも多いからです。

例えば、以下のような細かい部分も再現するとより効果的なテストを行うことができます。

  • システムに利用するOSや端末などを揃える
  • 必要な装置やソフトウェアを用意する
  • 実際に利用する時間帯でテストする

同じ環境でしか発見できない問題を事前にチェックするためにも、本番環境に近づけてテストを行いましょう。

まとめ

今回は、結合テストの役割や種類、テストを実施する際に気を付けたいポイントについてご紹介しました。

結合テストは、開発に関わっていると見落としがちなユーザー目線で実施するテストです。テスト対象を機能単体ではなく1つのシステムとして包括的に捉え、インターフェースやシステムのパフォーマンスの品質を保証することができます。
複数のテスト手法がありますが、いずれもユーザーの利用状況を考慮した上で実施することが重要です。今回ご紹介した内容を踏まえて、今一度チーム内での結合テストのあり方を再考してみてはいかがでしょうか。

執筆者:Qbook編集部

ライター

バルテス株式会社 Qbook編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。