问题报告Bug Report
我只会说「这里有个 bug」,别人根本没法接手。
- 环境
- Safari 17 · macOS
- 影响
- 未完成表单用户
结论:环境、影响、实际 vs 预期写清,工单才能交给别人接手。
我只会说「这里有个 bug」,别人根本没法接手。
结论:环境、影响、实际 vs 预期写清,工单才能交给别人接手。
我说「登录一下就坏」,别人却说「我这好好的」。
结论:必要环境 + 编号步骤 + 连跑频率,才算稳定可复现。
我把整个项目丢过去,对方还是看不出问题出在哪。
结论:再删一个就不复现,留下的才是边界。
页面没反应,我怎么当场看见代码输出了什么?
结论:开发期按级别当场读;看完就删,生产证据换结构化日志。
页面「没反应」时,我怎么知道是请求没发出、返回错了,还是前端显示错了?
/api/login422/api/orders503/api/profile200一眼看请求是否发出、返回码与耗时
代码一闪而过,我怎么看见当时变量到底是什么?
if (email === "") {if (password === undefined) {结论:停在可疑行才能看见真实值——空串不是 undefined。
报错只给我最后一行,我怎么回到自己该改的代码?
结论:从栈顶往下跳过框架帧,首个业务帧才是该改的入口。
生产上失败了,我怎么按这一次请求把日志串起来,还不能泄密?
结论:同一 requestId 串起一次失败;密码只记字段,不记值。
同样的崩溃报了几十次,我怎么判断该修还是该回滚?
结论:同根因聚成一张 Issue,先看版本和影响,再决定修还是回滚。
一次下单很慢,我怎么知道时间花在哪个服务?
结论:一次请求拆成父子跨度,最长的子跨度才是当前瓶颈。
页面有点卡,我怎么知道时间到底花在哪,而不是凭感觉改?
搜索卡顿 → 录制一次 → 最宽的 filterItems 是当前热点。
列表空了,我是该加一句提示,还是先问为什么空?
还没有订单
结论:空列表是症状;缓存键缺 userId 才是根因。
代码改完了,怎样证明这个 bug 真的没了,而不是我看走眼?
结论:原触发条件消失,字段错误长在表单上,才算修对。
这个 bug 修过一次了,怎样避免下次改代码时它再回来?
结论:回归测试锁定曾经的故障;红叉要拦合并,不能为了绿删掉。