5.0 KiB
5.0 KiB
Google 测试标准参考手册
Google 测试最佳实践与标准的全面指南。
AAA 模式(Arrange-Act-Assert)
每个测试都应遵循以下结构:
1. 准备(Arrange)
**前置条件**:
- 系统处于已知状态
- 测试数据已准备
- 依赖已模拟/配置
2. 执行(Act)
**测试步骤**:
1. 执行操作
2. 触发行为
3. 运行操作
3. 断言(Assert)
**预期结果**:
✅ 验证标准
✅ 可观察的结果
✅ 系统状态验证
测试用例设计原则
1. 测试用例 ID 命名规范
TC-[分类]-[编号]
示例:
- TC-CLI-001(CLI 测试)
- TC-WEB-042(Web 测试)
- TC-API-103(API 测试)
- TC-SEC-007(安全测试)
2. 优先级分类
P0(阻断级)——发布前必须修复
- 阻碍核心功能
- 安全漏洞(SQL 注入、XSS)
- 数据损坏/丢失
- 系统崩溃
P1(严重级)——两周内修复
- 主要功能故障(存在变通方案)
- 严重的用户体验下降
- 性能问题
P2(高级)——四周内修复
- 次要功能问题
- 边缘情况
- 非关键性缺陷
P3(中级)——条件允许时修复
- 外观问题
- 罕见的边缘情况
- 锦上添花的改进
P4(低级)——可选
- 文档拼写错误
- 轻微的 UI 对齐问题
3. 测试类型
单元测试:
- 测试单个函数/方法
- 无外部依赖
- 执行速度快(<100ms)
- 覆盖率:语句 ≥80%,分支 ≥75%
集成测试:
- 测试组件间的交互
- 使用真实依赖(数据库、API)
- 执行时间适中
- 覆盖率:关键用户路径
端到端测试:
- 测试完整的用户工作流
- 使用真实浏览器/环境
- 执行速度慢
- 覆盖率:正常路径 + 关键故障场景
安全测试:
- 覆盖 OWASP Top 10
- 输入验证
- 身份验证/授权
- 数据保护
覆盖率阈值
代码覆盖率目标
- ✅ 语句覆盖率:≥80%
- ✅ 分支覆盖率:≥75%
- ✅ 函数覆盖率:≥85%
- ✅ 行覆盖率:≥80%
测试分布(推荐)
- 单元测试:70%
- 集成测试:20%
- 端到端测试:10%
测试隔离
强制性原则
-
不共享状态
❌ 错误:测试共享全局变量 ✅ 正确:每个测试使用独立数据 -
每个测试使用新数据
beforeEach(() => { database.seed(freshData); }); -
测试后清理
afterEach(() => { database.cleanup(); mockServer.reset(); });
快速失败验证
关键安全模式
// ❌ 错误:回退到模拟数据
if (error) {
return getMockData(); // 错误——掩盖问题
}
// ✅ 正确:立即失败
if (error || !data) {
throw new Error(error?.message || '操作失败');
}
输入验证
// 在任意操作之前进行验证
function processSkillName(input: string): void {
// 先做安全检查
if (input.includes('..')) {
throw new ValidationError('检测到路径遍历');
}
if (input.startsWith('/')) {
throw new ValidationError('不允许使用绝对路径');
}
// 再执行业务逻辑
return performOperation(input);
}
测试文档标准
测试用例模板
### TC-XXX-YYY:描述性标题
**优先级**:P0/P1/P2/P3/P4
**类型**:单元测试/集成测试/端到端测试/安全测试
**预计耗时**:X 分钟
**前置条件**:
- 具体、可验证的条件
**测试步骤**:
1. 确切的命令或操作
2. 具体的输入数据
3. 验证步骤
**预期结果**:
✅ 可衡量的结果
✅ 具体的验证标准
**通过/失败标准**:
- ✅ 通过:所有验证步骤均成功
- ❌ 失败:出现任何错误或偏差
**潜在缺陷**:
- 已知的边缘情况
- 安全隐患
质量门禁
发布标准
| 门禁项 | 阈值 | 是否阻断 |
|---|---|---|
| 测试执行 | 100% | 是 |
| 通过率 | ≥80% | 是 |
| P0 缺陷 | 0 | 是 |
| P1 缺陷 | ≤5 | 是 |
| 代码覆盖率 | ≥80% | 是 |
| 安全 | 90% OWASP | 是 |
每日检查点
晨会:
- 昨日进展
- 今日计划
- 受阻事项
下班前:
- 已执行的测试
- 通过率
- 已提交的缺陷
- 明日计划
周度审查
周五报告:
- 本周总结
- 基线对比
- 质量门禁状态
- 下周计划
最佳实践总结
应做事项:
- ✅ 编写可重现的测试用例
- ✅ 每次测试后更新追踪记录
- ✅ 失败时立即提交缺陷
- ✅ 遵循 AAA 模式
- ✅ 保持测试隔离
- ✅ 记录环境详情
禁止事项:
- ❌ 跳过测试文档
- ❌ 批量更新 CSV
- ❌ 忽略安全测试
- ❌ 在生产数据上运行测试
- ❌ 跳过清理操作
- ❌ 硬编码测试数据
参考资料: