単体テスト・結合テスト・総合テストの違いを解説【2024年最新版】
単体テストや結合テスト、総合テストなど、システム開発のプロジェクトを進める上ではさまざまなテストを行わなければなりません。しかし、それぞれのテストで一体何が異なるのか、それぞれのテストで何が行われているのかをきちんと理解しきれていないという方も多いのではないでしょうか。
そこで今回は、単体テスト・結合テスト・総合テストはそれぞれでどう異なるのか説明するとともに、それぞれのテストの種類、やり方、テスト工程などをまとめて解説していきます。システム開発におけるテストについて詳しく知りたいという方は、ぜひ参考になさってください。
【関連ページ】
システム開発にかかる費用・相場感や、あなたの目的別にシステム開発会社をお探しいただけます。
システム開発の費用・相場
システム開発会社一覧
各テストの違いは粒度(テストレベル)の大きさ
単体テスト・結合テスト・総合テストは何が異なるのでしょうか。これらの大きな違いとしてあげられるのは、粒度(テストレベル)の違いです。
・単体テスト
システムにおける機能を単体で検証する
・結合テスト
機能間を連携させて検証する
・総合テスト
すべて含めて全体を検証する
といった違いがあり、テストの規模感が異なると言い換えてもいいでしょう。システム開発のプロジェクトを進める際には、単体テストから順に行われることとなります。
単体テストと結合テストが同じといわれる理由
単体テストと結合テストは、しばしばコンポーネントテストとしてまとめて語られることもあるようです。コンポーネントテストは、ユニットテストやモジュールテストとも言い換えられることからも分かる通り、仕様を定義されるモジュールや関数、クラスなどといった要素(=コンポーネント)をテストするもの。テスト設計においてレベルごとのフェーズをきちんと定める際には、単体テスト、結合テストといった区別がなされることが多いでしょう。
各テストの違いを比較
ここからは、単体テスト・結合テスト・総合テストの違いについて確認していきます。簡単な表にまとめているので、違いをチェックしてみましょう。
先にも説明している通り、それぞれのテストにおいて検証する対象の粒度が異なるのが大きな違いですが、そのほかにも異なる点はいくつかあげられます。目的やテスト範囲についてのほか、かかる時間などについても要チェックです。また、単体テスト・結合テスト・総合テストを終えた最後の工程において行われる受け入れテストについても比較しているので、参考にしてください。
比較項目 | 単体テスト | 結合テスト | 総合テスト | 受け入れテスト |
---|---|---|---|---|
テストの目的 | 関数、モジュール単位で問題がないか検証 | システム内で適切に連携できているのか検証 | 要求を満たせているのか検証 | 発注ニーズを満たしているか、運用可能かどうか検証 |
テスト範囲 | 機能単体 | 内部モジュール、並びに外部システムとの連携 | システム全体 | システム全体 |
特徴 | 単体で検証することから問題特定がスムーズ | 単体テストではわからない部分の脆弱性も把握できる | 開発環境では見つけられない不具合を発見できる | 実際に運用可能な確認できる |
課題 | 時間も人員も必要 | 不具合があった場合改善に時間がかかる | 本番とほとんど同じ環境でなければならない | プロジェクトの初期段階で計画しておく必要がある |
「自社にあった会社が見つからない」「会社選びに時間が割けない」とお悩みの方は、お気軽に「アイミツ」にお問い合わせください。数あるシステム開発会社からあなたの要望にあった会社をピックアップして無料でご紹介いたします。
単体テスト(UT)とは
それぞれのテストの違いについて大まかにわかったところで、単体テスト・結合テスト・総合テストについて詳しく内容を確認していきましょう。まずは単体テストからです。
繰り返しになりますが、単体テストとは、機能単体で不具合がないか検証するテストを指します。モジュールやプログラム、コンポーネントなどといった機能単体(ユニット)で検証することから、「UnitTest(UT)」、「ユニットテスト」とも呼ばれることが少なくありません。また、機能単体で検証すると言ってもどの機能も分離して検証しやすいというわけではないため、分離しづらい点がある場合には難易度が上がります。
単体テストの種類や観点
単体テストと一口に言っても、行う際の手法は2つに分けることができます。一般的には、以下の2つの手法を用いて単体テストが行われていると言っていいでしょう。
・ホワイトボックステスト
・ブラックボックステスト
以下では、上記の単体テストにおける代表的な手法について解説します。
ホワイトボックステスト
ホワイトボックステストとは、システムの動作について網羅的に検証するテストのこと。網羅的に検証しなければならないことから、あらかじめ定義されていない文字・数値などを入力した際に出力はどうなるのかなどといった予想外のケースも検証する必要があります。
基本的にはシステム設計者・開発者視点でテストが行われ、小さなモジュール単位で実施されるのが一般的でしょう。網羅性には長けていますが、どうしても工数が増えてしまうのは課題の1つです。
ブラックボックステスト
対してブラックボックステストとは、システムの内部構造については知らない状態、つまりは構造についてブラックボックス状態で、外部の仕様について検証されるテストです。ユーザー側のテストと言っても過言ではなく、プログラムの構造を知らないままシステムについてテストしていくので、設計者では気づくことのできない想定外の不具合、漏れなどを見つけることができます。UI/UXの観点におけるテストもブラックボックステストに含まれるでしょう。
単体テストのやり方・工程
単体テストは、基本的に以下の流れで行われます。
1.仕様書作成
どのようなテストを実施するのか整理します
2.テストの実施
仕様書に沿って単体テストを実施します
3.エビデンスの保存
実行結果やログ、ファイルなどのエビデンスを保存します
単体テスト後にエビデンスを保存するのは必須であり、成功・失敗のどちらであってもきちんと取得するよう注意してください。また、それぞれの現場で取得しなければならないエビデンスは異なるため気をつけましょう。
結合テスト(IT)とは
ここからは、結合テストについてどのようなテストなのか紹介していきます。結合テストでは、機能単位で検証されたあとに、複数のモジュールやプログラム、さらには外部のシステムなどと連携させて不具合がないか検証されます。それぞれのモジュールなどを組み合わせて行われることから、「IT(Integration Test)」、「JT(Joint Test)」などと呼ばれることも少なくありません。
結合テストの種類や観点
結合テストには、さまざまな種類があります。基本的には、
・ブラックボックステスト
・インターフェーステスト
・業務シナリオテスト
・負荷テスト
の4つがあげられますが、中でも代表的なのはブラックボックステストとインターフェーステストです。
以下では、それら2つについて詳しく確認していきましょう。
ブラックボックステスト
結合テストにおけるブラックボックステストは、単体テストにおけるブラックボックステストと同様に、プログラムにおける内部構造を把握せずに実施されるテストです。インプットに対してアウトプットが適切に行われるのかをチェックします。内部構造を把握せずにチェックすることのできるテストなので、開発担当者以外のメンバーにチェックだけ依頼することも問題ありません。
インターフェーステスト
結合テストにおけるインターフェーステストとは、連携されたモジュール間のインターフェース(=結合したモジュール間で行われるやりとりの仕組みのこと)をチェックするテストのこと。単体で検証されたモジュールやプログラムが、連携させた際に不具合なく作動するのかどうかを確認します。簡単に言えば、連結したモジュール間でデータのやり取りがうまく行われているのかどうかを確認するテストでしょう。
結合テストのやり方・工程
結合テストは、大まかに説明すると以下の工程で行われます。
1.テスト項目の整理
あらかじめ行われている要件定義に則って、結合テストを行うべき項目はどれか確認します。
2.結合テストの実施
インターフェーステストやブラックボックステストなどの種類のテストを、トップダウンテストやボトムアップテストなどの手法で行っていきます。
結合テストで問題がないことがわかったら、今度はシステム全体をチェックする総合テストへと進みます。
総合テスト(ST)とは
総合テストは、「System Test」、「ST」とも呼ばれるテストです。これまでにモジュール単体やモジュール間の結合などでテストされてきたシステムについて、仕様書に定められている通りに機能しているのか、予定された機能が満たされているのかなどをまとめて検証します。
総合テストの種類や観点
総合テストでは、システム全体を検証するためにさまざまなテストが行われます。
・回帰テスト
・性能テスト
・ユーザビリティテスト
・セキュリティテスト
・障害許容性テスト
・負荷テスト
・ロングランテスト
・デグレードチェックテスト
などがあげられますが、大まかに非機能要件のテスト・機能要件のテストに分けることも可能です。
非機能要件のテスト
性能テストや負荷テスト、ユーザビリティテストなどは、非機能要件テストに分類されます。文字通り、システムの機能(=何ができるのか)ではなく、どのように動くのかといった点を確認するためのテストで、その多くがシステムの外部動作に関することであることから、ブラックボックステストの手法が採用されることが多いでしょう。
機能要件のテスト
機能要件のテストは、文字通りそのシステムで何ができるのかといった機能面について検証するテストです。同値分割(同値クラス)テストやデシジョンテーブルテスト、状態遷移テストや境界値分析テストなどさまざまな手法を活用し、求められている機能がきちんと満たされているのかを確認します。組み合わせテストやユースケーステストなどが行われることも多いでしょう。
総合テストのやり方・工程
総合テストは、基本的に以下の流れで進められていきます。
1.テスト計画
要件定義書をベースに、総合テストの計画書を作成します
2.仕様書の作成
実際にどのようなテストを行うのか整理した仕様書を作成します
3.環境の構築
総合テストを行うために必要な環境を構築します
4.実行、分析
実際に総合テストを行い、問題なく動作することを確認できたら、クライアント側への引き渡しとなります
発注者が行う"受け入れテスト(UTA)"もある
総合テストまで終えたシステムは発注者側へと引き渡されることとなりますが、先にあげた表でも説明した通り、最終的な受け入れテストが行われることもあります。
・発注者側の代表者数名、あるいは第三者のパートナー会社などが行う
・実際の利用環境で問題なく運用できるか確認する
と言った特徴があり、単体テストや結合テストとは少し目的が異なって、実際のユーザーが問題なく使用できるのかどうかをメインにしたテストです。受け入れテストが行われるのはシステム開発のプロジェクトにおける終盤ですが、受け入れテストの計画自体は初期段階で行っておくとスムーズでしょう。
システム開発の費用相場
つづいては、システム開発を外注した際にかかる費用相場をご紹介します。
システム開発の平均相場 | 233万円~ |
システム開発の種類 | 費用相場 |
簡易顧客システム | 20万円~ |
Webシステム | 130万円~ |
業務システム | 400万円~ |
システム開発の費用相場をご紹介しました。より正確な費用を知りたい方は料金シミュレーターをご利用ください。
【まとめ】単体テスト・結合テスト・総合テストの違いを踏まえてシステム開発会社を選ぼう
今回は、単体テスト・結合テスト・総合テストは何が違うのか、最終的に行われる受け入れテストとは何かなど、システム開発におけるテストフローについてまとめて解説してきました。
システム開発は、自社で行うとなると非常に多くのリソースが必要となるもの。人員不足で悩まされている場合などには、大きな負担となってしまいます。そのため、システムのクオリティを下げないためにも、システム開発会社への外注も検討してみましょう。もしも外注先をお探しの場合には、ぜひアイミツにお問い合わせください。
【相談前にまずは会社一覧を見たいという方はこちら】
システム開発会社一覧
【費用感を知りたいという方はこちら】
システム開発の費用・相場
システム開発会社探しで、こんなお悩みありませんか?
-
一括見積もりサイトだと
多数の会社から電話が・・・ -
相場がわからないから
見積もりを取っても不安・・・ -
どの企業が優れているのか
判断できない・・・
PRONIアイミツなら
発注先決定まで
最短翌日
- 専門コンシェルジュが
あなたの要件をヒアリング! - 10万件の利用実績から
業界・相場情報をご提供! - あなたの要件にマッチした
優良企業のみご紹介!
診断とヒアリングから
お探しします