この記事に関連するお役立ち資料

AIを活用した業務自動化 事例BOOK
無料ダウンロード
単体テスト及び結合テストとは、リリース前にユーザーが求めている機能が問題なく反映できているかを確認するテストです。
単体テストと結合テストを合わせて、総合テストと呼ばれています。
この記事では、単体テスト・結合テストについて以下の内容を解説します。


単体テスト(UT)、結合テスト(IT)、総合テスト(ST)の違いを、以下の表にまとめたので参考にしてください。
| 単体テスト(UT) | 結合テスト(IT) | 総合テスト(IT) | |
| テスト範囲 | 機能を単体でテストする | 各機能間や他のシステムとの間をテストする | 非機能を含んだシステム全体をテストする |
| 目的 | 関数やメソッド単位での不具合を検出するため | システム内の機能が連携できているか検証するため | ユーザーの要求を正確に満たしているか検証するため |
| メリット | 問題点を特定し易い 他のシステムから独立して実行できるので時間がかからない | クオリティが上がる 単体テストの弱点である連結部分を確認できる | 水際でハードウェア環境の不具合を防げる |
| デメリット | 作業時間や人員が増えてコストがかかる | 時間がかかる 問題点をリカバーする際に手間がかかる | 完成品と同じ環境で行う必要がある |

単体テストはUnitTest(UT)とも呼ばれ、機能単体でプログラムが正常に動くかを検証するものです。
プログラムの部品であるモジュールが問題なく機能しなければ、システムとして成立しません。そのため、単体テストは重要な役割を果たします。
単体でテストするといっても、常に分離できるとは限りません。分離できない場合は、テストが難しくなる点に注意しましょう。
単体テストの観点は、ホワイトボックステストの実施です。システムのクオリティを確保するための、条件分岐を網羅しているか確認しましょう。
単体テストの手法であるホワイトボックスとブラックボックスについては、以下の表にまとめました。
| ホワイトボックス | ブラックボックステスト | |
| 概要 | 開発者視点のテスト 1つずつ網羅的にチェックする方法 構造ベースのテストともいわれる 小さなモジュールで実施されるのが一般的 | ユーザー視点のテスト 仕様をに満たしているかをチェックする方法 プログラムの内部には考慮しない |
| メリット | 網羅的な検証ができる | 工数が抑えられる |
| デメリット | 工数が増える | 内部処理が検証できない |

結合テストはIntegration Test(IT)とも呼ばれ、機能を組み合わせて正常に動くかを検証するテストです。Combined Test(CT)といわれる場合もあります。
モジュール同士の組み合わせのほか、外部のモジュールとの結合を確認するテストもおこないます。
結合テストの観点は、要件定義をもとにした項目の洗い出しです。コストや納期、品質についてのバランスを考慮します。
結合テストは、データの流れの把握が可能である必要があります。具体的な手法として、以下の表にまとめましたので参考にしてください。
| 概要 | |
| インターフェーステスト | モジュール同士を接続する データの引き渡しが正常かを検証するテスト |
| ブラックボックステスト | 内部構造を把握していない状態で正しく出力されるか検証するテスト システムの外部仕様をもと 網羅型と削減・標的型の2種類がある |
| 業務シナリオテスト | 実際に業務を行う想定で動作確認するテスト イレギュラーな操作も試せる |
| 負荷テスト | 限界まで負荷をかけても動作が停止しないか 動きが鈍くならないか検証するテスト |
テストの実施方式には、トップダウンとボトムアップがあります。トップダウンは、上位のモジュールからテストをおこなう方法、ボトムアップは逆に下位のモジュールを先にテストする方法です。


総合テストはSystem Test(ST)とも呼ばれ、システム開発の最終段階ですべてのシステムを結合させてからテストします。
発注者の要求する機能が満たされているか、仕様書の通りに構築されているかなどを確認するのが主な目的です。そのため、すべてが統合されている状態で確認する必要があります。
観点により、総合テストの種類が異なる点を以下の表で確認しましょう。
| 概要 | |
| 回帰テスト | ソフトウェア改修時に不具合が生じていないか確認するテスト |
| デグレードチェックテスト | プログラム改修時のバグなどの再発を確認するテスト |
| セキュリティテスト | 仕様書通りの動作でセキュリティが確保できるか確認するテスト |
| ユーザビリティテスト | ユーザーの満足度を確認するテスト |
| 障害許容性テスト | システムに障害が発生しても機能が維持されているか確認するテスト |
| 性能テスト | システムの性能を測定して評価するテスト |
| ロングランテスト | 連続で稼働しても問題がないか確認するテスト |
| 負荷テスト | システムの負荷が大きくても正常に動作するか確認するテスト |
受け入れテスト(UAT)とは、発注者による実際の運用環境でのテストをいいます。これにより、発注者の要望を満たしているか見極められます。
受け入れテストを初期段階で行えば、発注者と開発者が完成形の共通認識を持ちやすくなります。さらに、他のテストの実施も円滑になるので、ぜひ初期におこないましょう。
受入テストの種類は、以下の6つです。
機能テスト
疎通テスト
性能テスト
回帰テスト
セキュリティテスト
ユーザビリティテスト
いずれのテストも、ユーザー視点でチェックするのが大切です。特に、機能テストとユーザビリティテストが重要です。

