BMAD-METHOD/bmad-core/data/test-levels-framework.md

3.1 KiB
Raw Blame History

测试级别框架

用于确定不同场景下适当测试级别(单元、集成、端到端)的综合指南。

测试级别决策矩阵

单元测试

何时使用:

  • 测试纯函数和业务逻辑
  • 算法正确性
  • 输入验证和数据转换
  • 隔离组件中的错误处理
  • 复杂计算或状态机

特点:

  • 执行速度快(即时反馈)
  • 无外部依赖数据库、API、文件系统
  • 高度可维护和稳定
  • 易于调试失败

示例场景:

unit_test:
  component: 'PriceCalculator'
  scenario: '使用多条规则计算折扣'
  justification: '具有多个分支的复杂业务逻辑'
  mock_requirements: '无 - 纯函数'

集成测试

何时使用:

  • 组件交互验证
  • 数据库操作和事务
  • API 端点合约
  • 服务间通信
  • 中间件和拦截器行为

特点:

  • 执行时间适中
  • 测试组件边界
  • 可能使用测试数据库或容器
  • 验证系统集成点

示例场景:

integration_test:
  components: ['UserService', 'AuthRepository']
  scenario: '创建具有角色分配的用户'
  justification: '服务与持久化之间的关键数据流'
  test_environment: '内存数据库'

端到端测试

何时使用:

  • 关键用户旅程
  • 跨系统工作流
  • 可视化回归测试
  • 合规性和法规要求
  • 发布前最终验证

特点:

  • 执行速度较慢
  • 测试完整工作流
  • 需要完整的环境设置
  • 最真实但最脆弱

示例场景:

e2e_test:
  journey: '完成结账流程'
  scenario: '用户使用已保存的支付方式购买'
  justification: '需要全面验证的收入关键路径'
  environment: '带有测试支付网关的预发环境'

测试级别选择规则

何时倾向于单元测试:

  • 逻辑可以被隔离
  • 不涉及副作用
  • 需要快速反馈
  • 圈复杂度高

何时倾向于集成测试:

  • 测试持久层
  • 验证服务合约
  • 测试中间件/拦截器
  • 组件边界至关重要

何时倾向于端到端测试:

  • 面向用户的关键路径
  • 多系统交互
  • 法规遵从性场景
  • 可视化回归很重要

要避免的反模式

  • 使用端到端测试进行业务逻辑验证
  • 单元测试框架行为
  • 集成测试第三方库
  • 跨级别的重复覆盖

重复覆盖防护

在添加任何测试之前,请检查:

  1. 这是否已经在较低级别进行了测试?
  2. 单元测试能否代替集成测试覆盖此项?
  3. 集成测试能否代替端到端测试覆盖此项?

仅在以下情况下,覆盖范围重叠是可接受的:

  • 测试不同方面(单元:逻辑,集成:交互,端到端:用户体验)
  • 需要深度防御的关键路径
  • 防止先前已损坏功能的回归

测试命名约定

  • 单元:test_{component}_{scenario}
  • 集成:test_{flow}_{interaction}
  • 端到端:test_{journey}_{outcome}

测试ID格式

{EPIC}.{STORY}-{LEVEL}-{SEQ}

示例:

  • 1.3-UNIT-001
  • 1.3-INT-002
  • 1.3-E2E-001