qe-regression-testing について
ソフトウェアチーム向けの回帰テストスキルです。変更内容とリスクに基づくテスト選定、優先順での実行、実行の最適化、テストスイートの健全性監視を扱います。
主な機能
- 01変更とリスクに基づくテスト選定
- 02優先順でのテスト実行
- 03並列実行とシャーディング
- 04不安定さと実行時間の追跡
- 05段階的な回帰テスト計画
活用シーン
- 01コード変更後の回帰テスト選定
- 02リリース前の全体回帰テスト計画
- 03依存関係や環境の更新確認
- 04本番バグを回帰テストに追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill qe-regression-testingインストール後、Claude Code で/qe-regression-testingを入力して読み込まれたか確認します。
詳細
リグレッションテスト
<default_to_action> 変更によって既存の機能が損なわれていないことを確認する場合:
- 変更内容を分析する(git diff、影響分析)
- 変更内容とリスクに基づいてテストを選択する(すべてを実行しない)
- 優先順位順に実行する(スモーク → 選択的 → 全体)
- 実行を最適化する(並列実行、シャーディング)
- テストスイートの健全性を監視する(不安定さ、実行時間)
リグレッションテストのクイック戦略:
- コミットごと:スモークテスト+変更したコードのテスト(5~10分)
- 夜間:拡張リグレッションテスト(30~60分)
- リリース前:全体のリグレッションテスト(2~4時間)
成功の重要要因:
- 賢いテスト選択により、10%の時間でリグレッションの90%を検出できます
- 不安定なテストは、節約できる時間よりも多くの時間を浪費します
- 本番環境で発生したすべてのバグをリグレッションテストにします </default_to_action>
クイックリファレンスカード
使用するタイミング
- コードを変更した後
- リリース前
- 依存関係を更新した後
- 環境を変更した後
リグレッションテストの種類
| 種類 | タイミング | 範囲 |
|---|---|---|
| 修正型 | コードの変更なし | テストスイート全体 |
| 段階的 | 新機能 | 既存+新規 |
| 選択的 | 特定の変更 | 変更箇所+依存箇所 |
| 全体 | 大規模なリファクタリング | すべて |
テスト選択の戦略
| 戦略 | 方法 | 削減率 |
|---|---|---|
| 変更ベース | Git diff の分析 | 70~90% |
| リスクベース | 影響度に基づく優先順位付け | 50~70% |
| 履歴ベース | 頻繁に失敗するテスト | 40~60% |
| 時間予算ベース | 固定の時間枠 | 変動 |
変更ベースのテスト選択
// Analyze changed files and select impacted tests
function selectTests(changedFiles: string[]): string[] {
const testsToRun = new Set<string>();
for (const file of changedFiles) {
// Direct tests
testsToRun.add(`${file.replace('.ts', '.test.ts')}`);
// Dependent tests (via coverage mapping)
const dependentTests = testCoverage[file] || [];
dependentTests.forEach(t => testsToRun.add(t));
}
return Array.from(testsToRun);
}
// Example: payment.ts changed
// Runs: payment.test.ts, checkout.integration.test.ts, e2e/purchase.test.ts
リグレッションテストのピラミッド
/\
/ \ Full Regression (weekly)
/ \ - All tests (2-4 hours)
/------\
/ \ Extended Regression (nightly)
/ \ - Unit + integration + critical E2E (30-60 min)
/------------\
/ \ Quick Regression (per commit)
/________________\ - Changed code + smoke tests (5-10 min)
CI/CD との統合
# .github/workflows/regression.yml
jobs:
quick-regression:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Analyze changes
id: changes
uses: dorny/paths-filter@v2
with:
filters: |
payment:
- 'src/payment/**'
auth:
- 'src/auth/**'
- name: Run affected tests
run: npm run test:affected
- name: Smoke tests (always)
run: npm run test:smoke
nightly-regression:
if: github.event_name == 'schedule'
timeout-minutes: 120
steps:
- run: npm test -- --coverage
最適化手法
// 1. Parallel execution
module.exports = {
maxWorkers: '50%', // Use half CPU cores
testTimeout: 30000
};
// 2. Sharding across CI workers
// npm test -- --shard=1/4
// 3. Incremental testing (only changed since last run)
// Track last run state, skip passing unchanged tests
// 4. Fast-fail on smoke
// Run critical tests first, abort if they fail
エージェント主導のリグレッションテスト
// Smart test selection
await Task("Regression Analysis", {
pr: 1234,
strategy: 'change-based-with-risk',
timeBudget: '15min'
}, "qe-regression-risk-analyzer");
// Returns:
// {
// mustRun: ['payment.test.ts', 'checkout.integration.test.ts'],
// shouldRun: ['order.test.ts'],
// canSkip: ['profile.test.ts', 'search.test.ts'],
// estimatedTime: '12 min',
// riskCoverage: 0.94
// }
// Generate regression test from production bug
await Task("Bug Regression Test", {
bug: { id: 'BUG-567', description: 'Checkout fails > 100 items' },
preventRecurrence: true
}, "qe-test-generator");
エージェント連携のヒント
メモリの名前空間
aqe/regression-testing/
├── test-selection/* - Impact analysis results
├── suite-health/* - Flakiness, timing trends
├── coverage-maps/* - Test-to-code mapping
└── bug-regressions/* - Tests from production bugs
フリートの連携
const regressionFleet = await FleetManager.coordinate({
strategy: 'comprehensive-regression',
agents: [
'qe-regression-risk-analyzer', // Analyze changes, select tests
'qe-test-executor', // Execute selected tests
'qe-coverage-analyzer', // Analyze coverage gaps
'qe-quality-gate' // Go/no-go decision
],
topology: 'sequential'
});
関連スキル
- risk-based-testing - リスクベースの優先順位付け
- test-automation-strategy - 自動化ピラミッド
- continuous-testing-shift-left - CI/CD との統合
覚えておくこと
リグレッションテストは、変更に対する保険です。 コードの変更にはすべてリスクがあります。賢いリグレッションテストは、変更内容に応じて重要な箇所をテストし、そのリスクを軽減します。
優れたリグレッションテストは、網羅的ではなく戦略的です。 毎回すべてをテストすることはできません。変更内容、リスク、時間予算に基づいて選択してください。
エージェントを活用する場合: qe-regression-risk-analyzer は、実行時間の10%で欠陥の90%を検出できる、インテリジェントなテスト選択を提供します。エージェントは本番環境のバグからリグレッションテストを自動生成します。
コメント
Markdown 対応