システムやプロダクトをテストする際に区切る単位の大きさが粒度です。最初は細かい粒度でテストして、徐々に大きな粒度にしながら進めます。
テスト前には、定義と粒度を明確にしておく必要があります。定義が曖昧でテストをはじめてしまうと、粒度を統一できないからです。定義や粒度はシステムの特性や規模によっても変化するので、注意しましょう。
粒度による区切りが明確になっていなかった場合、単体テストと結合テストの範囲の認識がズレてしまいます。
その結果、結合テストまで進んだ段階で不具合が見つかるというトラブルにもなりかねません。
単体テストが完了しているにもかかわらず、結合テストでバグが多く発見されるというトラブルを回避するためには、テスト計画が有効です。
結合テストをする際の観点としては、「何を」「どこまで」「どのように」が重要です。そのためには、以下の2点が絶対条件になります。
単体テストと重複しない
システムテストと結合テストの間に隙間がないようにする
事前に計画をして、重複しないように進めましょう。
システム開発では、何度もテストを繰り返して品質を高めていく必要があります。適切な単体テスト、結合テスト、総合テスト、受入テストが大切です。
NOVELでは、小単位でテストをおこないながら進めるアジャイル開発を取り入れています。
「月額制アジャイル開発」では、週次でレビューのフィードバックを受けて継続的に価値あるシステムを提供します。新たにシステムを立ち上げる際は、ぜひ当社へご相談ください。
この記事に関連するお役立ち資料を無料ダウンロード

AIを活用した業務自動化 事例BOOK
AI技術を活用した社内業務効率化の基本から、実際の導入ステップまでをわかりやすく解説しています。
下記フォームにご記入下さい。(30秒)
テックユニットは、下記のような方におすすめできるサービスです。
お気軽にご相談ください。
・開発リソースの確保に困っている方
・企業の新規事業ご担当者様
・保守運用を移管したい方
・開発の引き継ぎを依頼したい方


おすすめの記事
関連する記事はこちら
優秀なエンジニアの見極め方がわかる!採用面接で聞くべき質問例15選
優秀なエンジニアを見極めるのは、企業にとって大きな課題です。人材不足が深刻化する中、優秀な人材を見逃すわけにはいきません。優秀なエンジニアを見極めるのが難しい採用面接でどのような質問をすべきかわからない採用後のミスマッチを避けたいなどは、多...
エンジニア面接の技術質問で優秀なエンジニアを見極める方法
多くの企業が抱える課題の1つに、優秀なエンジニアの採用があります。優秀なエンジニアを見つけるのは簡単ではありません。履歴書やポートフォリオだけでは、実際の技術力や問題解決能力、コミュニケーション力などを把握するのは難しいのが現状です。そのた...
どちらが上?AWSとAzureの性能・特徴の違いを徹底比較
「AWSとAzureの性能はどちらが上なのか知りたい」とお考えではないでしょうか。クラウドサービスは、物理的なインフラを自社で設置・管理する必要がなくなり、導入コストや運用負担を削減できます。その一方で、どのクラウドサービスを選べばいいのか...
AWSのCDN「Amazon CloudFront」とは?メリットやユースケースを紹介
CDNとはどのようなものなのかAWSのCDNであるAmazon CloudFrontにはどのような特徴があるのかAmazon CloudFrontを利用するメリットは何かAmazon CloudFrontの利用方法は?このような疑問を持って...
開発生産性とは?高める理由や注意点、フレームワークを解説
開発現場では、生産性の向上が喫緊の課題となっている開発リソースの有効活用や、スピーディーな製品リリースが求められている開発コストの削減や、人材不足への対応も重要な課題とお悩みではないでしょうか。開発現場では、常に効率化を意識しながら、限られ...
エンハンス開発とは?仕事内容や業務を円滑に進めるためのポイントを解説
「エンハンス開発って何?」「仕事内容は?」「円滑に進めるためのポイントは?」と気になりお調べですね。また、エンハンス開発の概要や新規開発との違い、またその使い方については、なかなか明確に理解できていない方も多いのではないでしょうか。そこで、...
エンジニアの外注費の相場は?見極めるポイントと費用を抑える3つのコツ
「エンジニアの確保が追いついていない」「予算の制約に悩んでいる」というお悩みはありませんか?新しいプロジェクトが増加する一方で、社内のエンジニアの採用やトレーニングが追いついていない。そのギャップを埋めるために、外注を検討している企業も少な...
増加続く…派遣エンジニアの単価相場は?推移と過剰なコストを避ける方法
「予算内で最大限の成果を得たい」「過剰なコストを避けて利益を最大化したい」とお考えではないでしょうか。近年、IT業界では人材不足が深刻化しており、企業はエンジニアの確保に苦戦しています。一方で、エンジニアの単価は上昇傾向にあり、採用コストの...
給与以上の理由でエンジニアが辞める - 10の理由と改善ポイント
「優秀なエンジニアが次々と辞めていく」という悩みはありませんか?優秀なエンジニアの確保は、企業にとって大きな課題です。実際にエンジニアの離職は意外に多く、優秀な人材の確保と定着が難しくなっています。このエンジニアが辞める理由は給与以外にも様...
AWSのCloud9とは?できることやメリット・デメリットについて解説
開発環境としてのAWSのCloud9について、その魅力とともに注意点も含めて詳しく知りたいという方も多いのではないでしょうか。AWSのCloud9は、低コストでチームで開発を行いたい、新規事業としてなるべく低予算で開発したいという場合に重宝...
業務システムとは?大別や種類、メリットとデメリットをプロが解説
企業の成長を支えるために、効率的な業務システムの導入を検討することはしばしばあります。しかし、どのように始めれば良いのか、どのシステムが最適なのか、悩むことも多いでしょう。また、業務システムの自作には多くのメリットがありますが、同時に注意す...
システム保守とは?業務内容やメリット・デメリット、費用相場まで解説
「システム保守運用の費用が高すぎるのでは?」と感じたことはありませんか?システムの安定運用は企業の業務効率やセキュリティに直結するため、適切な保守運用が欠かせません。しかし、具体的な費用相場や業務内容を知らないままでは、適切な判断が難しいは...
人気記事ランキング
おすすめ記事