回归测试Skill regression-testing

该技能专注于战略性回归测试,通过测试选择、影响分析和持续回归管理,确保代码更改不会破坏现有功能,优化测试执行效率,适用于CI/CD环境。关键词包括回归测试、测试选择、影响分析、CI/CD、自动化测试、风险管理、软件测试、持续集成。

测试 0 次安装 0 次浏览 更新于 3/9/2026

name: 回归测试 description: “战略性回归测试,包含测试选择、影响分析和持续回归管理。用于验证修复不会破坏现有功能,规划回归套件,或优化测试执行以加快反馈。” category: 专项测试 priority: 高 tokenEstimate: 1000 agents: [qe-regression-risk-analyzer, qe-test-executor, qe-coverage-analyzer] implementation_status: 优化 optimization_version: 1.0 last_optimized: 2025-12-02 dependencies: [] quick_reference_card: 是 tags: [回归测试, 测试选择, 影响分析, ci-cd, 变更基础, 风险基础] trust_tier: 3 validation: schema_path: schemas/output.json validator_path: scripts/validate-config.json eval_path: evals/regression-testing.yaml


回归测试

<default_to_action> 验证更改不会破坏现有功能时:

  1. 分析更改内容(git diff、影响分析)
  2. 基于更改和风险选择测试(非全部)
  3. 按优先级顺序运行(冒烟测试 → 选择性测试 → 完整测试)
  4. 优化执行(并行、分片)
  5. 监控套件健康度(稳定性、执行时间)

快速回归策略:

  • 每次提交:冒烟测试 + 更改代码测试(5-10分钟)
  • 夜间:扩展回归测试(30-60分钟)
  • 预发布:完整回归测试(2-4小时)

关键成功因素:

  • 智能选择在10%时间内捕获90%的回归问题
  • 不稳定的测试浪费的时间比节省的更多
  • 每个生产错误都应成为回归测试 </default_to_action>

快速参考卡片

何时使用

  • 任何代码更改后
  • 发布前
  • 依赖更新后
  • 环境更改后

回归类型

类型 何时 范围
纠正性 无代码更改 完整套件
渐进性 新功能 现有 + 新
选择性 特定更改 更改 + 依赖
完整性 重大重构 全部

测试选择策略

策略 方式 减少量
变更基础 Git差异分析 70-90%
风险基础 按影响优先级 50-70%
历史基础 频繁失败 40-60%
时间预算 固定时间窗口 可变

基于更改的测试选择

// 分析更改文件并选择受影响的测试
function selectTests(changedFiles: string[]): string[] {
  const testsToRun = new Set<string>();

  for (const file of changedFiles) {
    // 直接测试
    testsToRun.add(`${file.replace('.ts', '.test.ts')}`);

    // 依赖测试(通过覆盖率映射)
    const dependentTests = testCoverage[file] || [];
    dependentTests.forEach(t => testsToRun.add(t));
  }

  return Array.from(testsToRun);
}

// 示例:payment.ts 更改
// 运行:payment.test.ts, checkout.integration.test.ts, e2e/purchase.test.ts

回归套件金字塔

         /\
        /  \  完整回归(每周)
       /    \  - 所有测试(2-4小时)
      /------\
     /        \  扩展回归(夜间)
    /          \  - 单元 + 集成 + 关键端到端测试(30-60分钟)
   /------------\
  /              \  快速回归(每次提交)
 /________________\  - 更改代码 + 冒烟测试(5-10分钟)

CI/CD 集成

# .github/workflows/regression.yml
jobs:
  quick-regression:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: 分析更改
        id: changes
        uses: dorny/paths-filter@v2
        with:
          filters: |
            payment:
              - 'src/payment/**'
            auth:
              - 'src/auth/**'

      - name: 运行受影响测试
        run: npm run test:affected

      - name: 冒烟测试(始终运行)
        run: npm run test:smoke

  nightly-regression:
    if: github.event_name == 'schedule'
    timeout-minutes: 120
    steps:
      - run: npm test -- --coverage

优化技术

// 1. 并行执行
module.exports = {
  maxWorkers: '50%', // 使用一半CPU核心
  testTimeout: 30000
};

// 2. 跨CI工作节点分片
// npm test -- --shard=1/4

// 3. 增量测试(仅运行自上次运行以来的更改)
// 跟踪上次运行状态,跳过未更改的通过测试

// 4. 冒烟测试快速失败
// 先运行关键测试,失败时中止

智能体驱动回归

// 智能测试选择
await Task("回归分析", {
  pr: 1234,
  strategy: '变更基础带风险',
  timeBudget: '15分钟'
}, "qe-regression-risk-analyzer");

// 返回:
// {
//   mustRun: ['payment.test.ts', 'checkout.integration.test.ts'],
//   shouldRun: ['order.test.ts'],
//   canSkip: ['profile.test.ts', 'search.test.ts'],
//   estimatedTime: '12分钟',
//   riskCoverage: 0.94
// }

// 从生产错误生成回归测试
await Task("错误回归测试", {
  bug: { id: 'BUG-567', description: '结算失败 > 100项' },
  preventRecurrence: true
}, "qe-test-generator");

智能体协调提示

内存命名空间

aqe/regression-testing/
├── test-selection/*     - 影响分析结果
├── suite-health/*       - 稳定性、时间趋势
├── coverage-maps/*      - 测试到代码映射
└── bug-regressions/*    - 来自生产错误的测试

群组协调

const regressionFleet = await FleetManager.coordinate({
  strategy: '综合回归',
  agents: [
    'qe-regression-risk-analyzer',  // 分析更改,选择测试
    'qe-test-executor',             // 执行选定测试
    'qe-coverage-analyzer',         // 分析覆盖率缺口
    'qe-quality-gate'               // 通过/不通过决策
  ],
  topology: '顺序'
});

相关技能


记住

回归测试是对抗更改的保险。 每个代码更改都是一个风险。智能回归测试通过基于更改测试重要内容来减轻风险。

良好的回归测试是战略性的,而非穷尽的。 你不能每次测试所有内容。根据更改、风险和时间预算选择。

使用智能体: qe-regression-risk-analyzer 提供智能测试选择,在10%执行时间内实现90%缺陷检测。智能体自动从生产错误生成回归测试。