mcpField
Q
qe-risk-based-testing

qe-risk-based-testing

github.com/proffesor-for-testing测试与质量51993 次安装今天更新
代码仓库

关于 qe-risk-based-testing

qe-risk-based-testing 是帮助团队规划测试范围和分配有限资源的测试技能。它按概率与影响评估风险,并据此安排测试深度,随新信息调整优先级。

主要功能

  1. 01按概率与影响计算风险
  2. 02划分从关键到低的优先级
  3. 03按风险分配测试投入
  4. 04根据新数据动态重新评估
  5. 05在 CI/CD 中按风险选择测试

适用场景

  1. 01制定迭代或发布测试策略
  2. 02决定优先自动化哪些测试
  3. 03分配有限的测试时间
  4. 04生产事故后调整优先级

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-risk-based-testing

安装后在 Claude Code 中输入/qe-risk-based-testing确认已加载。

详细介绍

基于风险的测试

<default_to_action> 规划测试或分配测试资源时:

  1. 识别风险:可能出现什么问题?影响是什么?可能性有多大?
  2. 计算风险:风险 = 概率 × 影响(两项均使用 1-5 分制)
  3. 确定优先级:关键(20+)→ 高(12-19)→ 中(6-11)→ 低(1-5)
  4. 分配精力:关键 60%,高 25%,中 10%,低 5%
  5. 持续重新评估:新信息、变更、生产事故

快速风险评估:

  • 概率因素:复杂度、变更频率、开发者经验、技术债务
  • 影响因素:用户数量、收入、安全、声誉、监管
  • 动态调整:生产环境中的 Bug 会提高风险;稳定的代码会降低风险

关键成功因素:

  • 在 Bug 危害最大的地方进行测试,而不是平均覆盖所有地方
  • 风险会动态变化——根据新信息重新评估
  • 生产数据为风险评估提供依据(右移反馈左移) </default_to_action>

快速参考卡

适用场景
  • 规划迭代/发布测试策略
  • 决定优先自动化哪些内容
  • 分配有限的测试时间
  • 说明测试覆盖率决策的依据
风险计算
Risk Score = Probability (1-5) × Impact (1-5)
分数优先级精力行动
20-25关键60%全面测试,采用多种技术
12-19高25%充分测试,优先自动化
6-11中10%标准测试,基础自动化
1-5低5%冒烟测试,仅探索性测试
概率因素
因素低(1)中(3)高(5)
复杂度简单的 CRUD业务逻辑算法、集成
变更率6 个月以上保持稳定每月变更每周/每天变更
开发者经验资深领域专家中级初级,刚接触代码库
技术债务代码整洁存在一些债务遗留代码,没有测试
影响因素
因素低(1)中(3)高(5)
受影响用户仅管理员部门所有用户
收入无间接影响直接影响(结账)
安全便利性数据丢失人身伤害
声誉内部行业公开丑闻

风险评估工作流

第 1 步:列出功能/组件
Feature | Probability | Impact | Risk | Priority
--------|-------------|--------|------|----------
Checkout | 4 | 5 | 20 | Critical
User Auth | 3 | 5 | 15 | High
Admin Panel | 2 | 2 | 4 | Low
Search | 3 | 3 | 9 | Medium
第 2 步:应用测试深度
await Task("Risk-Based Test Generation", {
  critical: {
    features: ['checkout', 'payment'],
    depth: 'comprehensive',
    techniques: ['unit', 'integration', 'e2e', 'performance', 'security']
  },
  high: {
    features: ['auth', 'user-profile'],
    depth: 'thorough',
    techniques: ['unit', 'integration', 'e2e']
  },
  medium: {
    features: ['search', 'notifications'],
    depth: 'standard',
    techniques: ['unit', 'integration']
  },
  low: {
    features: ['admin-panel', 'settings'],
    depth: 'smoke',
    techniques: ['smoke-tests']
  }
}, "qe-test-generator");
第 3 步:动态重新评估
// Production incident increases risk
await Task("Update Risk Score", {
  feature: 'search',
  event: 'production-incident',
  previousRisk: 9,
  newProbability: 5,  // Increased due to incident
  newRisk: 15         // Now HIGH priority
}, "qe-regression-risk-analyzer");

ML 增强型风险分析

// Agent predicts risk using historical data
const riskAnalysis = await Task("ML Risk Analysis", {
  codeChanges: changedFiles,
  historicalBugs: bugDatabase,
  prediction: {
    model: 'gradient-boosting',
    factors: ['complexity', 'change-frequency', 'author-experience', 'file-age']
  }
}, "qe-regression-risk-analyzer");

// Output: 95% accuracy risk prediction per file

Agent 协作提示

记忆命名空间
aqe/risk-based/
├── risk-scores/*        - Current risk assessments
├── historical-bugs/*    - Bug patterns by area
├── production-data/*    - Incident data for risk
└── coverage-map/*       - Test depth by risk level
Agent 集群协作
const riskFleet = await FleetManager.coordinate({
  strategy: 'risk-based-testing',
  agents: [
    'qe-regression-risk-analyzer',  // Risk scoring
    'qe-test-generator',            // Risk-appropriate tests
    'qe-production-intelligence',   // Production feedback
    'qe-quality-gate'               // Risk-based gates
  ],
  topology: 'sequential'
});

与 CI/CD 集成

# Risk-based test selection in pipeline
- name: Risk Analysis
  run: aqe risk-analyze --changes ${{ github.event.pull_request.files }}

- name: Run Critical Tests
  if: risk.critical > 0
  run: npm run test:critical

- name: Run High Tests
  if: risk.high > 0
  run: npm run test:high

- name: Skip Low Risk
  if: risk.low_only
  run: npm run test:smoke

相关技能


请记住

风险 = 概率 × 影响。 在 Bug 危害最大的地方进行测试。关键风险分配 60%,低风险分配 5%。风险会动态变化——根据新信息重新评估。生产事故会提高风险分数。

使用 Agent: Agent 利用历史数据通过 ML 计算风险,选择与风险相匹配的测试,并根据生产反馈调整分数。使用 Agent 大规模维护动态风险档案。

评论

支持 Markdown