mcpField
Q
qe-shift-right-testing

qe-shift-right-testing

github.com/proffesor-for-testingテスト・品質51982 回インストール今日更新
リポジトリ

qe-shift-right-testing について

qe-shift-right-testingは、本番環境でソフトウェアを検証し、段階的デリバリーを行うチーム向けのテストスキルです。リリース、監視、障害注入、本番データのフィードバック手法を示します。

主な機能

  1. 01フィーチャーフラグによる段階的ロールアウト
  2. 02カナリアリリースとメトリクス比較
  3. 03シンセティック監視とRUM
  4. 04カオスエンジニアリングによる障害注入
  5. 05本番の知見から回帰テストを作成

活用シーン

  1. 01機能の段階的なリリースの検証
  2. 02デプロイ中のサービス動作の監視
  3. 03制御された障害による耐障害性のテスト
  4. 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. 段階的なロールアウト(1% → 10% → 50% → 100%)のためにフィーチャーフラグを実装します
  2. カナリアリリースでデプロイします(全体にロールアウトする前にメトリクスを比較します)
  3. 合成テスト(プロアクティブ)と RUM(リアクティブ)で監視します
  4. カオスエンジニアリングで障害を注入します(レジリエンスを構築します)
  5. 本番データを分析し、リリース前テストを改善します

シフトライトの主な手法:

  • フィーチャーフラグ → 対象者と表示内容を制御し、即時にロールバックします
  • カナリアデプロイ → トラフィックの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'
});

関連スキル


忘れずに

本番環境は究極のテスト環境です。 フィーチャーフラグを使えば即時にロールバックできます。カナリアは、全体にロールアウトする前に問題を検出します。合成モニタリングは、ユーザーより先に問題を検出します。カオスエンジニアリングはレジリエンスを構築します。RUM は実際のユーザー体験を示します。

エージェントを活用する場合: エージェントは本番環境を監視し、インシデントをテストとして再現し、カオス実験を実行して、本番環境から得た知見をリリース前テストに変換します。継続的に本番環境の品質を維持するために、エージェントを活用してください。

コメント