結合テストとは?単体テストとの違いや観点も紹介【2024年最新版】
「結合テストという言葉は聞いたことがあるものの、具体的にどのようなテストなのかはわかっていない」「結合テストはどのように実施されるのか知りたい」という方も少なくないでしょう。
そこで今回は、結合テストとはどのようなテストなのか説明するとともに、単体テストやシステムテストとの違い、結合テストを行う流れや手法などについてまとめて解説していきます。結合テストの種類や、行う際の注意点などについても紹介するので、システム開発やテストについてより詳しく知りたいという方は参考になさってください。
【関連ページ】
システム開発にかかる費用・相場感や、あなたの目的別にシステム開発会社をお探しいただけます。
システム開発の費用・相場
システム開発会社一覧
結合テストとは
結合テストとは、単体テストが終わったモジュール、ならびにコンポーネントを結合させ、開発者側が意図している通りに作動するのかどうかをチェックするテストのこと。「統合テスト」や「IT(Integration Testing)」と呼ばれることも少なくありません。
例えば、システム開発において一般的な手法であるウォーターフォール型の開発では、プロジェクトの後半において複数回にわたり結合テストが実施され、設計が検証されます。実際に結合させてみなければ意図通りに動くのかどうかがわからないため、結合テストは非常に重要なテストです。
結合テストの観点
結合テストは意図通りに作動するのかチェックするために必要なテストであることがわかりましたが、結合テストと一口に言っても「内部結合テスト」と「外部結合テスト」の2つに分けられ、それぞれで観点が異なります。どちらも機能が正常に連携しているのかどうか確認するものですが、どのように異なるのでしょうか。
内部結合テスト(Ita)
内部結合テストは、同一サブシステム内を観点とした結合テストです。サブシステムの内部でそれぞれの機能を連携させ、不具合が生じないかどうか、問題なく作動するのかどうかを検証します。結合テスト(Integration Test)を2段階に分けて行った場合の前半のテストにあたることから、「Integration Test A」、「ITa」と呼ぶことも少なくありません。
外部結合テスト
外部結合テストは、「Integration Test A」と呼ばれる内部結合テストに対して、後半過程にあたることから「Integration Test B」、「ITb」と呼ばれるテストで、サブシステム間、あるいは外部システムの機能と連携させることによって、不具合が生じず適切に処理できるのかどうかを検証します。内部における連携をチェックするITaに対し、外部連携をチェックするのがITbと言えるでしょう。
テスト観点リストの作成方法
テストを行う際には、チェックするべき点に漏れがないように、属人化してブレが出ないようにテスト観点リストを作成する必要があります。テスト観点リストを作成する際には、ソフトウェア製品の品質評価について定められた国際規格「ISO/IEC9126」などを参考に、大カテゴリーから細かな分類へと分けていき、何を観点リストとするべきなのか整理していきましょう。
しかし、システム開発における観点リストは、その作成方法が明確に定められているわけではありません。様式も決まっていないため、ある程度柔軟に作成可能です。
テスト観点リストを作成するときのポイント
テスト観点リストを作成する際には、作成方法や様式が決まっているわけではありませんが、
・プロジェクト目的、テスト目的の確認
・対象の部品への分解
・部品の機能の整理
などのポイントをおさえながら進める必要があります。順を追えば作成できないわけではありませんが、本当に網羅性があるのか、過不足はないかなどを適切に判断するためには、システム開発における知見・ノウハウがなければ簡単ではありません。そのため、システム開発におけるテスト代行に強い会社などに外注するのもおすすめでしょう。
「自社にあった会社が見つからない」「会社選びに時間が割けない」とお悩みの方は、お気軽に「アイミツ」にお問い合わせください。数あるシステム開発会社からあなたの要望にあった会社をピックアップして無料でご紹介いたします。
ほかのテストとの違いや関係性
結合テストはどのようなテストなのか、どういった目的で行われるのかなどがわかりましたが、システム開発におけるほかのテストとはどのような点で異なるのでしょうか。ここからは、単体テストとの違い、システムテスト(総合テスト)との違いをそれぞれ確認していきましょう。
単体テストとの違い
単体テストとは、システムを構成しているモジュール単位・コンポーネント単位などの小さな単位で正常に機能するかどうかを検証するテストです。単位はユニットと呼ばれることから、別名ユニットテストと言われています。
コードを作成した段階など、プロジェクトにおける前半で行われるテストで、各機能の動作をチェックするために行われる非常に重要な作業です。基本的には、コードを書いた開発者が行います。
システムテスト(総合テスト)との違い
システムテストは、単体テストや結合テストを終えたシステム開発における終盤で行われ、総合テストとも呼ばれているテストです。システムテストでは、要件定義によって発注者側から要求されている機能をきちんと満たせているのかどうかが確認されます。
システム全体が正しく作動しているのかをチェックするE2Eテスト (End to Endテスト)も、このシステムテスト内で行われ、何か不具合があった場合にはシステムテストまでに改善されるのが一般的です。
結合テストの流れ
結合テストでは、基本的に以下の流れで行われます。
1.テスト項目を洗い出す
要件定義をベースにテストするべき項目を整理していきます。コスト、品質、納期などのバランスもふまえて洗い出しましょう。
2.テストを行う
「トップダウンテスト」、あるいは「ボトムアップテスト」のいずれかの方式を採用しながら、インターフェーステストやブラックボックステストなどを行っていきます。
先にも説明している通り、単体テストと結合テストまでが完了したら、システム全体を結合させてチェックするシステムテストを行わなければなりません。
結合テストの手法
それでは、結合テストにおける増加テストに分類される「トップダウンテスト」や「ボトムアップテスト」、一方で非増加テストに分類される「ビッグバンテスト」とは一体何なのか確認していきましょう。一般的には増加テストが行われる場合が多いですが、それぞれはどのように異なるのでしょうか。
トップダウンテスト
トップダウンテストとは、最上位のモジュールからトップダウン形式で結合テストを順次進めていくテストのこと。順番に下位モジュールを結合させていくことによって行われます。最上位から検証することで抜け漏れを防止できるのがメリットですが、上位モジュールが検証されてから下位モジュールの開発を行わなければなりません。
ボトムアップテスト
ボトムアップテストは、プログラムにおける最下位モジュールから検証していくテストを指しています。下位から上位モジュールへと順番に結合させて検証することから、プログラミング後にすぐテストできる、効率的にプロジェクトが進められるといったメリットがありますが、終盤にミスが見つかってしまえば手戻りとなってしまいます。
ビッグバンテスト
ビッグバンテストとは、トップダウンテストやボトムアップテストのようなモジュールが追加されていく増加テストとは異なり、システムにおける構成要素をまとめて検証する非増加テストです。未検証のモジュールも含めて一挙にテストすることから、もしも不具合が生じた際には何が原因なのか見つけづらいのがデメリットですが、手間を抑えられるという点はメリットです。
結合テストの種類
ここからは、結合テストにはどのような種類があるのか確認していきましょう。定番と言っても過言ではないインターフェーステストやブラックボックステストのほか、負荷テストや業務シナリオテストについて紹介していきます。
ブラックボックステスト
ブラックボックステストとは、内部構造を把握しないまま(ブラックボックスのまま)で、入力いたことに対し適切な出力を得られるかどうかをチェックするテストを指しています。すでに単体テストを終えたモジュール同士を結合させて行われ、実施する際にはシステム開発における知見やスキルは要らないことから、開発メンバー以外に任せても問題ありません。テストのしやすさから、費用対効果にも優れていると言えるでしょう。
インターフェーステスト
インターフェーステストは、システムにおけるそれぞれのプログラムやモジュールを連携させた際、正常に動作するのかどうかをチェックするためのテストで、結合テストの基本を成すものです。モジュール間を連携させた際にデータの引き継ぎがきちんと行われているのかどうかをメインに検証します。ブラックボックステストとは異なり、知見のある開発チームが行うべきテストです。
負荷テスト
負荷テストは、システムを限界まで負荷がかけられた状態にし、動作が停止してしまわないか、パフォーマンスが低下しないかなどといったポイントをチェックするテストです。例えば、連続稼働を長時間行った際にシステムダウンは発生してしまわないか、アクセス数が非常に増えた際にレスポンスの低下が見られないかなどを検証します。システムの安全性や安定性などを前もって把握しておくためにも非常に大切なテストと言えるでしょう。
業務シナリオテスト
業務シナリオテストとは、実際にシステムで行われる業務を想定し、想定された工程に則って行われるテストを指します。実際の工程で問題なく動作するのかどうかを検証するほか、イレギュラーな対応があった場合にはどのような動作となるのか、不具合は生じないのかといった点までチェックしなければなりません。システムの品質面を高く保つためにも、さまざまなパターンで試しておく必要があるでしょう。
結合テストを実施するときの注意点
最後に、結合テストを行う際の注意点を紹介していきます。結合テストを行う際にはさまざまな点に注意する必要がありますが、今回は、
・プログラムの連結数には留意する
・データベースを直接書き換えない
・テストのスケジュールにバッファを持たせる
上記の3つのポイントに絞って確認していきましょう。
プログラムの連結数には留意する
結合テストを行う際には、プログラムの連結数に留意しましょう。まとめて連結させてしまえば工数が削減されるため、より早くテストが完了することとなります。しかし、多く連結させればさせるほど、もしも不具合が見つかった際に原因が判明しづらくなってしまうのも事実です。
結合テストを行う際には、連携させるプログラム数をできる限り抑えつつテストを進めていくことで、品質を確保しながら順を追って進めていくことができるでしょう。
データベースを直接書き換えない
結合テストを行う際には、データベースを直接書き換えることのないように注意してください。結合テストではさまざまなモジュール間におけるデータ引き継ぎなどを検証するため、間違ったデータを書いてしまった、重要なデータが消えてしまったなどといったトラブルが起こるリスクが高いもの。もしもデータベースにまでミスが生じてしまえば、その修正作業の負担も増えてしまいます。
単体テストにおいては直接データベースを編集することもありますが、結合テストではNGなので注意しましょう。
テストのスケジュールにバッファを持たせる
結合テストを行うにあたっては、テストのスケジュールにバッファを持たせるように注意しましょう。モジュールを連携させていく際に単体テストが行われていない部分に気づいた、連携させて見たら予想外のバグが発生したなどといったこともゼロではありません。もしもギリギリのスケジュールで進んでいれば納期に遅延してしまうため、プロジェクトの納期に影響のない範囲で余裕を持ったスケジューリングを行っておいてください。
システム開発の費用相場
つづいては、システム開発を外注した際にかかる費用相場をご紹介します。
システム開発の平均相場 | 233万円~ |
システム開発の種類 | 費用相場 |
簡易顧客システム | 20万円~ |
Webシステム | 130万円~ |
業務システム | 400万円~ |
システム開発の費用相場をご紹介しました。より正確な費用を知りたい方は料金シミュレーターをご利用ください。
【まとめ】システム開発の結合テストを理解し、目的に合ったシステム開発会社を選ぼう
今回は、システム開発における結合テストとは一体どのようなテストなのかを解説してきました。結合テストは、システムが正しく動くのかどうかを確認するために非常に重要なテストです。結合テストで遅延やトラブルが発生してしまえばあとのプロジェクトに響いていくので、スムーズに終えられるように準備しておきましょう。
また、システム開発は自社で行うとなると多くのコストがかかります。人材が足りない、時間が足りないという状況になる可能性もゼロではありません。もしもリソースが足りないという場合には、システム開発会社にまとめて依頼するのもおすすめです。外注先をお探しなら、ぜひアイミツにお問い合わせください。
【相談前にまずは会社一覧を見たいという方はこちら】
システム開発会社一覧
【費用感を知りたいという方はこちら】
システム開発の費用・相場
システム開発会社探しで、こんなお悩みありませんか?
-
一括見積もりサイトだと
多数の会社から電話が・・・ -
相場がわからないから
見積もりを取っても不安・・・ -
どの企業が優れているのか
判断できない・・・
PRONIアイミツなら
発注先決定まで
最短翌日
- 専門コンシェルジュが
あなたの要件をヒアリング! - 10万件の利用実績から
業界・相場情報をご提供! - あなたの要件にマッチした
優良企業のみご紹介!
診断とヒアリングから
お探しします