アジャイル開発は短いイテレーションの中で、開発とテストが高速に進みます。しかし、スプリントが短いからといって、テストレベルを省略するわけではありません。
本記事では、ISTQB Agile Tester Extension(2.1.3 Test Levels in Agile)の内容をベースに、アジャイルでどのテストレベルがどのように実施されるのかをわかりやすく解説します。
■ アジャイルにおけるテストレベルの考え方
● 従来型(ウォーターフォール)との違い
従来型モデルでは、
-
前の工程が完了しないと次の工程を開始できない
-
“前工程のExit条件 = 次工程のEntry条件”
という明確なフェーズ区切りがあります。
しかしアジャイルはこれと異なり、
● アジャイルは「サイクルオーバーラップ」
-
前工程がすべて完了する前に、次の作業を開始できる
-
例:一部のユニットテストが完了した時点で、そのモジュールから統合テストを開始できる
-
開発中に顧客から仕様変更が来ても、テスト中に開発を進めて反映できる
つまりアジャイルでは、工程が自然と重なり合い、柔軟に進行するところが特徴です。
■ アジャイルにおける主なテストレベル
アジャイル開発でも、テストレベルはしっかり存在します。
以下のように、従来型と同じテストレベルを実施します。
● 1. ユニットテスト(Unit Testing)
-
実施者:開発者(デベロッパー)
-
目的:コード単位で正しく動作するか確認
-
関連:Continuous Integration(CI)
アジャイルでは特にユニットテストの自動化が重要。
例:
-
関数 calculateTotal() が正しく合計値を返すか
-
IF文の条件分岐が正しく処理されるか
● 2. フィーチャー受け入れテスト(Feature Acceptance Testing)
開発者・テスター・PO が協力しながら進めます。
これはさらに以下の 2種類に分かれます。
① フィーチャー検証テスト(Verification)
-
実施者:主に開発者
-
目的:実装がユーザーストーリーのアクセプタンス基準を満たしているか確認
② フィーチャー妥当性確認テスト(Validation)
-
実施者:テスター+開発者+PO
-
目的:完成定義(DoD)を満たすか全員で確認
-
テスターが主導しながら品質を担保する
● 3. 統合テスト(Integration Testing)
-
各ユニットを組み合わせて動作を確認
-
API・モジュール間のデータの流れを確認
例:
ユーザーログイン機能
-
UI → 認証API → DB が連携して動くか
● 4. システムテスト(System Testing)
-
スプリントで開発した機能がシステムとして正しく動くか
-
機能面だけでなく、UI、ワークフローも対象
● 5. 非機能テスト(Non-Functional Testing)
アジャイルでも下記のような非機能テストを実施します。
-
パフォーマンステスト
-
セキュリティテスト
-
ユーザビリティテスト
● 6. 回帰テスト(Regression Testing)
アジャイルでは毎イテレーションで頻繁に変更が入るため必須。
-
70〜80%を自動化するのが一般的
-
新しい開発や修正が引き起こす副作用を検出
● 7. 受け入れテスト(Acceptance Testing)
さらに次のように分類できます。
-
アルファテスト(社内)
-
ベータテスト(ユーザー・顧客)
実施タイミングはプロジェクトごとに異なり、
-
各スプリントごと
-
数スプリントまとめて
-
リリース前
など柔軟に設定します。
■ 全体としてのポイント
アジャイル開発のテストレベルは以下の特徴を持ちます。
-
従来型と同じテストレベルをすべて実施する
-
多くを自動化(特にユニット・回帰テスト)
-
サイクルがオーバーラップし、柔軟な対応が可能
-
PO、開発者、テスターが密に連携する
アジャイルの鍵は「スピードと品質の両立」です。
そのために、テストの自動化と共同作業が非常に重要になります。
■ まとめ
アジャイル開発でもテストレベルは省略されることなく、むしろ従来よりも密に行われます。
-
ユニット
-
統合
-
システム
-
非機能
-
回帰
-
受け入れ
これらを適切に組み合わせ、必要に応じて自動化しながら、短いスプリントの中で確実に品質を高めていきます。


コメント