BMAD-METHOD/bmad-core/tasks/risk-profile.md

7.9 KiB
Raw Blame History

风险概况

使用概率×影响分析,为故事实施生成全面的风险评估矩阵。

输入

required:
  - story_id: '{epic}.{story}' # 例如, "1.3"
  - story_path: 'docs/stories/{epic}.{story}.*.md'
  - story_title: '{title}' # 如果缺少则从故事文件的H1派生
  - story_slug: '{slug}' # 如果缺少,则从标题派生(小写,连字符连接)

目的

识别、评估和优先处理故事实施中的风险。根据风险级别提供风险缓解策略和测试重点领域。

风险评估框架

风险类别

类别前缀:

  • TECH: 技术风险
  • SEC: 安全风险
  • PERF: 性能风险
  • DATA: 数据风险
  • BUS: 业务风险
  • OPS: 运营风险
  1. 技术风险 (TECH)

    • 架构复杂性
    • 集成挑战
    • 技术债务
    • 可扩展性问题
    • 系统依赖
  2. 安全风险 (SEC)

    • 认证/授权缺陷
    • 数据泄露漏洞
    • 注入攻击
    • 会话管理问题
    • 加密弱点
  3. 性能风险 (PERF)

    • 响应时间下降
    • 吞吐量瓶颈
    • 资源耗尽
    • 数据库查询优化
    • 缓存失败
  4. 数据风险 (DATA)

    • 数据丢失的可能性
    • 数据损坏
    • 侵犯隐私
    • 合规性问题
    • 备份/恢复差距
  5. 业务风险 (BUS)

    • 功能不符合用户需求
    • 收入影响
    • 声誉损害
    • 法规不合规
    • 市场时机
  6. 运营风险 (OPS)

    • 部署失败
    • 监控差距
    • 事件响应准备情况
    • 文档不足
    • 知识转移问题

风险分析流程

1. 风险识别

为每个类别识别具体风险:

risk:
  id: 'SEC-001' # 使用前缀SEC, PERF, DATA, BUS, OPS, TECH
  category: security
  title: '用户表单输入验证不足'
  description: '表单输入未正确清理可能导致XSS攻击'
  affected_components:
    - 'UserRegistrationForm'
    - 'ProfileUpdateForm'
  detection_method: '代码审查发现缺少验证'

2. 风险评估

使用概率×影响评估每个风险:

概率级别:

  • 高 (3): 很可能发生 (>70%的几率)
  • 中 (2): 可能发生 (30-70%的几率)
  • 低 (1): 不太可能发生 (<30%的几率)

影响级别:

  • 高 (3): 严重后果(数据泄露、系统宕机、重大财务损失)
  • 中 (2): 中等后果(性能下降、轻微数据问题)
  • 低 (1): 轻微后果(外观问题、轻微不便)

风险评分 = 概率 × 影响

  • 9: 严重风险 (红色)
  • 6: 高风险 (橙色)
  • 4: 中风险 (黄色)
  • 2-3: 低风险 (绿色)
  • 1: 极小风险 (蓝色)

3. 风险优先级排序

创建风险矩阵:

## 风险矩阵

| 风险ID | 描述 | 概率 | 影响 | 评分 | 优先级 |
| --- | --- | --- | --- | --- | --- |
| SEC-001 | XSS漏洞 | 高 (3) | 高 (3) | 9 | 严重 |
| PERF-001 | 仪表板查询缓慢 | 中 (2) | 中 (2) | 4 | 中 |
| DATA-001 | 备份失败 | 低 (1) | 高 (3) | 3 | 低 |

4. 风险缓解策略

为每个已识别的风险提供缓解措施:

mitigation:
  risk_id: 'SEC-001'
  strategy: '预防性' # 预防性|检测性|纠正性
  actions:
    - '实施输入验证库例如validator.js'
    - '添加CSP头以防止XSS执行'
    - '在存储前清理所有用户输入'
    - '在模板中对所有输出进行转义'
  testing_requirements:
    - '使用OWASP ZAP进行安全测试'
    - '对表单进行手动渗透测试'
    - '验证函数的单元测试'
  residual_risk: '低 - 可能仍存在一些零日漏洞'
  owner: 'dev'
  timeline: '部署前'

输出

输出1门禁YAML块

