让 Claude Code 设计测试策略
补测试前不要先写代码。让 Claude Code 先识别测试框架、风险点、边界场景和最小验证方式,再决定补单元测试、集成测试还是人工验收。
测试不是“让 CC 随便补几个用例”。真正有用的测试,应该覆盖本次改动最容易出问题的地方。
如果项目有测试体系,可以让 CC 帮忙补测试;如果没有,也可以让它设计最小验证方式。关键是先做测试策略,而不是直接写测试文件。
先识别项目测试方式
不要一上来就说“补测试”。先让 CC 看项目怎么测。
请先只读分析当前项目测试方式,不要新增测试。 请告诉我: 1. 项目使用什么测试框架。 2. 测试文件通常放在哪里。 3. 测试命名风格是什么。 4. 现有测试偏单元、集成还是端到端。 5. 当前任务最适合补哪类测试。
如果项目没有测试体系,也要明确说出来。
先找风险点
测试应该围绕风险设计。
请基于本次改动列出风险点。 格式: | 风险点 | 可能出错的原因 | 推荐验证方式 | 要求: 1. 不要为了补测试而补测试。 2. 只关注本次改动可能影响的行为。 3. 如果人工验收更合适,也请说明。
风险点比测试数量更重要。
选择测试类型
不同任务适合不同测试:
| 场景 | 更适合的验证 |
|---|---|
| 纯文案 | 人工验收或快照检查 |
| 工具函数 | 单元测试 |
| 表单校验 | 单元测试 + 人工边界验收 |
| 接口逻辑 | 接口测试或集成测试 |
| 权限判断 | 多角色测试 |
| 数据库变更 | 迁移检查 + 回滚方案 |
| UI 响应式 | 浏览器检查和截图对比 |
| 构建失败 | 构建命令复跑 |
不要所有任务都硬写单元测试。
最小测试集怎么定
测试策略不是越多越好,而是用最少的测试覆盖最高风险。
可以按这个顺序选:
1. 先覆盖本次改动直接影响的主路径。 2. 再覆盖最容易出错的边界条件。 3. 再覆盖历史上出过问题的回归路径。 4. 最后才考虑可选的维护性测试。
让 CC 帮忙收敛:
请给出本次改动的最小测试集。 要求: 1. 不追求测试数量。 2. 每个测试都对应一个明确风险。 3. 如果某个风险人工验收更合适,请说明。 4. 标出哪些测试可以后续再补。
让 CC 先给测试计划
请先给测试计划,不要写测试代码。 请输出: 1. 本次最需要验证的行为。 2. 推荐补哪些测试。 3. 每个测试覆盖什么风险。 4. 哪些风险不适合自动化测试,需要人工验收。 5. 最小测试集是什么。
确认后再让它写测试。
测试不要覆盖实现细节
测试应该尽量验证行为,而不是绑死实现。
不好的测试:
- 断言内部函数调用次数。
- 断言临时变量名。
- 断言过细的 DOM 结构。
- 为了当前实现硬凑 mock。
更好的测试:
- 输入某些参数,输出符合预期。
- 某个角色不能访问某个功能。
- 空数据时页面有兜底。
- 错误接口返回时有提示。
可以这样要求:
请优先测试用户可观察行为,不要过度绑定实现细节。 如果必须 mock,请说明 mock 的原因和边界。
没有测试体系怎么办
如果项目没有测试体系,不要让 CC 直接引入一堆依赖。
如果当前项目没有测试体系,请不要新增测试框架。 请给出最小验证方案: 1. 应该运行什么检查。 2. 应该打开哪些页面。 3. 应该测试哪些输入。 4. 应该观察哪些结果。 5. 是否建议后续单独建立测试体系。
建立测试体系本身应该是独立任务。
测试写完后要解释
测试不是写完就完了。让 CC 说明覆盖范围:
请解释新增测试: 1. 每个测试覆盖什么风险。 2. 为什么这些测试足够支撑本次改动。 3. 哪些风险还没有覆盖。 4. 如何运行这些测试。 5. 测试失败时应该先看哪里。
这样用户才知道测试是否真的有价值。
不要让测试制造假安全感
有些测试看起来通过了,但价值很低:
- 只测试组件能渲染,不测试关键交互。
- mock 掉所有真实风险。
- 断言永远为真的条件。
- 只覆盖成功路径,不覆盖失败路径。
- 为了覆盖率写无意义测试。
可以要求 CC 自查:
请检查新增测试是否存在假覆盖。 重点看: 1. 是否真的覆盖本次改动风险。 2. 是否只测试了无关实现细节。 3. mock 是否掩盖真实问题。 4. 是否遗漏关键失败路径。
测试失败时不要急着改业务代码
测试失败不一定说明业务代码错了,也可能是测试写错、mock 不合理、环境缺失或断言过度。
可以让 CC 先分类:
测试失败了,请先不要修改业务代码。 请判断失败原因属于哪类: 1. 业务逻辑确实有问题。 2. 测试断言不合理。 3. mock 或测试数据不对。 4. 环境或依赖问题。 5. 之前已有历史失败。 请说明依据,再给出最小修复建议。
这样能避免为了让测试通过而改坏业务。
测试策略收尾模板
请为本次测试策略收尾。 请输出: 1. 本次改动的主要风险点。 2. 已覆盖的自动化测试。 3. 已覆盖的人工验收。 4. 未覆盖风险及原因。 5. 是否建议后续补更完整测试体系。
测试策略的最终目标,是让交付结果更可信,而不是让测试数量看起来更多。
验收结果
- 你知道补测试前要先识别测试体系。
- 你知道测试应该围绕风险点设计。
- 你知道没有测试体系时先做最小验证,不要乱加依赖。
- 你能让 CC 解释测试覆盖范围和未覆盖风险。