知识领域
产品与体验
工程与交付
AI 能力

调试与质量术语

发现与复现

3 个条目

问题报告Bug Report

我只会说「这里有个 bug」,别人根本没法接手。

ISSUE · BUG-184
Safari 登录没有反馈
环境
Safari 17 · macOS
影响
未完成表单用户
实际无提示
vs
预期字段错误

结论:环境、影响、实际 vs 预期写清,工单才能交给别人接手。

复现步骤Reproduction Steps

我说「登录一下就坏」,别人却说「我这好好的」。

  1. 1Safari 17 · 未登录 · 旧缓存
  2. 2打开结账页
  3. 3留空地址,点提交
  4. 4实际:按钮无反馈5/5 稳定

结论:必要环境 + 编号步骤 + 连跑频率,才算稳定可复现。

最小复现Minimal Reproduction

我把整个项目丢过去,对方还是看不出问题出在哪。

sandbox2 files
  • LoginForm.tsx保留
  • validate.ts保留
  • theme.css已剥离
Preview提交仍无提示 ✓

结论:再删一个就不复现,留下的才是边界。

定位工具

4 个条目

控制台Console

页面没反应,我怎么当场看见代码输出了什么?

登录页点登录没反应密码留空
Console3
  • infosubmit:start
  • warnpassword missing
  • error422 Unprocessable

结论:开发期按级别当场读;看完就删,生产证据换结构化日志。

网络面板Network Inspector

看懂网络

页面「没反应」时,我怎么知道是请求没发出、返回错了,还是前端显示错了?

Network3 requests
  • POST/api/login422
  • GET/api/orders503
  • GET/api/profile200

一眼看请求是否发出、返回码与耗时

断点Breakpoint

代码一闪而过,我怎么看见当时变量到底是什么?

登录页已暂停点登录没反应
login.jsPAUSED · L5
  1. 3if (email === "") {
  2. 5if (password === undefined) {
Scopepassword = ""

结论:停在可疑行才能看见真实值——空串不是 undefined。

调用栈Stack Trace

报错只给我最后一行,我怎么回到自己该改的代码?

结账页支付失败TypeError
  1. 栈顶chargeCard
  2. 跳过vendor.min.js
  3. 业务submitOrder

结论:从栈顶往下跳过框架帧,首个业务帧才是该改的入口。

运行证据

4 个条目

结构化日志Structured Logging

生产上失败了,我怎么按这一次请求把日志串起来,还不能泄密?

登录页422 失败密码留空
  • INFOreq-7f2 start
  • WARNreq-7f2 password missing
  • ERRORreq-7f2 422

结论:同一 requestId 串起一次失败;密码只记字段,不记值。

错误追踪Error Tracking

交付上线

同样的崩溃报了几十次,我怎么判断该修还是该回滚?

结账页支付崩溃TypeError
ISSUE32
TypeError: order is undefinedrelease 2.8.1 · submitOrder

结论:同根因聚成一张 Issue,先看版本和影响,再决定修还是回滚。

链路追踪Distributed Trace

一次下单很慢,我怎么知道时间花在哪个服务?

下单页卡住 401ms提交中
API 401msDB 286ms

结论:一次请求拆成父子跨度,最长的子跨度才是当前瓶颈。

性能分析Performance Profiling

页面有点卡,我怎么知道时间到底花在哪,而不是凭感觉改?

商品搜索卡住 318ms
Performance · 录制这次搜索
handleSearch
filterItems 62%render

搜索卡顿 → 录制一次 → 最宽的 filterItems 是当前热点。

修复与防回归

3 个条目

根因分析Root Cause Analysis

列表空了,我是该加一句提示,还是先问为什么空?

我的订单账号 B

还没有订单

  1. 列表为空
  2. 缓存命中
  3. 键缺 userId

结论:空列表是症状;缓存键缺 userId 才是根因。

修复验证Fix Verification

代码改完了,怎样证明这个 bug 真的没了,而不是我看走眼?

登录复验原步骤
邮箱 ada@studio.test密码 留空请填写密码

结论:原触发条件消失,字段错误长在表单上,才算修对。

回归测试Regression Test

这个 bug 修过一次了,怎样避免下次改代码时它再回来?

CI · login.specfailed
网络失败后邮箱仍在锁住 BUG-184

结论:回归测试锁定曾经的故障;红叉要拦合并,不能为了绿删掉。