生成用于粘贴到门禁文件的risk_summary下的内容:

输出规则:

  • 仅包括评估的风险;不要输出占位符
  • 在输出最高风险和任何表格列表时,按分数(降序)对风险进行排序
  • 如果没有风险:总数全为零,省略最高风险,保持建议数组为空
# risk_summary粘贴到门禁文件
risk_summary:
  totals:
    critical: X # 评分 9
    high: Y # 评分 6
    medium: Z # 评分 4
    low: W # 评分 2-3
  highest:
    id: SEC-001
    score: 9
    title: '个人资料表单上的XSS'
  recommendations:
    must_fix:
      - '添加入口清理和CSP'
    monitor:
      - '为认证端点添加安全警报'

输出2Markdown报告

保存到: qa.qaLocation/assessments/{epic}.{story}-risk-{YYYYMMDD}.md

# 风险概况:故事 {epic}.{story}

日期:{date}
审查员Quinn测试架构师

## 执行摘要

-   已识别风险总数X
-   严重风险Y
-   高风险Z
-   风险评分XX/100已计算

## 需要立即关注的严重风险

### 1. [ID]:风险标题

**评分9严重**
**概率**:高 - 详细理由
**影响**:高 - 潜在后果
**缓解**

-   需要立即采取行动
-   要采取的具体步骤
  **测试重点**:需要的具体测试场景

## 风险分布

### 按类别

-   安全性X个风险Y个严重
-   性能X个风险Y个严重
-   数据X个风险Y个严重
-   业务X个风险Y个严重
-   运营X个风险Y个严重

### 按组件

-   前端X个风险
-   后端X个风险
-   数据库X个风险
-   基础设施X个风险

## 详细风险登记册

[包含所有风险、评分和缓解措施的完整表格]

## 基于风险的测试策略

### 优先级1严重风险测试

-   严重风险的测试场景
-   所需的测试类型(安全、负载、混沌)
-   测试数据要求

### 优先级2高风险测试

-   集成测试场景
-   边缘情况覆盖

### 优先级3中/低风险测试

-   标准功能测试
-   回归测试套件

## 风险接受标准

### 生产前必须修复

-   所有严重风险评分9
-   影响安全/数据的高风险

### 可以在有缓解措施的情况下部署

-   有补偿控制的中等风险
-   有监控的低风险

### 已接受的风险

-   记录团队接受的任何风险
-   包括适当授权的签字

## 监控要求

部署后监控:

-   PERF风险的性能指标
-   SEC风险的安全警报
-   运营风险的错误率
-   业务风险的业务KPI

## 风险审查触发器

在以下情况下审查和更新风险概况:

-   架构发生重大变化
-   添加了新的集成
-   发现了安全漏洞
-   报告了性能问题
-   法规要求变更

风险评分算法

计算总体故事风险评分:

基础分 = 100
对于每个风险:
  - 严重 (9)扣20分
  - 高 (6)扣10分
  - 中 (4)扣5分
  - 低 (2-3)扣2分

最低分 = 0极度危险
最高分 = 100风险极小

基于风险的建议

根据风险概况,建议:

  1. 测试优先级

    • 首先运行哪些测试
    • 需要哪些额外的测试类型
    • 测试环境要求
  2. 开发重点

    • 代码审查重点领域
    • 需要额外的验证
    • 要实施的安全控制
  3. 部署策略

    • 对高风险更改进行分阶段推出
    • 对有风险的功能使用功能标志
    • 回滚程序
  4. 监控设置

    • 要跟踪的指标
    • 要配置的警报
    • 仪表板要求

与质量门的集成

确定性门映射:

  • 任何风险评分≥9 → 门 = 失败(除非豁免)
  • 否则如果任何评分≥6 → 门 = 关注
  • 否则 → 门 = 通过
  • 未缓解的风险 → 在门中记录

输出3故事钩子行

打印此行以供审查任务引用:

风险概况qa.qaLocation/assessments/{epic}.{story}-risk-{YYYYMMDD}.md

关键原则

  • 尽早并系统地识别风险
  • 使用一致的概率×影响评分
  • 提供可操作的缓解策略
  • 将风险与具体的测试要求联系起来
  • 跟踪缓解后的剩余风险
  • 随着故事的发展更新风险概况