返回质量体系与测试架构模块
Quality Architecture / Tutorial 22

测试报告、效能度量与质量复盘教程

把前一篇的线上证据转成发布判断和改进动作:不是证明测试做了很多,而是说明风险是否可接受、机制是否有效。

9 个章节报告 + 指标 + 复盘反无意义 KPI
01

测试报告首先服务决策

结论先于数字

从数据到决策的链路

版本变化优惠与支付回调
风险与范围重复扣款、超卖
验证证据用例、缺陷、指标
剩余风险未测与已知问题
发布建议阻断 / 有条件 / 允许

一页报告必须回答

  • 测的是哪个版本、环境和时间窗口?
  • 最重要的业务风险验证结果如何?
  • 哪些内容失败、阻塞、未执行,为什么?
  • 遗留问题影响谁,是否有规避、监控和负责人?
  • 最终建议是什么,依据是什么?
“执行 500 条、通过率 98%”不是发布结论。若失败的 2% 包含重复扣款,就必须阻断;若是低风险文案,可在责任明确后有条件发布。
02

用多维覆盖率寻找盲区

覆盖不只一个百分比

五类覆盖率

维度回答的问题商城例子
需求覆盖高风险验收规则是否有验证证据重复支付、超卖、退款失败规则覆盖
风险覆盖已识别风险中被验证的比例P0 风险必须逐项有结论
层级覆盖单元、接口、集成、E2E 是否分工合理金额规则不靠大量 UI 用例穷举
代码覆盖哪些代码被执行辅助发现盲区,不能证明断言有效
环境覆盖浏览器、设备、配置、依赖组合只覆盖风险相关组合
风险覆盖率示意
risk_coverage = 已有有效验证证据的风险数 / 已识别风险数
P0_risk_coverage = 12 / 12 = 100%
P1_risk_coverage = 21 / 24 = 87.5%
# 同时列出未覆盖的 3 项,不只展示百分比

用例:当新增“取消后自动退款”规则时,报告应显示退款风险覆盖变化

  • 把退款金额、重复回调、超时补偿列为独立风险。
  • 关联接口、消息、E2E 和对账用例。
  • 对未验证的第三方超时场景标记未覆盖,而不是默认通过。
03

按分布与根因读懂缺陷

数量只是入口

按发现阶段分析缺陷

阶段典型问题改进方向
需求阶段规则冲突、边界遗漏加强评审和示例化验收
开发阶段状态机、幂等、异常处理补单元与契约测试
测试阶段跨服务一致性、环境差异补集成和故障演练
线上阶段长尾流量、监控盲区补可观测性、灰度和回归

至少保留这些维度

  • 模块、严重度、发现阶段、引入版本和发现手段。
  • 需求、设计、编码、数据、配置、环境等根因。
  • 用户影响、资金影响、逃逸原因和修复时长。
  • 重复缺陷与同源缺陷聚类,避免把一个根因算成十项成绩。
缺陷多不一定测试有效,也可能代表版本质量差;缺陷少不一定质量好,也可能是覆盖不足。必须结合风险、变更量、线上逃逸与历史趋势解释。
04

衡量测试是否更早发现重要问题

有效性而非忙碌度

有效性指标

指标定义使用边界
缺陷逃逸率线上发现缺陷 / 全部有效缺陷按严重度和发布频率看趋势
阶段移除效率某阶段发现 / 进入该阶段的问题用于发现防线薄弱处,不评价个人
高风险命中率发现高风险问题的用例 / 高风险用例低值时审查用例设计和风险判断
误报率无产品问题的失败 / 全部失败拆分脚本、环境、数据和产品原因
反馈时间变更到可靠结果的时间同时保证结果可信,不能只求快

缺陷逃逸要同时看数量、严重度与趋势

  • 同样是一条线上缺陷,资金错误与文案错误不能等重解释。
  • 团队可以给严重度设置内部权重,但权重与分级阈值必须书面化并保持跨版本一致。
  • 加权结果用于识别趋势和突变,不用于评价个人,也不应脱离样本量单独发布。
  • 线上缺陷必须正确标记发现环境,否则逃逸统计会系统性漏数。

