テスト手法
テスト手法とは
ソフトウェアテストは、開発したシステムが仕様通りに動作するか、品質基準を満たしているかを検証する工程である。SIer のシステム開発では、V字モデルに基づき、単体テスト(UT)、結合テスト(IT)、総合テスト(ST)、受入テスト(UAT)の4段階でテストを実施するのが一般的である。
なぜ SIer で重要か
SIer が開発するシステムは、顧客の業務を支える基幹システムであることが多く、バグが業務に直接的な影響を与える。品質を保証するためにテスト工程には全開発工数の 30〜50% を費やすことも珍しくない。テストの計画・実施・管理は SIer の SE にとって最も重要なスキルの一つであり、テストが不十分なままリリースすることはプロジェクトの信頼を大きく損なう。
基本概念
4段階のテスト
単体テスト(UT: Unit Test)
個々の関数・メソッド・モジュール単位で行うテスト。プログラムの最小単位が正しく動作するかを検証する。
| 項目 | 内容 |
|---|---|
| テスト対象 | 関数、メソッド、クラス |
| 検証内容 | 入力に対する出力が期待通りか、境界値での動作、異常系の処理 |
| テスト手法 | ホワイトボックステスト(内部構造を考慮してテストケースを作成) |
| 実施者 | 開発者(PG) |
| 対応する設計 | 詳細設計 |
代表的なテスト観点は以下の通り。
- 正常系: 想定される入力で期待通りの結果が返るか
- 異常系: 不正な入力やエラー時に適切にハンドリングされるか
- 境界値: 範囲の上限・下限付近で正しく動作するか(例: 0件、1件、最大件数)
- NULL / 空文字: 未入力や NULL 値の扱いが正しいか
結合テスト(IT: Integration Test)
複数のモジュールを組み合わせた状態で、モジュール間のインターフェースが正しく機能するかを検証する。
| 項目 | 内容 |
|---|---|
| テスト対象 | モジュール間の連携、サブシステム間の連携 |
| 検証内容 | データの受け渡し、API の呼び出し、画面遷移、DB 操作の一連の流れ |
| テスト手法 | ブラックボックステスト(外部仕様に基づいてテストケースを作成) |
| 実施者 | SE + PG |
| 対応する設計 | 詳細設計(モジュール間 IF) |
結合テストでは、以下のようなシナリオをテストする。
- 画面からデータを入力し、DB に正しく登録されるか
- 一覧画面の検索条件が正しくフィルタリングされるか
- 外部システムへのデータ連携が仕様通りに動作するか
総合テスト(ST: System Test)
システム全体を本番に近い環境で動作させ、基本設計の仕様が満たされているかを検証する。
| 項目 | 内容 |
|---|---|
| テスト対象 | システム全体 |
| 検証内容 | 業務シナリオの通し実行、性能、セキュリティ、障害復旧 |
| テスト手法 | シナリオテスト、性能テスト、セキュリティテスト、障害テスト |
| 実施者 | SE + テストチーム |
| 対応する設計 | 基本設計 |
総合テストで実施される主なテスト種別は以下の通り。
- 機能テスト: 業務シナリオに沿った一連の操作が正しく動作するか
- 性能テスト: レスポンスタイム、スループット、同時接続数の要件を満たすか
- セキュリティテスト: 脆弱性がないか、認証・認可が正しく機能するか
- 障害テスト: サーバーダウンやネットワーク障害時に正しくフェイルオーバーするか
- 回帰テスト: バグ修正によって他の機能に影響が出ていないか
受入テスト(UAT: User Acceptance Test)
顧客自身が実際の業務シナリオに沿ってシステムを操作し、要件を満たしているかを確認する。
| 項目 | 内容 |
|---|---|
| テスト対象 | 業務プロセス全体 |
| 検証内容 | 業務要件の充足、操作性、実運用での使い勝手 |
| テスト手法 | 業務シナリオテスト |
| 実施者 | 顧客の業務担当者 |
| 対応する設計 | 要件定義 |
受入テストの合格が、システムの検収(正式な受け取り)の判断基準となる。
SIer での使われ方
テストの特徴
SIer のテストには、Web 系企業やスタートアップのテストとは異なる特徴がある。
エビデンス取得
テストを実施した証拠(エビデンス)を残すことが求められる。具体的には、テスト実行時の画面キャプチャ、ログ出力、DB のデータ内容などをスクリーンショットやファイルとして保存する。顧客への品質報告や、監査対応のために必要となる。
テスト仕様書の承認フロー
テスト仕様書はテスト実施前に顧客またはプロジェクトリーダーの承認を得る。テストケースが十分な網羅性を持っているか、テスト観点に漏れがないかを事前にレビューすることで、テスト工程の品質を担保する。
第三者検証
開発者自身ではなく、独立したテストチームや第三者機関がテストを実施することがある。特に総合テストや受入テストでは、開発者のバイアスを排除するために第三者検証が採用されるケースが多い。
テスト観点とテストケースの考え方
テスト観点とは「何を確認するか」という視点であり、テストケースは「具体的にどう操作して何を確認するか」という手順と期待結果のセットである。
テスト観点の例を以下に示す。
| 観点 | 具体例 |
|---|---|
| 正常系 | 正しい入力で期待通りの結果が得られるか |
| 異常系 | 不正入力時にエラーメッセージが表示されるか |
| 境界値 | 入力の上限値・下限値で正しく動作するか |
| 権限 | ログインユーザーの権限に応じて操作が制限されるか |
| 排他制御 | 複数ユーザーが同時に操作した場合にデータ不整合が起きないか |
| 性能 | 大量データがある場合にレスポンスが劣化しないか |
テスト観点を漏れなく洗い出すことがテストの品質を決める。設計書をインプットとして、機能ごとにテスト観点を整理した上で、テストケースに展開するのが基本的な進め方である。
まとめ
- SIer のテストは UT → IT → ST → UAT の4段階で実施される
- 各テスト工程は V字モデルの対応する設計工程の内容を検証する
- エビデンス取得、承認フロー、第三者検証が SIer のテストの特徴である
- テスト観点を設計書から漏れなく洗い出すことがテスト品質の鍵である
- テスト工程は開発全体の 30〜50% の工数を占めるほど重要な工程である