用途:帮助团队以系统化策略建立测试信心,避免过度测试,在合适层级编写合适测试。
主要能力:
- 测试金字塔:单元占约70%、每个小于10ms、维护成本低,捕获逻辑错误与边界;集成占约20%、每个小于1s,捕获接线、API契约与数据流问题;E2E占约10%、每个5-30s,捕获用户旅程与部署问题。警惕倒金字塔(E2E过多导致CI慢、易波动)和冰淇淋筒(人工测试堆在最上层,不可扩展)。
- 单元测试采用AAA模式(Arrange、Act、Assert),命名建议“should [预期行为] when [条件]”,可读作规格说明。
- 金字塔之外的测试类型:快照检测输出意外变化;契约验证服务间API形状;属性测试寻找人工遗漏边界;Mutation验证测试真能发现缺陷;性能测试捕获速度/内存回归;冒烟验证部署后基础功能。
- Mock取舍:可Mock外部HTTP API、单元测试中的数据库、时间、文件系统、随机/UUID;不要Mock自身业务逻辑、集成测试中的数据库、纯函数、内存等价物、框架内部。
- 覆盖率理念:低于50%可能遗漏关键路径;50-70%对多数项目合理;70-85%良好但边际收益下降;85-100%除非安全关键,往往浪费。真正指标是每个PR变更代码的覆盖率;覆盖率无法说明断言是否正确。
- 不宜测试:第三方库内部、框架行为、私有实现细节、无逻辑的平凡getter/setter、生成代码(应测试生成器)。
- 测试质量信号:好测试在行为破坏时失败、失败原因单一、自包含、快、可读如文档、确定性;坏测试因实现变化失败、多断言混杂、依赖顺序、慢、需读源码、易波动。
- TDD循环:Red写失败测试(勿写过多)、Green用最少代码通过(勿过度设计)、Refactor在绿色下清理(勿跳过)。TDD适合需求明确的场景,探索性代码可等设计稳定后再写测试。
- 不稳定测试排查:偶发失败多为时序/竞态,应加等待并清除共享状态;仅CI失败多为环境差异,应固定版本并用容器;被其他测试影响多为测试污染,应隔离setup/teardown;慢机器失败多为硬编码超时,应用退避重试或基于事件的等待。
使用方式与限制:资料未提供安装命令、调用方式或具体平台要求,仅包含策略说明,命令与代码示例保持原样。