デジタルトレンドナビ
システム開発

2024.01.31

結合テストとは?メリット・デメリットから注意点まで解説

結合テストは、システム開発では外せないテスト工程のひとつです。開発テストは単体テスト・結合テスト・総合テスト・運用テストを経て本番稼働します。単体テストの次に行う結合テストは、システムの品質に大きく影響する重要なテストです。


本記事では、結合テストの概要やメリット・デメリット、注意点についても解説します。本記事を読むことで、実際のプロジェクトで活用でき、プロジェクト全体の品質を上げることにつながりますので、ぜひ参考にしてください。

この記事でわかること

  • 結合テストの概要
  • 結合テストのメリット・デメリット
  • 結合テストの種類や手法
  • 品質向上につながる結合テストを行うための注意点

結合テストとは?

結合テストとは?

結合テストは、システムを構成するプログラムが設計書どおりかを確認するテストです。プログラムテストは主に、単体テスト・結合テスト・総合テスト・運用テストの流れで行います。総合テストはシステムテストまたは統合テスト、運用テストは受け入れテストと呼ばれることもあります。


本テーマである結合テストは、複数のモジュールの集まりであるプログラムを結びつけて、各機能が要件定義やシステム設計にもとづいた動きになっているかを確認するのが目的です。


モジュールとは「部品」を意味する言葉であり、IT分野におけるモジュールは、プログラムやソフトウェアの構造を構成する特定の「機能」を表すことばになります。モジュール(機能)は、単独でも動作する場合もありますが、基本的には複数のモジュールを結びつけて開発を行います。単体のモジュールは、結合テストの前に単体テストを完了させておく必要があります。

結合テストの重要な役割

結合テストは、その後の総合テストや運用テストを円滑に行うためにも大切なテストです。単体テストで不具合がなくても、結合テストでモジュール同士を結びつけることで、動作不良やバグなどの不具合や欠陥が見つかることもあります。


具体的には、データが正常に引き継がれているか、データを送付する順番に問題はないかどうかを検証します。


結合テストでは、さまざまなパターンのテストを検証します。結合テストで可能な限りバグなどの不具合を解消しておくと、その後の総合テストにスムーズにつなげられます。

結合テストのメリット・デメリット

結合テストのメリット・デメリット

この章では、結合テストのメリット・デメリットについて解説します。

まず、メリットは以下の2点です。

それぞれ解説します。

単体テストの不足を補完できる

1つ目は、単体テストでは足りない検証を補える点です。単体テストではモジュール同士の連携時の動作検証ができません。結合テストではテータの受け渡しエラーなど、単体テストのバグを見つけることができます。

不具合が見つかれば、各モジュールの修正を行います。結合テストの際、多くを連携させないことです。多くなれば原因の特定が難しくなり、余計な工数を必要とするためです。

致命的な不具合を見つけられる

2つ目は、致命的な不具合や欠陥を見つけられる点です。各モジュールの品質を向上させるためにも重要なテストです。

テストでしっかり検証することで、致命的な欠陥や不具合を見つけ出し、のちの工程での不具合や問題発生のリスクを低減できます。

次に、結合テストにおけるデメリットについて解説します。デメリットは以下の2点です。

それぞれ解説します。

テストに時間がかかる

結合テストでは、各モジュールを結びつけて、さまざまなパターンをテストします。複数のモジュールを結びつけて検証するため、テストに時間を要するのはデメリットといえます。

検証に多くの時間を要するため、工数は単体テストよりも長く取っておくことをおすすめします。

不具合の詳細まで明らかにならない

結合テストは単体テストよりも、具体的な不具合の場所まではわからないところがデメリットといえます。

連携による検証には強さを発揮しますが、どの単体モジュールが、どの部分で不具合が起きているのかを追うのに時間がかかります。

結合テストの種類

結合テストの種類

この章では、結合テストで使用するテストの種類を解説します。主に使用するのは以下の4点です。

それぞれ解説します。

インターフェーステスト

インターフェーステストは、結合テストではもっとも基本的なテストです。異なるモジュールを結びつけて、それぞれの機能が正確な動作をすることを確認します。連結テストと呼ぶこともあります。

データ形式の一致・不一致、データが正しく受け渡されるか、すべてのデータが問題なく引き渡されて終了するか、データの引き継ぎのタイミングなどを検証します。

ブラックボックステスト

ブラックボックステストは、入力に対し出力が正しく行われるかを検証する、利用者側の目線に立ったテストです。

条件や命令の順番などの、プログラムの内部構造を考慮しないことから、ブラックボックスと呼ばれています。具体的には、設計書にて0〜50が正常値にした場合「0」または「-1」、「51」と数値の境界となる値を入力した際に、正しい判定結果が出るかを検証します。

業務シナリオテスト

業務シナリオテストは、本番の業務をイメージして検証を行うテストです。実際の1日の流れを想定し、不具合が出ないかを確認します。ポイントとして、テストの際は必ず、想定外の操作をした場合の検証も含めることです。

