返回需求评审与测试方案异常确认的最短闭环
用标识串起一次支付异常 两个维度分别回答不同问题
典型缺陷流转 从现象逐层收窄责任范围 从缺陷到改进
Main Track / Tutorial 05
Bug 管理与缺陷分析教程
让一个异常从“看起来不对”变成可复现、可定位、可回归、能推动质量改进的工程事实。
9 个章节交易缺陷闭环报告 + 定位 + 复盘
01
先判断它是不是缺陷
事实对照标准缺陷来自实际与预期的差异
当退款页面提示“成功”,但退款单仍为处理中,你需要先找到明确预期,再确认环境、数据和操作是否有效。没有依据时先记录疑问,不要把个人偏好直接写成 Bug。
观察现象页面或数据异常
核对依据需求与验收标准
排除干扰环境、数据、操作
稳定复现记录最小步骤
先区分问题来源
| 类型 | 商城示例 | 处理方式 |
|---|---|---|
| 产品问题 | 退款规则前后矛盾 | 回到需求结论,补齐验收标准 |
| 代码缺陷 | 重复回调导致重复退款 | 提交缺陷并定位幂等处理 |
| 数据问题 | 测试商品没有库存 | 修复或重建可控测试数据 |
| 环境问题 | 支付沙箱不可达 | 记录阻塞,交由环境负责人处理 |
02
写一份别人能复现的缺陷报告
信息完整但不堆砌重复支付缺陷报告
| 字段 | 示例 | 写法 |
|---|---|---|
| 标题 | 当支付按钮连续点击时,系统生成两笔支付单 | 条件 + 动作 + 错误结果 |
| 环境 | 测试环境 / Chrome / 会员账号 A | 版本、设备、账号类型 |
| 前置 | 订单待支付,应付 100 元 | 可恢复到同一初始状态 |
| 步骤 | 进入收银台,连续点击支付两次 | 编号且只保留必要动作 |
| 实际 | 出现两笔支付单,均为处理中 | 只陈述观察事实 |
| 预期 | 仅一笔有效支付单,重复请求返回同一结果 | 对应确认过的规则 |
| 证据 | 时间、订单号、请求、日志、录屏 | 支持复现和定位 |
可执行步骤
- 从干净数据开始再复现一次。
- 压缩到仍能触发问题的最少步骤。
- 用“当……时,……”写标题。
- 分别记录预期和实际,不写原因猜测。
- 附上可搜索的业务 ID 和时间。
03
建立页面、请求、日志和数据证据链
同一次复现页面错误提示与时间
请求HTTP 与业务码
日志request_id / trace_id
数据订单与支付记录
响应证据怎么解释
支付接口返回 HTTP 200,只能说明服务正常处理了请求;还要检查业务码、支付单状态和是否发生扣款。HTTP 成功与业务成功必须分开记录。
分享证据前移除令牌、密码、银行卡号和个人信息;不要在缺陷标题中暴露敏感数据。
04
分清严重程度与修复优先级
影响和顺序不是一回事严重程度
问题造成多大用户、业务、资金或数据影响。
修复优先级
结合影响、发布窗口和替代方案决定多快处理。
商城缺陷分级
| 问题 | 严重程度 | 优先级与理由 |
|---|---|---|
| 重复扣款 | 致命 | P0:资金损失,阻断发布 |
| 支付成功订单未更新 | 严重 | P0:无法履约且需要补偿 |
| 退款记录排序错误 | 一般 | P1:影响客服处理效率 |
| 按钮文字轻微偏移 | 提示 | P2:不阻断核心流程 |
等级争议要回到用户影响、数据影响、发生范围、恢复成本和发布窗口,不用职位或情绪决定。
05
让缺陷在生命周期中有明确责任
状态不是进度装饰新建证据完整
确认归属与优先级
修复说明原因和影响
回归原问题与关联范围
关闭证据可追溯
退回时写清原因
- 无法复现:补充缺失环境和数据,并约定再次验证。
- 重复缺陷:关联原缺陷,保留新场景证据。
- 按设计:引用已确认规则;若规则不合理转产品问题。
- 延期处理:记录风险接受人、目标版本和临时措施。
06
按层定位,不把猜测当结论
先证据后归因01页面层
交互、提示、展示
02接口层
参数、HTTP、业务码
03服务层
日志、调用、异常
04数据层
订单、支付、退款
退款失败的定位顺序
- 确认页面是否发出退款请求。
- 检查金额、订单号与幂等键。
- 区分 HTTP 失败和业务拒绝。
- 用 request_id 查服务日志与下游响应。
- 核对订单、支付单、退款单和消息。
- 基于证据标记产品、代码、数据或环境问题。
定位型用例
- 当订单不属于当前用户时,退款请求被拒绝且订单数据不变。
- 当相同幂等键重复提交时,只存在一笔有效退款单。
- 当支付渠道超时时,退款保持可恢复状态并可被补偿任务处理。
07
回归不只重跑原步骤
围绕修改影响面确认修复
使用原环境与原数据条件,确认重复支付不再发生。
扩展同类
覆盖刷新、双端操作、接口重放和回调重复。
检查相邻
回归正常支付、取消支付、退款与订单查询。
关闭前检查
- 原缺陷稳定通过
- 相邻路径没有回归
- 数据与日志结果一致
- 修复版本和证据已记录
08
从根因复盘走向预防
不止归咎个人触发现象重复退款
技术根因幂等校验缺失
流程根因评审未覆盖重试
预防动作模板、测试与监控
五问示例
- 为什么重复退款?重复回调被再次执行。
- 为什么会再次执行?服务没有持久化幂等结果。
- 为什么没有设计?接口评审没有异常重试项。
- 为什么评审漏掉?模板只覆盖正常流程。
- 如何预防?增加幂等设计清单、自动化用例与重复退款告警。
把单个缺陷沉淀成可复用模式
| 模式字段 | 要记录什么 |
|---|---|
| 症状 | 用户实际看到的错误,不夹带原因猜测 |
| 成因 | 开发确认后的技术或流程原因;未确认时明确标注 |
| 易发场景 | 重构、重试、并发、权限变更等触发条件 |
| 回归检查点 | 下一版本可以直接执行的验证动作 |
| 关联证据 | 缺陷编号、修复版本和验证结果 |
AI 可以辅助复盘,但不能替开发确认根因
- AI 适合聚类相似缺陷、起草 5 Whys 和识别可能的可拦截环节。
- 推测根因必须标注待确认,与开发核对后才进入正式报告。
- 改进项需要负责人、期限和验收标准,不能停在“加强自测”。
- 验证有效的模式回填回归检查点库,下个版本继续检查是否复发。
09
完成一次缺陷闭环练习
从发现到预防练习:支付成功但订单仍待支付
- 写一条“当……时,……”格式的缺陷标题。
- 补齐环境、前置、步骤、实际、预期和证据。
- 判断严重程度与优先级并说明理由。
- 列出页面、请求、日志和数据的取证项。
- 设计原缺陷、同类场景和相邻功能回归。
- 用五问法给出可验证的预防动作。
可复现
- 起始状态明确
- 步骤最小
- 预期有依据
- 证据同源
可推进
- 等级有理由
- 归属有证据
- 状态有责任人
- 延期有风险接受
可改进
- 回归有范围
- 根因不猜测
- 措施可验证
- 结论可追溯