qe-shift-right-testing について
qe-shift-right-testingは、本番環境でソフトウェアを検証し、段階的デリバリーを行うチーム向けのテストスキルです。リリース、監視、障害注入、本番データのフィードバック手法を示します。
主な機能
- 01フィーチャーフラグによる段階的ロールアウト
- 02カナリアリリースとメトリクス比較
- 03シンセティック監視とRUM
- 04カオスエンジニアリングによる障害注入
- 05本番の知見から回帰テストを作成
活用シーン
- 01機能の段階的なリリースの検証
- 02デプロイ中のサービス動作の監視
- 03制御された障害による耐障害性のテスト
- 04本番インシデントから回帰テストを作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill qe-shift-right-testingインストール後、Claude Code で/qe-shift-right-testingを入力して読み込まれたか確認します。
詳細
シフトライトテスト
<default_to_action> 本番環境でテストする場合、または段階的デリバリーを実装する場合:
- 段階的なロールアウト(1% → 10% → 50% → 100%)のためにフィーチャーフラグを実装します
- カナリアリリースでデプロイします(全体にロールアウトする前にメトリクスを比較します)
- 合成テスト(プロアクティブ)と RUM(リアクティブ)で監視します
- カオスエンジニアリングで障害を注入します(レジリエンスを構築します)
- 本番データを分析し、リリース前テストを改善します
シフトライトの主な手法:
- フィーチャーフラグ → 対象者と表示内容を制御し、即時にロールバックします
- カナリアデプロイ → トラフィックの5%でエラー率を比較します
- 合成モニタリング → 24時間365日ユーザーをシミュレートし、ユーザーより先に問題を検出します
- カオスエンジニアリング → Netflix スタイルの障害注入
- RUM(リアルユーザーモニタリング)→ 実際のユーザー体験データ
成功のための重要な要素:
- 本番環境は究極のテスト環境です
- 確実性を優先して遅く進めるのではなく、安全策を講じて素早くリリースします
- 本番データを使ってシフトレフトテストを改善します </default_to_action>
クイックリファレンスカード
使用する場面
- 機能を段階的にロールアウトする場合
- 本番環境の信頼性を検証する場合
- 大規模なパフォーマンスを監視する場合
- 実際のユーザー行動から学習する場合
シフトライトの手法
| 手法 | 目的 | タイミング |
|---|---|---|
| フィーチャーフラグ | 制御されたロールアウト | すべての機能 |
| カナリア | 新旧を比較 | すべてのデプロイ |
| 合成モニタリング | プロアクティブな検出 | 24時間365日 |
| RUM | 実際のユーザーメトリクス | 常時 |
| カオスエンジニアリング | レジリエンスの検証 | 定期的 |
| A/B テスト | ユーザー行動の検証 | 機能の選択時 |
段階的ロールアウトのパターン
1% → 10% → 25% → 50% → 100%
↓ ↓ ↓ ↓
Check Check Check Monitor
監視する主なメトリクス
| メトリクス | SLO 目標 | アラートのしきい値 |
|---|---|---|
| エラー率 | < 0.1% | > 1% |
| p95 レイテンシ | < 200ms | > 500ms |
| 可用性 | 99.9% | < 99.5% |
| Apdex | > 0.95 | < 0.8 |
フィーチャーフラグ
// Progressive rollout with LaunchDarkly/Unleash pattern
const newCheckout = featureFlags.isEnabled('new-checkout', {
userId: user.id,
percentage: 10, // 10% of users
allowlist: ['beta-testers']
});
if (newCheckout) {
return <NewCheckoutFlow />;
} else {
return <LegacyCheckoutFlow />;
}
// Instant rollback on issues
await featureFlags.disable('new-checkout');
カナリアデプロイ
# Flagger canary config
apiVersion: flagger.app/v1beta1
kind: Canary
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: checkout-service
progressDeadlineSeconds: 60
analysis:
interval: 1m
threshold: 5 # Max failed checks
maxWeight: 50 # Max traffic to canary
stepWeight: 10 # Increment per interval
metrics:
- name: request-success-rate
threshold: 99
- name: request-duration
threshold: 500
合成モニタリング
// Continuous production validation
await Task("Synthetic Tests", {
endpoints: [
{ path: '/health', expected: 200, interval: '30s' },
{ path: '/api/products', expected: 200, interval: '1m' },
{ path: '/checkout', flow: 'full-purchase', interval: '5m' }
],
locations: ['us-east', 'eu-west', 'ap-south'],
alertOn: {
statusCode: '!= 200',
latency: '> 500ms',
contentMismatch: true
}
}, "qe-production-intelligence");
カオスエンジニアリング
// Controlled failure injection
await Task("Chaos Experiment", {
hypothesis: 'System handles database latency gracefully',
steadyState: {
metric: 'error_rate',
expected: '< 0.1%'
},
experiment: {
type: 'network-latency',
target: 'database',
delay: '500ms',
duration: '5m'
},
rollback: {
automatic: true,
trigger: 'error_rate > 5%'
}
}, "qe-chaos-engineer");
本番環境 → リリース前環境のフィードバックループ
// Convert production incidents to regression tests
await Task("Incident Replay", {
incident: {
id: 'INC-2024-001',
type: 'performance-degradation',
conditions: { concurrent_users: 500, cart_items: 10 }
},
generateTests: true,
addToRegression: true
}, "qe-production-intelligence");
// Output: New test added to prevent recurrence
エージェント連携のヒント
メモリ名前空間
aqe/shift-right/
├── canary-results/* - Canary deployment metrics
├── synthetic-tests/* - Monitoring configurations
├── chaos-experiments/* - Experiment results
├── production-insights/* - Issues → test conversions
└── rum-analysis/* - Real user data patterns
フリート連携
const shiftRightFleet = await FleetManager.coordinate({
strategy: 'shift-right-testing',
agents: [
'qe-production-intelligence', // RUM, incident replay
'qe-chaos-engineer', // Resilience testing
'qe-performance-tester', // Synthetic monitoring
'qe-quality-analyzer' // Metrics analysis
],
topology: 'mesh'
});
関連スキル
- shift-left-testing - リリース前テスト
- chaos-engineering-resilience - 障害注入の詳細
- performance-testing - 負荷テスト
- agentic-quality-engineering - エージェントの連携
忘れずに
本番環境は究極のテスト環境です。 フィーチャーフラグを使えば即時にロールバックできます。カナリアは、全体にロールアウトする前に問題を検出します。合成モニタリングは、ユーザーより先に問題を検出します。カオスエンジニアリングはレジリエンスを構築します。RUM は実際のユーザー体験を示します。
エージェントを活用する場合: エージェントは本番環境を監視し、インシデントをテストとして再現し、カオス実験を実行して、本番環境から得た知見をリリース前テストに変換します。継続的に本番環境の品質を維持するために、エージェントを活用してください。
コメント
Markdown 対応