E2E Testing
トリガー
- •新規機能のE2Eテスト作成
- •ユーザージャーニーの検証
- •リリース前の最終確認
基本原則
E2Eは最重要。最小限で最大カバレッジ。
| 項目 | 基準 |
|---|---|
| 件数 | 2-5件/エンドポイント |
| 対象 | クリティカルパスのみ |
| 実行時間 | 1件30秒以内目標 |
必須テストシナリオ
Money関連(最優先)
- •決済フロー完走
- •金額計算正確性
- •決済失敗リカバリ
- •返金処理
Security関連(最優先)
- •認証フロー
- •認可チェック
- •セッション管理
- •不正アクセス拒否
コアユーザージャーニー
- •登録→ログイン→主要機能→ログアウト
- •CRUD操作の完走
- •エラー発生→リカバリ
テスト設計チェックリスト
作成前
- • Usefulness Score ≥15 を満たすか?
- • 既存テストと重複しないか?
- • クリティカルパスか?
- • 実装詳細に依存していないか?
作成中
- • セレクタは安定か? (data-testid推奨)
- • 待機処理は適切か? (明示的wait)
- • テストデータは独立しているか?
- • クリーンアップ処理があるか?
作成後
- • 3回連続成功するか?
- • 他テストと独立実行できるか?
- • 失敗時のエラーメッセージは明確か?
構造パターン
typescript
describe('E2E: [ユーザージャーニー名]', () => {
beforeAll(async () => {
// テストデータ準備
});
afterAll(async () => {
// クリーンアップ
});
it('should complete [critical path]', async () => {
// Arrange: 初期状態セットアップ
// Act: ユーザー操作シミュレート
// Assert: 最終状態検証
});
});
Flaky Test対策
| 原因 | 対策 |
|---|---|
| タイミング依存 | 明示的wait使用 |
| データ競合 | テストごとにデータ分離 |
| 外部依存 | モック/スタブ化 |
| 環境差異 | Docker化 |
Flaky発生時: 即座に修正 or 削除。放置禁止。
禁止事項
- •❌ sleep/固定wait使用
- •❌ DOM構造依存セレクタ
- •❌ テスト間のデータ共有
- •❌ 実装詳細の検証
- •❌ 5件超/エンドポイント
- •❌ Usefulness Score < 15 のテスト
ツール選定
| 用途 | 推奨 |
|---|---|
| Web UI | Playwright |
| API | curl + jq / supertest |
| Mobile | Detox / Appium |
品質ゲート
| 指標 | 閾値 |
|---|---|
| 成功率 | 100% (99%でもNG) |
| 実行時間 | 5分以内/スイート |
| Flaky率 | 0% |