V字モデル
V字モデルとは
V字モデルは、ウォーターフォールモデルの各設計工程と、それに対応するテスト工程を V 字型に配置したソフトウェア開発モデルである。左側の下降線が設計工程、右側の上昇線がテスト工程を表し、同じ高さにある工程が互いに対応関係にあることを示す。
なぜ SIer で重要か
SIer のプロジェクトでは「どの設計内容を、どのテスト工程で検証するか」を明確にすることが品質管理の基本となる。V字モデルはこの対応関係を可視化するフレームワークであり、テスト計画の策定やテスト仕様書の作成において不可欠な考え方である。顧客への品質説明やレビュー時にも、V字モデルを使って「この工程で何を確認するか」を説明する場面が多い。
基本概念
V字の構造
要件定義 受入テスト(UAT)
\ /
基本設計 総合テスト(ST)
\ /
詳細設計 結合テスト(IT)
\ /
─── 実装 ───
(単体テスト / UT)
左側の各設計工程で定義した内容を、右側の対応するテスト工程で検証する。この対応関係がV字モデルの核心である。
設計工程とテスト工程の対応
| 設計工程 | 対応するテスト工程 | 検証する内容 |
|---|---|---|
| 要件定義 | 受入テスト(UAT) | 顧客の要件を満たしているか |
| 基本設計 | 総合テスト(ST) | システム全体が設計通りに動作するか |
| 詳細設計 | 結合テスト(IT) | モジュール間の連携が正しいか |
| 実装 | 単体テスト(UT) | 個々の関数・メソッドが正しく動作するか |
SIer での使われ方
各テスト工程の詳細
単体テスト(UT: Unit Test)
詳細設計書に記載された処理ロジックが正しく実装されているかを検証する。関数やメソッド単位でテストを実施し、入力値に対して期待する出力が得られるかを確認する。ホワイトボックステスト(内部構造を意識したテスト)が中心となる。
結合テスト(IT: Integration Test)
詳細設計で定義したモジュール間のインターフェースが正しく機能するかを検証する。画面からの入力がデータベースに正しく反映されるか、外部システムとのデータ連携が仕様通りかなど、モジュールを組み合わせた状態でのテストを行う。
総合テスト(ST: System Test)
基本設計で定義したシステム全体の仕様が満たされているかを検証する。機能テストに加え、性能テスト(レスポンスタイム、スループット)、セキュリティテスト、障害テスト(フェイルオーバー、リカバリ)なども実施する。本番に近い環境で行うことが望ましい。
受入テスト(UAT: User Acceptance Test)
要件定義で合意した内容が実現されているかを、顧客自身が検証する。業務シナリオに沿った一連の操作を行い、実際の業務で使えるかどうかを確認する。このテストの合格が、システムの検収(納品の承認)の判断材料となる。
テスト計画書・テスト仕様書との関係
SIer のプロジェクトでは、各テスト工程に対して以下のドキュメントを作成するのが一般的である。
| ドキュメント | 内容 | 作成タイミング |
|---|---|---|
| テスト計画書 | テストの目的、範囲、スケジュール、体制、合格基準を定義 | 各テスト工程の開始前 |
| テスト仕様書 | 具体的なテストケース(入力・操作・期待結果)を定義 | テスト計画書の承認後 |
| テスト結果報告書 | テストの実施結果、不具合件数、合否判定を記載 | テスト完了時 |
V字モデルを基にテスト計画を立てることで、「何のためにこのテストを行うのか」「どの設計工程の内容を検証するのか」が明確になり、テストの漏れや重複を防ぐことができる。
V字モデルの活用ポイント
- テスト観点の導出: 設計書の記載内容からテスト観点を洗い出す。例えば、基本設計書に「同時接続ユーザー数 100 人」と記載されていれば、総合テストで性能テストの観点が導出される。
- トレーサビリティの確保: 要件 → 設計 → テストケースの紐付け(トレーサビリティマトリクス)を管理することで、すべての要件がテストでカバーされていることを保証する。
- テスト工程の品質判定: 各テスト工程で「バグ密度」「テスト消化率」「残存バグ数」などのメトリクスを測定し、次工程に進んでよいかを判断する。
まとめ
- V字モデルは設計工程とテスト工程の対応関係を V 字型に表現したモデルである
- 要件定義 ↔ 受入テスト、基本設計 ↔ 総合テスト、詳細設計 ↔ 結合テスト、実装 ↔ 単体テストが対応する
- 各テスト工程では、対応する設計工程で定義した内容が正しく実現されているかを検証する
- SIer ではテスト計画書・テスト仕様書の策定にV字モデルの考え方が活用される
- トレーサビリティの確保により、テスト漏れの防止と品質の説明責任を果たすことができる