「単体テストと結合テストの違いって何?」「システムテストと運用テストはどう使い分けるの?」とテスト工程の名前が似ていて混乱しがちです。
本記事ではテストプロセス全体の流れと、4つのテストフェーズの違いを一気に整理します。
対象試験と出題頻度
テストプロセスは、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題される最重要テーマです。
特に「Vモデル」と組み合わせて、各テスト工程が開発のどの工程と対応するかを問う問題が定番化しています。
各テストの目的・実施者・対象範囲を区別できるかが合否を分けるポイントです。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★★
ランクS(超重要)絶対に覚える必要あり
用語の定義
テストプロセス(Test Process)とは、一言で言うと
「ソフトウェアの品質を確認するために、段階的に範囲を広げながら検証していく一連の工程」
のことです。
イメージとしては、「家を建てるときの検査」です。
家を建てるときは、まず木材1本1本の強度を確認し(単体)、次に柱と梁を組んだ骨組みをチェックし(結合)、家全体ができたら雨漏りや耐震を試し(システム)、最後に住人が実際に住んでみて使い勝手を確かめます(運用)。
テストプロセスもまったく同じ順序で、小さな部品から大きな全体へと検証範囲を広げていきます。
📊 テストプロセスの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Test Process / Software Testing |
| 主な4工程 | 単体テスト → 結合テスト → システムテスト → 運用テスト |
| 対応モデル | Vモデル(開発工程と1対1で対応) |
| 目的 | バグの早期発見と品質保証 |
解説
ソフトウェア開発では、コードを書いた瞬間から「思った通りに動かない」ことが日常的に発生します。バグを発見するのが遅れるほど、修正コストは雪だるま式に増えていきます。
これを防ぐため、開発の進行に合わせて「小さな部品から全体へ」検証範囲を広げる仕組みが整えられました。これがテストプロセスです。
Vモデルで見る4つのテスト工程
テスト工程は、開発の上流工程と1対1で対応します。この対応関係を表したのがVモデルです。
左側が開発工程(上から下へ進行)、右側がテスト工程(下から上へ進行)で、同じ高さにある工程同士が対応します。
🔻 Vモデル:開発工程とテスト工程の対応
▲ 左右の工程ボックスがV字型に内側へ収束する形。同じ高さの工程同士が点線で対応する
4つのテスト工程の違い
各テストの目的・対象・実施者を一覧で整理します。試験ではこの違いを問う問題が頻出です。
| 工程 | 対象範囲 | 確認すること | 実施者 |
|---|---|---|---|
| 単体テスト (Unit Test) |
モジュール・関数1つ | 詳細設計通りに動くか(内部ロジック) | プログラマ |
| 結合テスト (Integration Test) |
複数モジュールの組み合わせ | モジュール間のインタフェースが正しいか | 開発チーム |
| システムテスト (System Test) |
システム全体 | 機能・性能・負荷・セキュリティが要件を満たすか | テスト専門チーム |
| 運用テスト (Operation Test) |
本番環境に近い状態 | 実業務で使えるか(受入れ判定) | 利用部門・発注者 |
結合テストの2つのアプローチ
結合テストには、どこから組み立てていくかでトップダウンとボトムアップの2方式があります。
それぞれ「足りない部品」を仮置きするためのダミーが必要です。
⬇ トップダウン
上位モジュールから順に結合。下位の未完成モジュールの代わりにスタブ(仮の戻り値を返すダミー)を使う。
📌 覚え方:上から下へ → スタブ
⬆ ボトムアップ
下位モジュールから順に結合。上位の未完成モジュールの代わりにドライバ(呼び出しを行うダミー)を使う。
📌 覚え方:下から上へ → ドライバ
単体テストの代表的なコード例
単体テストはツール(JUnit、pytestなど)を使って自動化するのが一般的です。Pythonの例を示します。
# テスト対象の関数
def add(a, b):
return a + b
# 単体テストコード(pytest)
def test_add_positive():
assert add(2, 3) == 5 # 正常系
def test_add_negative():
assert add(-1, -2) == -3 # 境界値・異常系
このように関数1つの入出力を確認するのが単体テストです。
複数の関数が連携するかを確かめるのは結合テストの仕事になります。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 テストプロセスの核心を3行で
・小さな部品から全体へ、検証範囲を段階的に広げる4工程
・Vモデルで開発工程と1対1に対応する(詳細設計⇔単体、要件定義⇔運用)
・各工程で「目的」「実施者」「使うダミー(スタブ/ドライバ)」が異なる
試験ではこう出る!
テストプロセスは、IP・FE・APすべての試験で午前問題に登場します。出題パターンは大きく3つです。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE R元秋 午前 問49 |
トップダウンテストでスタブが必要な理由を選ぶ問題。 | ・「下位モジュールの代替」が正解 ・ドライバとの混同を狙う |
| AP R3秋 午前 問48 |
システムテストで実施する内容を選ぶ問題。 | ・「性能・負荷・セキュリティ」が正解 ・モジュール内部ロジック確認は単体テストの説明 |
| IP R4 問37 |
運用テスト(受入テスト)の説明として正しいものを選ぶ問題。 | ・「発注者が業務で使えるか確認」が正解 ・実施者が利用部門である点が決め手 |
| AP H30春 午前 問46 |
ボトムアップテストの特徴を選ぶ問題。 | ・「ドライバが必要」が正解 ・スタブとの取り違えがひっかけ |
📝 IPA試験での出題パターン
パターン1:「各テストの目的を選べ」
4つの工程の説明文が並び、特定の工程に該当するものを選ぶ形式。決め手は「対象範囲(モジュール/全体)」と「実施者(プログラマ/利用部門)」のセット。
パターン2:「スタブとドライバの区別」
結合テストの定番問題。「上から下へ=スタブ」「下から上へ=ドライバ」のペアで暗記すれば確実に得点できる。逆に書かれた選択肢が必ずひっかけとして用意される。
パターン3:「Vモデルの対応関係」
「基本設計に対応するテストはどれか」のような問題。基本設計⇔システムテスト、詳細設計⇔単体テスト、要件定義⇔運用テストの3ペアを覚えておけば対応可能。深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 結合テストにおいて「ボトムアップテスト」を実施する際に必要となるダミーモジュールはどれでしょうか?
- A. スタブ:上位モジュールが呼び出す下位モジュールの代わりとなり、仮の戻り値を返すダミー。トップダウンテストで利用される。
- B. ドライバ:下位モジュールを呼び出す上位モジュールの代わりとなり、テスト対象を起動して結果を受け取るダミー。
- C. モニタ:システム稼働中のリソース使用状況や応答時間を計測するためのツール。性能テストや運用監視で利用される。
正解と解説を見る
正解:B
解説:
ボトムアップテストは下位モジュールから順に結合していく方式のため、まだ作られていない上位モジュールの代わりとなる「ドライバ」が必要になります。ドライバはテスト対象モジュールを呼び出し、その結果を受け取る役割を担います。
選択肢Aのスタブは、上位から下位へ進めるトップダウンテストで使用される下位モジュールのダミーであり、ボトムアップテストとは方向が逆です。選択肢Cのモニタは性能測定やリソース監視に使うツールで、結合テストで未完成モジュールを補う役割は持ちません。
よくある質問(FAQ)
Q. ホワイトボックステストとブラックボックステストはどの工程で使いますか?
ホワイトボックステスト(内部ロジックを見るテスト)は主に単体テストで使います。命令網羅・分岐網羅などのカバレッジを確認するためです。一方、ブラックボックステスト(入出力だけ見るテスト)は結合テスト以降で多用されます。システムテストや運用テストでは内部実装に立ち入らず、仕様通りの結果が返るかだけを検証する場面がほとんどです。
Q. リグレッションテスト(回帰テスト)はどの工程に含まれますか?
リグレッションテストは特定の工程ではなく、修正後にすべての工程で実施しうる横断的なテストです。バグ修正や機能追加によって既存機能が壊れていないかを確認する目的で行います。CI/CDの普及により、コード変更のたびに単体・結合の自動テストを再実行する運用が一般的になりました。
Q. アジャイル開発でもVモデルのテスト工程は同じですか?
概念は共通ですが、実施タイミングが異なります。ウォーターフォールでは各工程をまとめて行うのに対し、アジャイルでは1〜2週間のスプリントごとに単体〜受入までを反復します。テスト駆動開発(TDD)では単体テストをコードより先に書く文化が根付いており、自動化の重要性がより高まります。
Q. 「受入テスト」と「運用テスト」は同じものですか?
ほぼ同義で使われますが、厳密には立場が異なります。受入テスト(Acceptance Test)は発注者がシステムを受け取る判定として実施するもの、運用テスト(Operation Test)は本番環境で実業務に耐えるかを確認するものです。IPA試験では両者を区別せずに「利用者が業務で使えるかを判定する最終テスト」として扱われることが多く、選択肢の文言で「発注者」「業務」「受入れ」というキーワードがあれば運用テスト(受入テスト)と判断して問題ありません。
Q. 性能テストや負荷テストはどの工程に分類されますか?
主にシステムテストの一部として扱われます。システムテストは機能面だけでなく、非機能要件(性能・負荷・セキュリティ・可用性)を検証する工程でもあるためです。大規模システムでは「性能テスト」「負荷テスト」「ストレステスト」を独立した工程として分けることもありますが、IPA試験ではシステムテストの内訳として理解しておけば十分です。