正常値を入力して正常に動作するかの確認はもちろん必要ですが、想定外のデータが入力された場合にどのような動きをするのかも検証しなければなりません。

たとえば、同じユーザーが複数アカウントを作成できてしまわないか、複数アカウントから同一データを更新できてしまわないかなど、問題なく制御できているかを検証する必要があります。

負荷テスト

負荷テストは、システムの限界に近い、あるいはシステムの限界を超えるような負荷をかけた場合、その状態でも異常をきたすことなく動作するかを検証するテストです。

システムにアクセスが集中したり、負荷のかかる重い処理が重なったりした場合に、システムダウンやパフォーマンスの低下につながらないかを確認します。システムを連続稼働させた場合にも、システムログやエラーログが正しく処理されるかもあわせて検証します。

結合テストの手法

結合テストの手法

この章では、結合テストでよく使用される手法について解説します。主な手法は以下の2点です。

それぞれ解説します。

トップダウンテスト

上位モジュールから下位モジュールの流れでテストを行う手法です。システムを構築しているモジュールはピラミッド型になっており、上位モジュールはほかのモジュールを呼びだす重要な役割があります。

重要なモジュールから先にテストを行うことで、早い段階から不具合や機能の漏れを見つけられます。

トップダウンテストを行う際、下位モジュールに未完成がある場合、スタブと呼ばれる下位モジュールに代わるテスト用のダミーデータを作成しなければならず、代替品の作成に時間を取られてしまう可能性があります。

ボトムアップテスト

ボトムアップテストは、上述したトップダウンテストとは逆のテスト手法です。下位モジュールから先行してテストを行います。

下位モジュールに問題がなければ、上位モジュールと結びつけてさせてテストを行います。ボトムアップテストは、開発とテストを初期段階から同時に進められるメリットがあります。

しかしながら、テストに時間をかけすぎてしまうと、上位モジュールの結合テストが遅くなってしまうため、結合テストの最終段階で不具合があった際に、修正量に多くの工数を取られてしまうデメリットもあります。

結合テストで注意すべきポイント

結合テストで注意すべきポイント

この章では、結合テストを実行するうえで注意しなくてはならないポイントについて解説します。ポイントを意識することで、品質の良いシステムが構築できますので、しっかりと理解しておくことをおすすめします。

余裕をもったテストスケジュール設計にする

結合テストは、余裕をもったテストスケジュールを組むことが重要です。単体テストで発生しなかった不具合が出る可能性もあるため、修正をすることを前提としたスケジュール設計が必要です。

効率的なテストを実行するためには、必要なものを準備するのも忘れないようにします。検証に使用するテストデータや、検証の質を上げるためのツールなども必要であれば準備することをおすすめします。

また、クライアント側からの仕様変更や機能追加など、突発的な依頼が来る可能性もあります。このようなイレギュラーな依頼や修正が発生した場合にも対応できるスケジュール設計をしておくとよいです。

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

余裕のないテストスケジュールの場合、データベースに直接手を加えてしまうケースがあります。本番環境用のデータベースのデータを直接書き換えや追加、削除はしてはいけません。


本番環境のデータを変更してしまうと、重要なデータの削除や不正データの作成など、ヒューマンエラーのリスクが高まります。

本番環境に不具合が発生すると、テスト結果の信頼性も低下し、最悪の場合これまでのテストを一からやり直しになる可能性もあります。対策として、テスト検証用のデータは別で準備し、テスト時はデータに権限を持たせて変更できないようにするなどの対応が必要です。


高品質な製品にするためにも、本番環境に影響を与えるようなデータを書き換えることは絶対に行わないようにします。

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

結合テストは、本番環境では行わず、本番に限りなく近い環境を用意してテストを実施することが大切です。本番環境で行ってしまうと、これまで問題のなかった処理に対しても影響を与えてしまい、通常の業務に支障をきたす可能性があるためです。


想定した本番環境は、使用している端末の機種やシステムのバージョンなども同じ環境にします。Google ChromeやMicrosoft EdgeなどのWebブラウザに関しても同じです。


また、実際に処理が行われる時間帯などのスケジュールも合わせることで、質の良いテスト検証ができます。

こちらの記事では、品質保証と品質管理との違いを紹介します。システムが要件を満たし、品質基準を遵守していることを確認する重要なプロセスですので、合わせてご覧ください。


まとめ

まとめ

本記事では、システム開発における結合テストについて解説しました。結合テストは、複数のモジュールを連携させて設計書どおりに動作するかを確認するテストです。


結合テストは、複数のモジュールを結びつけるため、テスト時間を要することや、細かい不具合の詳細までは見つけられません。しかし、単体テストの不足を補完できるだけでなく、動作不良につながる致命的な不具合も発見でき、システムの品質を向上させる重要なテストでもあります。


結合テストを行う際は、テストは本番を想定した環境で行い、本番環境とは別のテスト検証用データで実行することをおすすめします。また、不具合の修正に要する時間なども考慮し、余裕をもったスケジュールを組むことが大切です。


投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。