# Google 测试标准参考手册 Google 测试最佳实践与标准的全面指南。 --- ## AAA 模式(Arrange-Act-Assert) 每个测试都应遵循以下结构: ### 1. 准备(Arrange) ```markdown **前置条件**: - 系统处于已知状态 - 测试数据已准备 - 依赖已模拟/配置 ``` ### 2. 执行(Act) ```markdown **测试步骤**: 1. 执行操作 2. 触发行为 3. 运行操作 ``` ### 3. 断言(Assert) ```markdown **预期结果**: ✅ 验证标准 ✅ 可观察的结果 ✅ 系统状态验证 ``` --- ## 测试用例设计原则 ### 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% --- ## 测试隔离 ### 强制性原则 1. **不共享状态** ```typescript ❌ 错误:测试共享全局变量 ✅ 正确:每个测试使用独立数据 ``` 2. **每个测试使用新数据** ```typescript beforeEach(() => { database.seed(freshData); }); ``` 3. **测试后清理** ```typescript afterEach(() => { database.cleanup(); mockServer.reset(); }); ``` --- ## 快速失败验证 ### 关键安全模式 ```typescript // ❌ 错误:回退到模拟数据 if (error) { return getMockData(); // 错误——掩盖问题 } // ✅ 正确:立即失败 if (error || !data) { throw new Error(error?.message || '操作失败'); } ``` ### 输入验证 ```typescript // 在任意操作之前进行验证 function processSkillName(input: string): void { // 先做安全检查 if (input.includes('..')) { throw new ValidationError('检测到路径遍历'); } if (input.startsWith('/')) { throw new ValidationError('不允许使用绝对路径'); } // 再执行业务逻辑 return performOperation(input); } ``` --- ## 测试文档标准 ### 测试用例模板 ```markdown ### TC-XXX-YYY:描述性标题 **优先级**:P0/P1/P2/P3/P4 **类型**:单元测试/集成测试/端到端测试/安全测试 **预计耗时**:X 分钟 **前置条件**: - 具体、可验证的条件 **测试步骤**: 1. 确切的命令或操作 2. 具体的输入数据 3. 验证步骤 **预期结果**: ✅ 可衡量的结果 ✅ 具体的验证标准 **通过/失败标准**: - ✅ 通过:所有验证步骤均成功 - ❌ 失败:出现任何错误或偏差 **潜在缺陷**: - 已知的边缘情况 - 安全隐患 ``` --- ## 质量门禁 ### 发布标准 | 门禁项 | 阈值 | 是否阻断 | |--------|------|----------| | 测试执行 | 100% | 是 | | 通过率 | ≥80% | 是 | | P0 缺陷 | 0 | 是 | | P1 缺陷 | ≤5 | 是 | | 代码覆盖率 | ≥80% | 是 | | 安全 | 90% OWASP | 是 | ### 每日检查点 **晨会**: - 昨日进展 - 今日计划 - 受阻事项 **下班前**: - 已执行的测试 - 通过率 - 已提交的缺陷 - 明日计划 ### 周度审查 **周五报告**: - 本周总结 - 基线对比 - 质量门禁状态 - 下周计划 --- ## 最佳实践总结 ### 应做事项: - ✅ 编写可重现的测试用例 - ✅ 每次测试后更新追踪记录 - ✅ 失败时立即提交缺陷 - ✅ 遵循 AAA 模式 - ✅ 保持测试隔离 - ✅ 记录环境详情 ### 禁止事项: - ❌ 跳过测试文档 - ❌ 批量更新 CSV - ❌ 忽略安全测试 - ❌ 在生产数据上运行测试 - ❌ 跳过清理操作 - ❌ 硬编码测试数据 --- **参考资料**: - [Google 测试博客](https://testing.googleblog.com/) - [Google SWE 书籍——测试篇](https://abseil.io/resources/swe-book) - [测试金字塔概念](https://martinfowler.com/bliki/TestPyramid.html)