学完这一课,你能:
- 把用户反馈转换成时间线和可复现步骤
- 按输入、前端、网络、服务、数据逐层收集证据
- 建立假设、验证和排除记录,最终确认根因
1. 先画问题时间线
“保存失败”只是最后看到的现象。你需要记录问题发生前后系统经历了什么,以及每一步是否符合预期。
时间线示例新增问题失败
10:02:11 用户点击保存;10:02:11 前端通过了必填校验;10:02:12 请求返回 500;10:02:12 页面只显示“出错了”;10:02:12 服务日志记录数据库字段不能为空。
第一个明确偏离预期的位置是后端写入数据库时缺少字段。页面提示不清楚是另一个需要改进的问题,但不是原始根因。
2. 按五层证据树逐层排除
输入用户与环境
账号、数据、设备、时间和操作是否特殊。
前端页面与状态
事件是否触发,发送内容是否正确。
网络请求与响应
地址、方法、状态码和响应体。
后端日志与规则
请求进入哪里,在哪一步抛出异常。
数据记录与约束
写入是否发生,数据是否符合约束。
每一层都问同一个问题:“这里的实际证据是什么?它与预期有什么不同?”找到第一处差异后再向下确认,不要凭印象跳层。
3. 用假设表控制推理
| 假设 | 支持证据 | 反证方法 | 结论 |
|---|---|---|---|
| 按钮没有触发 | 页面没有成功提示 | 查看网络面板是否发出请求 | 已排除:请求存在 |
| 接口地址错误 | 请求返回失败 | 检查请求地址与路由日志 | 已排除:请求到达后端 |
| 缺少必填字段 | 数据库错误日志指向字段 | 对比请求内容与数据模型 | 确认:字段映射遗漏 |
没有反证方法的“可能原因”价值很低让 AI 给出假设时,必须同时要求它说明需要什么证据、如何安全验证,以及什么结果会推翻这个假设。
4. 根因、修复和预防要分开
- 根因为什么系统会进入错误状态,例如接口字段名与数据模型不一致。
- 即时修复恢复正确字段映射,让核心流程重新可用。
- 影响确认检查已有数据是否损坏、其他接口是否存在同类问题。
- 预防措施增加接口校验、自动测试和可读错误提示,防止同类问题复发。
本课交付 · 30 分钟
完成一份诊断记录
- 选择项目里一个真实或可控的问题,写出环境与复现步骤。
- 建立从操作到日志的时间线。
- 按五层证据树记录每层的预期和实际结果。
- 提出最多 3 个假设,并为每个假设设计反证方法。
- 记录根因、修复、验证结果和一项预防措施。