返回需求评审与测试方案
Main Track / Tutorial 05

Bug 管理与缺陷分析教程

让一个异常从“看起来不对”变成可复现、可定位、可回归、能推动质量改进的工程事实。

9 个章节交易缺陷闭环报告 + 定位 + 复盘
01

先判断它是不是缺陷

事实对照标准

缺陷来自实际与预期的差异

当退款页面提示“成功”,但退款单仍为处理中,你需要先找到明确预期,再确认环境、数据和操作是否有效。没有依据时先记录疑问,不要把个人偏好直接写成 Bug。

异常确认的最短闭环
观察现象页面或数据异常
核对依据需求与验收标准
排除干扰环境、数据、操作
稳定复现记录最小步骤

先区分问题来源

类型商城示例处理方式
产品问题退款规则前后矛盾回到需求结论,补齐验收标准
代码缺陷重复回调导致重复退款提交缺陷并定位幂等处理
数据问题测试商品没有库存修复或重建可控测试数据
环境问题支付沙箱不可达记录阻塞,交由环境负责人处理
02

写一份别人能复现的缺陷报告

信息完整但不堆砌

重复支付缺陷报告

字段示例写法
标题当支付按钮连续点击时,系统生成两笔支付单条件 + 动作 + 错误结果
环境测试环境 / Chrome / 会员账号 A版本、设备、账号类型
前置订单待支付,应付 100 元可恢复到同一初始状态
步骤进入收银台,连续点击支付两次编号且只保留必要动作
实际出现两笔支付单,均为处理中只陈述观察事实
预期仅一笔有效支付单,重复请求返回同一结果对应确认过的规则
证据时间、订单号、请求、日志、录屏支持复现和定位

可执行步骤

  1. 从干净数据开始再复现一次。
  2. 压缩到仍能触发问题的最少步骤。
  3. 用“当……时,……”写标题。
  4. 分别记录预期和实际,不写原因猜测。
  5. 附上可搜索的业务 ID 和时间。
03

建立页面、请求、日志和数据证据链

同一次复现
用标识串起一次支付异常
页面错误提示与时间
请求HTTP 与业务码
日志request_id / trace_id
数据订单与支付记录

响应证据怎么解释

支付接口返回 HTTP 200,只能说明服务正常处理了请求;还要检查业务码、支付单状态和是否发生扣款。HTTP 成功与业务成功必须分开记录。

分享证据前移除令牌、密码、银行卡号和个人信息;不要在缺陷标题中暴露敏感数据。
04

分清严重程度与修复优先级

影响和顺序不是一回事
两个维度分别回答不同问题
严重程度

问题造成多大用户、业务、资金或数据影响。

修复优先级

结合影响、发布窗口和替代方案决定多快处理。

商城缺陷分级

问题严重程度优先级与理由
重复扣款致命P0:资金损失,阻断发布
支付成功订单未更新严重P0:无法履约且需要补偿
退款记录排序错误一般P1:影响客服处理效率
按钮文字轻微偏移提示P2:不阻断核心流程
等级争议要回到用户影响、数据影响、发生范围、恢复成本和发布窗口,不用职位或情绪决定。
05

让缺陷在生命周期中有明确责任

状态不是进度装饰
典型缺陷流转
新建证据完整
确认归属与优先级
修复说明原因和影响
回归原问题与关联范围
关闭证据可追溯

退回时写清原因

  • 无法复现:补充缺失环境和数据,并约定再次验证。
  • 重复缺陷:关联原缺陷,保留新场景证据。
  • 按设计:引用已确认规则;若规则不合理转产品问题。
  • 延期处理:记录风险接受人、目标版本和临时措施。
06

按层定位,不把猜测当结论

先证据后归因
从现象逐层收窄责任范围
01页面层

交互、提示、展示

02接口层

参数、HTTP、业务码

03服务层

日志、调用、异常

04数据层

订单、支付、退款

退款失败的定位顺序

  1. 确认页面是否发出退款请求。
  2. 检查金额、订单号与幂等键。
  3. 区分 HTTP 失败和业务拒绝。
  4. 用 request_id 查服务日志与下游响应。
  5. 核对订单、支付单、退款单和消息。
  6. 基于证据标记产品、代码、数据或环境问题。

定位型用例

  • 当订单不属于当前用户时,退款请求被拒绝且订单数据不变。
  • 当相同幂等键重复提交时,只存在一笔有效退款单。
  • 当支付渠道超时时,退款保持可恢复状态并可被补偿任务处理。
07

回归不只重跑原步骤

围绕修改影响面

确认修复

使用原环境与原数据条件,确认重复支付不再发生。

扩展同类

覆盖刷新、双端操作、接口重放和回调重复。

检查相邻

回归正常支付、取消支付、退款与订单查询。

关闭前检查

  • 原缺陷稳定通过
  • 相邻路径没有回归
  • 数据与日志结果一致
  • 修复版本和证据已记录
08

从根因复盘走向预防

不止归咎个人
从缺陷到改进
触发现象重复退款
技术根因幂等校验缺失
流程根因评审未覆盖重试
预防动作模板、测试与监控

五问示例

  1. 为什么重复退款?重复回调被再次执行。
  2. 为什么会再次执行?服务没有持久化幂等结果。
  3. 为什么没有设计?接口评审没有异常重试项。
  4. 为什么评审漏掉?模板只覆盖正常流程。
  5. 如何预防?增加幂等设计清单、自动化用例与重复退款告警。

把单个缺陷沉淀成可复用模式

模式字段要记录什么
症状用户实际看到的错误,不夹带原因猜测
成因开发确认后的技术或流程原因;未确认时明确标注
易发场景重构、重试、并发、权限变更等触发条件
回归检查点下一版本可以直接执行的验证动作
关联证据缺陷编号、修复版本和验证结果

AI 可以辅助复盘,但不能替开发确认根因

  • AI 适合聚类相似缺陷、起草 5 Whys 和识别可能的可拦截环节。
  • 推测根因必须标注待确认,与开发核对后才进入正式报告。
  • 改进项需要负责人、期限和验收标准,不能停在“加强自测”。
  • 验证有效的模式回填回归检查点库,下个版本继续检查是否复发。
09

完成一次缺陷闭环练习

从发现到预防

练习:支付成功但订单仍待支付

  1. 写一条“当……时,……”格式的缺陷标题。
  2. 补齐环境、前置、步骤、实际、预期和证据。
  3. 判断严重程度与优先级并说明理由。
  4. 列出页面、请求、日志和数据的取证项。
  5. 设计原缺陷、同类场景和相邻功能回归。
  6. 用五问法给出可验证的预防动作。

可复现

  • 起始状态明确
  • 步骤最小
  • 预期有依据
  • 证据同源

可推进

  • 等级有理由
  • 归属有证据
  • 状态有责任人
  • 延期有风险接受

可改进

  • 回归有范围
  • 根因不猜测
  • 措施可验证
  • 结论可追溯