3.1 KiB
3.1 KiB
测试级别框架
用于确定不同场景下适当测试级别(单元、集成、端到端)的综合指南。
测试级别决策矩阵
单元测试
何时使用:
- 测试纯函数和业务逻辑
- 算法正确性
- 输入验证和数据转换
- 隔离组件中的错误处理
- 复杂计算或状态机
特点:
- 执行速度快(即时反馈)
- 无外部依赖(数据库、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: '带有测试支付网关的预发环境'
测试级别选择规则
何时倾向于单元测试:
- 逻辑可以被隔离
- 不涉及副作用
- 需要快速反馈
- 圈复杂度高
何时倾向于集成测试:
- 测试持久层
- 验证服务合约
- 测试中间件/拦截器
- 组件边界至关重要
何时倾向于端到端测试:
- 面向用户的关键路径
- 多系统交互
- 法规遵从性场景
- 可视化回归很重要
要避免的反模式
- 使用端到端测试进行业务逻辑验证
- 单元测试框架行为
- 集成测试第三方库
- 跨级别的重复覆盖
重复覆盖防护
在添加任何测试之前,请检查:
- 这是否已经在较低级别进行了测试?
- 单元测试能否代替集成测试覆盖此项?
- 集成测试能否代替端到端测试覆盖此项?
仅在以下情况下,覆盖范围重叠是可接受的:
- 测试不同方面(单元:逻辑,集成:交互,端到端:用户体验)
- 需要深度防御的关键路径
- 防止先前已损坏功能的回归
测试命名约定
- 单元:
test_{component}_{scenario} - 集成:
test_{flow}_{interaction} - 端到端:
test_{journey}_{outcome}
测试ID格式
{EPIC}.{STORY}-{LEVEL}-{SEQ}
示例:
1.3-UNIT-0011.3-INT-0021.3-E2E-001