第 11 课:测试思维与质量保障
模块三:产品开发协作 | 第 11 课
课前思考
你有没有遇到过这种情况:功能开发完了,看起来没问题,但用户一用就出各种 bug——快速点击重复提交、网络不好时数据丢失、输入特殊内容时崩溃。
这些都不是"功能没做对",而是异常情况没考虑到。
产品经理不需要写测试代码,但需要建立测试思维——在需求阶段就预见到可能出错的地方,而不是等用户来替你发现 bug。
测试的三个层次
专业测试遵循"测试金字塔":
╱ E2E 测试 ╲ — 模拟真实用户操作(少量)
╱ 集成测试 ╲ — 测试多个模块协作(适量)
╱ 单元测试 ╲ — 测试单个函数逻辑(大量)单元测试:最小的测试单位
测试一个"函数"在给定输入下是否产生正确输出。比如"添加任务"函数:输入空字符串应该返回错误提示;输入正常文字应该返回成功。单元测试由开发编写,最底层、最快速、最稳定。
集成测试:测试模块之间的协作
测试前端 API 调用和后端数据处理是否能正确对接。比如"用户提交登录表单 → API 验证 → 返回结果 → 前端跳转首页"这个完整链路。集成测试检查的是"各个模块之间能不能一起工作"。
E2E 测试:模拟真实用户行为
从用户视角完整操作一遍核心流程。比如"打开首页 → 输入任务 → 点击添加 → 勾选完成 → 刷新页面 → 确认数据还在"。E2E 测试最接近真实使用,但维护成本也是最高的。
产品经理的测试思维:从"能做"到"不会错"
PM 不需要写自动化测试,但需要在以下环节注入测试思维:
1. 写 PRD 时:定义边缘情况
PRD 中"边缘情况处理"部分的重要性怎么强调都不为过。下面是每一类功能都应该考虑的边缘情况模板:
| 场景类型 | 需要考虑的边缘情况 |
|---|---|
| 用户输入 | 输入为空、超长内容、特殊字符、粘贴内容 |
| 网络操作 | 网络断开、请求超时、服务器返回错误 |
| 用户行为 | 快速连续点击、中途退出、后退按钮 |
| 数据状态 | 数据为空、数据已删除、数据冲突 |
| 并发操作 | 两人同时编辑、同时删除 |
2. 验收时:不只是"正常流程走完了"
很多 PM 验收功能时只走"快乐路径"——一切都按照预期操作一遍,都正常,就打勾通过。
真正的验收应该包含"痛苦路径":
- 打开功能 → 输入非法内容 → 能正常提示吗?
- 使用功能 → 模拟断网 → 有提示吗?数据丢了吗?
- 快速连续点击同一个按钮 5 次 → 会重复创建吗?
- 加载数据 → 返回空数据 → 页面是空白还是有提示?
3. 写 Bug 时:提供重现路径
一个好的 Bug 描述应该让开发者不需要追问就能重现问题:
- 做了什么操作?(具体步骤)
- 预期发生什么?
- 实际发生了什么?
- 什么环境?(浏览器版本、设备型号、网络环境)
"这个功能不好用"不是 Bug 报告。"在 Safari 浏览器上,任务列表为空时刷新页面会白屏"才是。
AI 时代的测试策略
当 AI 帮你生成代码时,测试变得更加重要——因为 AI 在"正常情况"下表现很好,但在边缘情况下更容易出错。
让 AI 帮你写测试
你不需要会写测试代码。直接告诉 AI:
"请为这个核心功能写测试,覆盖:正常添加、空输入、快速重复点击、网络失败的情况。"
AI 会生成测试代码。你可以请开发者审查这些测试是否覆盖了关键场景。
在 AI 大量修改的区域加强测试
Coding Agents 101 指南中的建议:在当前,AI agent 还没有能力完全不遗漏地测试所有场景。在 AI 大量修改的代码区域,增强测试覆盖能让你对 AI 的输出有更多信心。
人类验证不可替代
Addy Osmani 在关于 AI 辅助编程的文章中指出:AI 可以生成代码,但它不真正理解问题。AI 生成的代码可能在基本场景下正常工作,但不自动考虑异常输入、竞态条件、性能约束或未来需求。验证结果、把住质量关,仍然是人类不可替代的责任。
Bug 优先级:什么必须立刻修,什么可以等等
不是所有 Bug 都值得立刻修。Bug 的优先级取决于两项评估:
| 优先级 | 定义 | 举例 | 行动 |
|---|---|---|---|
| P0 - 阻断 | 核心功能完全不可用 | 无法登录、支付失败 | 立刻停下手头一切来修 |
| P1 - 严重 | 核心功能受阻但有绕过方式 | 新建按钮不灵但刷新后可恢复 | 本次迭代内必须修 |
| P2 - 一般 | 不影响核心功能但体验不好 | 某个页面样式错乱 | 排入下个迭代 |
| P3 - 微瑕 | 极小影响 | 个别文案错别字 | 有时间再修 |
判断的关键不是 Bug 的"技术难度",而是对用户体验和商业价值的影响程度。
本课实践
- 打开你 PRD 中的"边缘情况处理"部分,用本课的边缘情况模板逐项检查,看有没有遗漏
- 找一个你正在用的产品,故意在操作中制造异常情况——快速点击、输入离谱的内容、操作一半退出——观察这个产品如何处理
- 从用户反馈中找出 3 条 Bug 报告,用 P0-P3 标准给它们排优先级
下一步
理解了测试思维之后,下一课我们将学习如何与设计师协作,从用户体验的角度打磨产品。