テストレベル
JSTQB FLのシラバスによると、テストレベルとは、系統的にまとめ、マネジメントしていくテスト活動のグループのことです。ソフトウェア開発において、個々のコンポーネント(部品)単位から完成したシステム全体に至るまでの、開発段階に応じたテストプロセスのまとまりを指します。
主に以下の5つのテストレベルが定義されています。
1. コンポーネントテスト(ユニットテスト)
プログラムの最小単位であるコンポーネントを単独でテストすることに焦点を当てます。通常は、開発担当者が自身の開発環境で行います。
| 属性 | 内容 |
|---|---|
| テスト対象 | コンポーネント、モジュール、クラス、関数など |
| テストベース | 詳細設計、コード、データモデルなど |
| 典型的な欠陥 | 誤った計算、不正なロジック、型エラーなど |
| 担当者 | 開発担当者 |
2. コンポーネント統合テスト(ユニット統合テスト)
開発されたコンポーネント同士のインターフェースや、相互処理が正しく行われるかに焦点を当ててテストします。
| 属性 | 内容 |
|---|---|
| テスト対象 | コンポーネント間のインターフェース、API |
| テストベース | ソフトウェア設計書、シーケンス図など |
| 典型的な欠陥 | データの受け渡しミス、インターフェースの不一致など |
| 担当者 | 主に開発担当者 |
3. システムテスト
システムやプロダクト全体の振る舞いや能力全般に焦点を当てます。エンドツーエンド(一連の業務の流れ)に対する機能テストや、非機能テスト(性能や使用性など)が含まれ、独立したテストチームによって実施されることがあります。
| 属性 | 内容 |
|---|---|
| テスト対象 | システム全体、エンドツーエンドのシナリオ |
| テストベース | システム要件仕様、ユースケース、リスク分析など |
| 典型的な欠陥 | 要件不一致、機能の欠落、非機能要件の未達など |
| 担当者 | 独立したテストチーム |
4. システム統合テスト
テスト対象のシステムと、他のシステムや外部サービスとの間のインターフェース(連携)に焦点を当ててテストします。運用環境に近い適切なテスト環境が必要となります。
| 属性 | 内容 |
|---|---|
| テスト対象 | 外部システム・サービスとの連携部分 |
| テストベース | システムアーキテクチャ、外部インターフェース仕様など |
| 典型的な欠陥 | 外部APIとの不整合、データ変換エラーなど |
| 担当者 | テストチーム、または運用チーム |
5. 受け入れテスト
システムがユーザーのビジネスニーズを満たしているか(妥当性確認)や、本番環境へデプロイ(リリース)する準備ができているかの実証に焦点を当てます。理想的には想定されるユーザーによって実施されます。
| 属性 | 内容 |
|---|---|
| テスト対象 | ビジネスプロセス全体、本番相当の環境 |
| テストベース | ビジネス要件、ユーザーニーズ、規制・法令など |
| 典型的な欠陥 | ビジネスルールの誤り、本番との環境差異など |
| 担当者 | ユーザー、顧客、ビジネスオーナー |
受け入れテストには、以下のような形式があります。
- ユーザー受け入れテスト(UAT):業務ユーザーが実施する妥当性確認
- 運用受け入れテスト(OAT):システム管理者が本番運用可能かを確認
- 契約・規制受け入れテスト:契約要件や法規制への適合を確認
- アルファ・ベータテスト:開発組織内外でリリース前の品質を確認
テストレベルの代表的な属性
各テストレベルは、以下の5つの代表的な属性によって明確に区別されます。テスト活動の重複を避けるために、それぞれのレベルで何を・なぜ・どのようにテストするかを明示することが重要です。
| 属性 | 説明 |
|---|---|
| テスト対象 | そのレベルでテストする具体的な成果物・コンポーネント |
| テスト目的 | そのレベルで検証・妥当性確認すべき品質特性 |
| テストベース | テスト設計の根拠となるドキュメント・成果物 |
| 欠陥、および故障 | そのレベルで典型的に見つかる欠陥の種類 |
| アプローチと責務 | 担当者・実施方法・必要な環境 |
V字モデルとの対応
テストレベルは、V字モデル(開発工程とテスト工程を対応させたモデル)における各フェーズと対応しています。
要件定義 ←→ 受け入れテスト
システム設計 ←→ システムテスト / システム統合テスト
詳細設計 ←→ コンポーネント統合テスト
コーディング ←→ コンポーネントテスト
V字モデルでは、開発の早い段階の成果物(要件・設計書)がテストのベースとなります。これにより、「早期テストで時間とコストを節約」というテストの原則を実践できます。