単体テストと結合テストの違い|総合テストとの関係・観点・テスト仕様書の例をわかりやすく解説

この記事の結論
単体テストと結合テストの違いは、部品を1つずつ確かめるか、部品を組み合わせたときのつなぎ目を確かめるかです。その後に総合テストで全体を確かめます。
- 単体テストは詳細設計、結合テストは基本設計を確かめる
- 単体は条件の分岐、結合はデータの受け渡しが主な観点
- テストは単体・結合・総合・受入の順に範囲を広げていく
📖 読了時間:約10分
単体テストと結合テストの違いは、単体テストがプログラムの部品(関数や画面など)を1つずつ確かめるのに対し、結合テストは部品を組み合わせたときに、つなぎ目が正しく動くかを確かめる点にあります。どちらも、システム開発のテストの工程で順番に行います。
単体テストで部品に問題がないことを確かめてから結合テストに進むことで、不具合の原因を見つけやすくなります。結合テストの後には、システム全体を確かめる総合テスト、顧客が確かめる受入テストが続きます。
以下では、2つのテストの比較、それぞれの観点、総合テスト・受入テストとの関係、テスト仕様書の書き方と例、テストの経験の伝え方の順に解説します。
こんな悩みはありませんか
- 単体テストと結合テストの区別がはっきりつかない
- それぞれのテストで何を確かめればよいか知りたい
- テスト仕様書の書き方に自信がない
- テストの経験をスキルシートでどう伝えればよいか迷う
この記事で分かること
- 単体テストと結合テストの違い(比較表)
- それぞれのテストで確かめる観点
- 総合テスト・受入テストとの関係
- テスト仕様書の書き方と記載例
- テストの経験を経歴で伝えるコツ
この記事を読めば、テストの段階ごとの違いと、それぞれで確かめるべきことが分かります。まずは無料でスキルログに登録し、これまでに担当したテストの種類と範囲を整理しておきましょう。
対象、目的、観点、担当、対応する設計の5つで比べると違いが整理できます。
| 観点 | 単体テスト | 結合テスト |
|---|---|---|
| 対象 | 関数、クラス、画面など部品1つ | 複数の部品を組み合わせた機能 |
| 目的 | 部品が詳細設計どおりに動くか確かめる | 部品どうしのつなぎ目が正しく動くか確かめる |
| 主な観点 | 条件の分岐、境界の値、エラーの扱い | データの受け渡し、画面の遷移、外部との連携 |
| 主な担当 | その部品を作ったプログラマー | 開発チーム、テスト担当 |
| 対応する設計 | 詳細設計 | 基本設計 |
| 見つかる不具合の例 | 計算の誤り、条件の漏れ | 項目の受け渡しの食い違い、呼び出し順の誤り |
テストは段階的に範囲を広げる
ソフトウェアテストの国際的な資格制度であるISTQB(日本ではJSTQB)でも、テストを「テストレベル」という段階に分け、単体(コンポーネント)テスト、結合(統合)テスト、システムテスト、受け入れテストの順に範囲を広げる考え方が示されています。工程全体の流れはシステム開発の工程とは?流れと成果物の一覧で解説しています。
設計とテストは対になっている
V字モデルの考え方では、詳細設計で決めたことは単体テストで、基本設計で決めたことは結合テストで確かめます。設計の違いは基本設計と詳細設計の違いで比較しています。
単体テストとは:部品を1つずつ確かめる
単体テストでは、正常な値、誤った値、境界の値を入力し、部品が設計どおりに動くかを確かめます。
- 正常系:想定どおりの入力で、正しい結果になるか
- 異常系:誤った入力や空の入力で、正しくエラーを返すか
- 境界値:上限・下限ちょうどの値と、その前後で正しく動くか
- 分岐の網羅:すべての条件の分かれ道を一度は通っているか
カバレッジで漏れを測る
カバレッジとは、テストでプログラムのどれだけの部分を実行したかを示す割合です。命令を一度でも実行したかを測る方法や、条件の分岐をすべて通ったかを測る方法があります。割合が高いほど安心できますが、100%でも仕様の誤りまでは見つけられない点に注意が必要です。
テストコードで自動化する
単体テストは、テスト用のプログラムを書いて自動で実行することが一般的になっています。修正のたびにすぐ確かめられるため、変更に強いコードを保つのに役立ちます。
結合テストとは:つなぎ目を確かめる
結合テストでは、部品どうしのデータの受け渡し、画面の遷移、外部のシステムとの連携が正しく動くかを確かめます。
- データの受け渡し:渡す項目、型、桁数がそろっているか
- 処理の順番:呼び出す順番やタイミングが正しいか
- 画面の遷移:画面から画面へ、正しい情報を引き継げるか
- 外部との連携:他のシステムとの送受信が仕様どおりか
内部結合と外部結合
結合テストは、自分たちのシステムの中の部品どうしを確かめる「内部結合テスト」と、他のシステムとの連携を確かめる「外部結合テスト」に分けることがあります。外部結合テストは、連携先の担当者と日程を合わせて行う必要があります。
組み合わせる順番
上位の部品から順につなぐ方法と、下位の部品から順につなぐ方法があります。まだできていない部品は、代わりに決まった値を返す仮の部品を使って確かめます。
単体テストと結合テストの違いと総合テスト・受入テストの関係
結合テストの後に、システム全体を確かめる総合テストと、顧客が確かめる受入テストを行います。
| テスト | 確かめること | 主な担当 | 対応する工程 |
|---|---|---|---|
| 単体テスト | 部品が設計どおりに動くか | プログラマー | 詳細設計 |
| 結合テスト | 部品のつなぎ目が正しく動くか | 開発チーム | 基本設計 |
| 総合テスト(システムテスト) | システム全体が要件どおりに動くか。性能や負荷も確かめる | 開発チーム、テスト担当 | 要件定義 |
| 受入テスト | 業務で使える状態か | 顧客 | 要件定義 |
略語で呼ばれることも多い
現場では、単体テストをUT、結合テストをIT、総合テストをSTと略すことがあります。主な略語は開発工程の略語一覧でまとめています。
自分が担当したテストの段階と範囲を記録しておくと、経験を具体的に伝えられます。スキルログなら案件ごとに担当工程を入力できるので、テストのどの段階を担当したかまで残せます。
テスト仕様書の書き方と例
1行に1つの確認内容を書き、前提・手順・期待する結果を、誰が実施しても同じ判断になるように書きます。
在庫検索の機能を例に、結合テストの仕様書の書き方を示します。
| No. | 観点 | 前提 | 手順 | 期待する結果 |
|---|---|---|---|---|
| 1 | 画面の遷移 | 在庫が10件登録済み | 検索画面で商品名を入力し、検索ボタンを押す | 結果画面に該当商品が表示される |
| 2 | データの受け渡し | 同上 | 結果の1行目を選ぶ | 詳細画面に同じ商品コードと在庫数が表示される |
| 3 | 外部との連携 | 販売管理システムで出荷を登録 | 5分後に在庫を検索する | 出荷分が引かれた在庫数が表示される |
期待する結果は具体的に書く
「正しく表示される」ではなく、「商品コードと在庫数が詳細画面と一致する」のように、合否を判断できる書き方にします。期待する結果があいまいだと、担当者によって判断が分かれてしまいます。
単体テストと結合テストの違いを経歴で伝えるコツ
テストの段階、件数、観点を考えたかどうか、自動化の経験を具体的に書くと伝わります。
「テストを担当」とだけ書くと、単体テストなのか結合テストなのか、手順どおりに実施しただけなのか、観点から考えたのかが伝わりません。次の点を書きましょう。
- 段階:単体テスト・結合テスト・総合テストのどれか
- 規模:テストの件数や対象の機能の数
- 役割:仕様書の作成から担当したか、実施だけか
- 工夫:自動化した、観点を整理して不具合を早く見つけたなど
テストの経験のスキルシートでの書き方はテスト設計 スキルシートの書き方で詳しく紹介しています。ただ、ExcelやWordで経歴を書き足していくと、案件ごとに書く項目がばらつき、担当した工程の範囲や役割があいまいになりがちです。スキルログで記録すると、次の点で楽になります。
- 項目がそろう:案件ごとに期間・役割・プロジェクト規模・チーム規模・業種・担当工程・成果を同じ項目で入力するので、書き漏れがなく、案件どうしを比べやすい
- 体裁を整える手間がない:入力した内容はPDF出力で体裁の整ったスキルシートになり、新しい案件を足したらそのまま出し直せる
- 伸びたスキルが見える:スキルごとにS・A・Bなどの自己評価と経験年数を並べて確認でき、次に伸ばすところが分かる
登録した経歴をもとに、自分の経験で狙える求人や案件、年収や単価の目安を、転職・案件相談で一緒に確かめることもできます。
まとめ
単体テストと結合テストの違いは、部品を確かめるか、つなぎ目を確かめるかです。
単体テストは、関数や画面などの部品が詳細設計どおりに動くかを確かめます。結合テストは、部品を組み合わせたときのデータの受け渡しや画面の遷移、外部との連携を確かめます。
その後、総合テストでシステム全体を、受入テストで業務で使えるかを確かめます。段階ごとに範囲を広げることで、不具合の原因を見つけやすくなります。
よくある質問
単体テストと結合テストについてよく寄せられる質問をまとめました。
単体テストと結合テストは英語で何と言いますか?
単体テストはユニットテスト(Unit Test)、結合テストはインテグレーションテスト(Integration Test)です。総合テストはシステムテスト(System Test)と呼ばれます。
単体テストは誰が行いますか?
その部品を作ったプログラマーが行うのが一般的です。作った本人が設計の意図を最もよく知っているため、効率よく確かめられます。
結合テストで見つかった不具合はどうしますか?
原因の部品を特定して直し、その部品の単体テストと、関係する結合テストをやり直します。直したことで別の部分が壊れていないかも確かめます。
テストの件数はどれくらいが目安ですか?
決まった基準はありません。機能の複雑さや求められる品質で変わるため、件数よりも、必要な観点を漏れなく確かめているかを重視しましょう。
結合テストも自動化できますか?
できます。画面の操作やシステム間の連携を自動で確かめる仕組みもあります。ただし準備に手間がかかるため、くり返し実施する部分から自動化するのが現実的です。
ここまでの内容を踏まえて、まずはスキルログに無料で登録し、これまでに担当したテストの案件を、段階と範囲まで入力してみましょう。


