結合テストテスト環境と構築
この資料はテスト技法セミナーのスライドに関する補助資料です.目次は右側に表示されます.
1 テストレベルの定義
ISO/IEC/IEEE 29119 と ISTQB は,いずれもソフトウェアテストの一般的なテストレベルを整理しているが,用語や構造はほぼ共通している.以下では両者で扱われる主要なテストレベルとその目的をわかりやすくまとめる.ISO と ISTQB の対比ではなく,共通的な概念整理として読めるように構成している.
1.コンポーネントテスト(Unit / Component Test)
対象:個々のモジュール,関数,クラス,部品レベルのコード 目的:
- 最小単位の仕様やロジックが正しく動作するか確認
- 早期にバグを発見し,後続工程での修正コストを低減 特徴:
- 自動化されることが多い
- 依存関係はスタブやモックを使用
2.統合テスト(Integration Test)
対象:コンポーネント間の結合部,サブシステム間インタフェース 目的:
- モジュール同士の連携が正しく動作するかを検証
- インタフェース仕様やデータの受け渡しの整合性を確認 特徴:
- 自動化と手動が混在
- 結合順序(トップダウン,ボトムアップなど)を戦略的に選択
3.システムテスト(System Test)
対象:完全に統合されたシステム全体 目的:
- 要求仕様通りにシステム全体が機能するか確認
- 機能/非機能要件(性能,セキュリティ,信頼性など)の評価 特徴:
- ユーザー視点を含むブラックボックステストが中心
- システム境界を超えた振る舞いを検証
4.受入テスト(Acceptance Test)
対象:システム完成品をユーザー,顧客,運用者が検証 目的:
- システムがビジネス要件や契約条件を満たしているか確認
- 現場環境での利用可能性を評価 特徴:
- UAT(ユーザー受入テスト)
- OAT(運用受入テスト)
- α/βテスト(特に ISTQB の説明で登場)
5.その他の派生的テストレベル
29119 と ISTQB の両方で,以下のような追加レベルが文脈によって扱われる.
● コンポーネント統合テスト
コンポーネントとコンポーネントの結合点のみに焦点を当てる. (29119 では Integration の一部として整理.ISTQB は追加レベルとして扱う場合がある.)
● システム統合テスト
複数の独立したサブシステムを統合したときの振る舞いを確認する. たとえば決済サービス+外部API+基幹系連携など大規模システムで重要.
● 回帰テスト
テストレベルではなくテストタイプだが,29119/ISTQB とも各レベルに跨って実施される.
まとめ
- 両者ともテストレベルを「コンポーネント → 統合 → システム → 受入」へと階層化し,品質保証の進行を段階的に定義する構造を採用している.
- システム統合やコンポーネント統合など,複雑な開発形態では中間レベルを追加する柔軟性を持つ.
- テストタイプ(性能,セキュリティ,回帰など)は各レベルに跨って適用される.
2 テストタイプ
ソフトウェアテストにおける「テストタイプ」は,テストの目的や対象となる品質特性に基づいて分類される.テストレベル(単体,結合,システム,受入)とは異なり,「何を検証するためのテストか」という観点で整理される.ISO/IEC/IEEE 29119 でも ISTQB でも類似した分類を用いており,品質特性(ISO/IEC 25010)とも対応している.以下に代表的なテストタイプを示す.
機能テスト(Functional Testing)
ソフトウェアが要求仕様に沿った機能を正しく実行するかを確認するテストである.通常は入力と出力に着目し,ブラックボックステスト技法が多く使われる.機能要件を基盤とするため,業務シナリオやユースケースと関連付けて実行される.
非機能テスト(Non-functional Testing)
ソフトウェアの品質特性を評価するテストであり,多岐にわたる.代表例は次のとおりである.
- 性能テスト:応答時間,スループット,リソース使用量を測定し,性能要件を満たしているか評価する.
- 負荷テスト:通常範囲の高負荷に耐えられるかを確認する.
- ストレステスト:異常に高い負荷や極端な状況での動作を確認する.
- 耐久テスト(ロングラン):長時間稼働により性能劣化やメモリリークの有無を確認する.
- 可用性テスト:障害発生時の復旧能力やフェイルオーバーの動作を確認する.
- セキュリティテスト:認証,認可,脆弱性,データ保護などを評価する.
- 互換性テスト:複数ブラウザ,OS,ハードウェアでの動作を確認する.
- ユーザビリティテスト:ユーザ視点で操作性や分かりやすさを評価する.
- 国際化/ローカライズテスト:多言語,多文化環境での動作を確認する.
構成テスト(Configuration Testing)
デバイス,OS,ミドルウェア,ブラウザ,ネットワークなど,異なる環境における動作を確認するテストである.とくにモバイルアプリや組込み製品では重要性が高い.
回帰テスト(Regression Testing)
変更や修正が既存機能に悪影響を与えていないことを確認するテストである.継続的インテグレーション(CI)と組み合わせて自動化される場合が多い.
変更関連テスト(Confirmation Testing)
バグ修正や機能改善の結果が正しく反映されているかを確認するテストである.より広い範囲を確認する回帰テストとは区別される.
インタフェーステスト(Interface Testing)
モジュール間や外部システムとの接続やデータ交換の正当性を確認するテストである.API,通信プロトコル,ファイル連携が対象になる.
インストール/デプロイメントテスト(Installation Testing)
ソフトウェアのインストールやアップデート,アンインストールを正しく実施できるか,環境に適切にデプロイされるかを確認するテストである.