用例:当自动化通过但线上出现重复退款时,应反查哪道防线失效

  1. 确认该风险是否在测试策略中被识别。
  2. 检查是否有重复消息和并发退款用例。
  3. 检查断言是否只看状态码而未核对退款流水数量。
  4. 把逃逸原因归到机制,不归咎某个人。
05

计算自动化的真实收益

维护成本必须入账
收益模型
saved_hours = manual_duration * useful_runs - triage_hours
net_value = saved_hours * hourly_cost - build_cost - maintenance_cost
reliable_rate = trusted_results / all_runs

# 失败无人处理、长期跳过的用例不计入有效覆盖

不要只看自动化数量

观察项好信号坏信号
稳定性失败可复现且归因清楚Flaky 导致团队默认重跑
反馈速度P0 回归几分钟给出可靠结果全量套件数小时且无人等待
维护投入变更影响集中、可预测每次 UI 微调大面积修脚本
缺陷价值拦截过真实高风险回归只验证页面能打开
使用频率在 PR、发布中真正参与决策只在汇报前运行
06

构建能下钻的质量看板

趋势、分母、上下文

从数据到决策的链路

业务结果成功率与线上事故
风险防护P0 覆盖与门禁
交付效率反馈与修复时长
资产健康Flaky 与维护成本
下钻证据版本、缺陷、用例

看板验收用例

  • 当发布日期筛选变化时,所有图表使用同一时间范围。
  • 当执行重跑时,同一次结果不会重复计数。
  • 当用例被跳过时,覆盖率分母和原因可见。
  • 当点击线上缺陷时,可下钻到版本、风险、遗漏用例和复盘。
  • 当数据源延迟时,看板显示更新时间,不展示伪实时结果。
07

从事故时间线走向系统改进

复盘不追责

线上支付问题复盘时间线

发现

支付告警与投诉

止损

关闭重试开关

恢复

补偿订单并对账

防复发

幂等约束 + 回归

质量复盘五问

  1. 发生了什么,用户与业务影响是什么?
  2. 为什么现有测试、门禁和告警没有更早阻止或发现?
  3. 哪些事实来自日志、Trace、数据对账,哪些仍是推测?
  4. 修复当前问题后,要补哪条需求规则、用例、监控或恢复机制?
  5. 改进项由谁在何时完成,怎样验证确实生效?

用例:当支付回调重复导致重复退款时,复盘应落到防复发

补充 eventId 幂等约束、重复消息集成用例、退款流水唯一性告警和上线对账,而不是只写“开发加强自测、测试认真回归”。

08

拒绝会驱动错误行为的 KPI

指标用于学习

反无意义 KPI

不要这样考核会导致什么更好的问法
每人每月发现 Bug 数拆分缺陷、对抗协作高风险问题是否更早被发现
自动化用例越多越好重复、低价值、无人维护哪些回归被稳定缩短或拦截
通过率必须 100%隐藏跳过和已知失败失败是否被解释并有决策
代码覆盖率越高越好为数字写无断言测试关键风险是否有有效断言
线上零缺陷压制上报、漏记问题影响是否下降、恢复是否更快
好指标帮助团队提出问题,坏 KPI 让人优化数字。任何指标都应有清楚分母、数据来源、使用目的和配套行动,不用于脱离上下文评价个人。
09

交付一份可行动的质量复盘

练习与检查清单

练习

  1. 为一次商城发布写一页决策报告,列出三项最高风险。
  2. 计算风险覆盖、缺陷逃逸、自动化可靠率与反馈时间。
  3. 选一个线上支付问题,画出从发生到恢复的证据时间线。
  4. 计算一组自动化用例的净收益,说明是否继续维护。
  5. 识别现有看板中两个可能被误用的 KPI,并改写为问题导向指标。
  6. 输出三项有负责人、期限和验收方式的改进动作。

报告

  • 版本范围清楚
  • 风险结论优先
  • 未测项可见
  • 建议可执行

度量

  • 口径和分母明确
  • 趋势可下钻
  • 成本已计入
  • 不评价个人

复盘

  • 事实与推测分开
  • 系统根因明确
  • 防复发可验证
  • 负责人和期限明确