测试结果汇报里出现“通过率 92%”和“通过率 78%”两个数字,往往并非测试质量突然变化,而是统计口径不同:分母是否包含未执行用例、失败按哪次执行计数、阻塞是否算进失败,都会改变结果。本文围绕测试运行过程,给出统一通过率、失败数与阻塞数口径的方法,包括统计单元、状态字典、计算公式和一份可复算的示例。
要点总览(TL;DR)
- 统一口径先固定三件事:统计单元(建议以用例在轮次内的最新执行记录计数)、时间窗(按轮次起止或明确截止时刻)、范围(纳入的测试类型与优先级)。
- 通过率以有效执行用例数为分母,即通过数加失败数加阻塞数,跳过与未执行从分母排除;分母为零时标注“不适用”,不记为0%或100%。
- 失败数与阻塞数按最新一次执行状态计数,重测通过后不再计入失败数;阻塞指无法执行,失败指已执行但结果不符,两者分列披露。
- 用同一份原始执行记录做数量校验(五类状态之和等于计划内用例总数)和公式校验,口径变更时按新旧两版各算一次并留档。
- 通过率需结合失败数、阻塞数、未执行数一起解读,跨轮次、跨团队比较前先对齐统计单元、时间窗与状态字典。
统一口径要解决哪些误读问题
统一口径的目标,是让不同人看到同一个数字时,能还原出它统计了什么、排除了什么、截止到哪一刻。通过率、失败数、阻塞数分别回答不同问题,混在一起讨论就容易各说各话。
- 通过率回答“已执行的用例里,结果符合预期的比例是多少”,用于观察当前测试轮次的执行质量。
- 失败数回答“有多少条用例执行后结果不符合预期”,是后续提交缺陷、安排修复的输入。
- 阻塞数回答“有多少条用例因环境、依赖或数据问题无法执行”,反映测试推进的受阻程度。
误读通常来自三个地方。一是分母不一致:有人用全部用例数作分母,有人只算已执行用例,未执行和跳过的处理方式也不同。二是状态定义不同:同一条用例因环境问题没跑起来,有人记为阻塞,有人记为失败,还有人直接不计入统计。三是时间窗不同:有人按执行时间截取当天数据,有人按测试轮次截止时间汇总,跨天重测的结果归属就出现分歧。
本文的范围限定在测试运行过程的统计:如何定义、采集和计算上述三类指标。缺陷提交后的修复闭环、验证跟踪,以及测试报告层面的整体质量评估,属于另外的管理环节,本文不展开。
指标定义与统计范围怎么划定
口径统一的第一步是把“统计什么”写死。建议在口径说明开头用一张表固定统计单元、时间窗、范围和单位,后续所有公式都以此为前提。
| 要素 | 建议约定 | 需要写明的细节 |
|---|---|---|
| 统计单元 | 以“用例在某一轮次内的最新执行记录”为一条计数单位 | 明确一条用例多次执行只计一次,避免按执行次数累加 |
| 时间窗 | 按测试轮次的起止时间界定,轮次内以最新执行时间为准 | 写明跨轮次重测归属哪一轮;按执行时间统计时需注明截止时刻 |
| 范围 | 纳入本轮计划内的功能测试、回归测试用例 | 列出纳入的测试类型与优先级;性能、兼容性等专项若单独统计需注明 |
| 单位 | 通过率为百分比,保留一位小数;失败数、阻塞数为“条” | 写明四舍五入规则,避免同一数据算出两个百分比 |
统计单元的选择直接影响结果。以用例为单元,适合回答“计划内的用例覆盖得怎么样”;以执行记录为单元,适合分析执行工作量,但同一用例重测多次会被重复计数;以测试轮次为单元,适合跨轮次趋势对比。三类指标建议统一采用“用例在轮次内的最新执行记录”作为计数单位,执行次数另行作为工作量指标,不混入通过率。
范围边界要具体到可筛选的条件,例如“本轮测试计划内、优先级为 P0 至 P2 的功能与回归用例”。范围一旦确定,分子分母都从同一范围内取数,不能分子算全部用例、分母只算部分用例。
状态判定与数据口径怎么写清楚
状态字典是口径可核验的基础。每条执行记录最终只能落入一个状态,判定条件要写到别人拿着字典能复现的程度。
| 状态 | 判定条件 | 是否进入通过率分母 |
|---|---|---|
| 通过 | 用例已执行,实际结果与预期结果一致 | 是,计入分子 |
| 失败 | 用例已执行,实际结果与预期结果不一致 | 是,不计入分子 |
| 阻塞 | 用例因环境不可用、依赖未就绪或测试数据缺失而无法执行 | 是,不计入分子 |
| 跳过 | 本轮明确不执行的用例,如功能未上线、需求变更后暂不验证 | 否,从分母排除 |
| 未执行 | 轮次结束时仍未产生任何执行记录 | 否,从分母排除,单独披露数量 |
阻塞与失败的区分标准要单独强调:失败的前提是用例确实执行了并得到不符合预期的结果;阻塞的前提是无法执行。把环境问题记成失败,会虚增失败数并误导缺陷提交;把真实失败记成阻塞,则会掩盖质量问题。建议在状态字典中写明判定责任人,例如由执行人初判、测试负责人复核争议记录。
多次执行时,以轮次内最新一次执行状态为准,历史执行记录保留用于追溯但不参与计数。重测通过后,该用例状态更新为通过,不再同时计入失败数。数据来源需写明系统与字段,例如执行记录中的用例编号、轮次、执行时间、执行状态、执行人;缺失状态字段的记录按“未执行”处理并在口径说明中注明,不能默认记为通过或失败。
当团队在工具中管理测试执行时,状态字段的规范程度决定了口径能否落地。ONES 测试管理支持测试计划的规划和执行,并支持用例分配执行人,测试情况概览可查看测试计划的进度和通过率;其通过率的具体计算口径需在实施时约定,正好对应本文建议的自定义口径说明。用例属性支持自定义和筛选,便于按测试类型、优先级圈定统计范围。
通过率、失败数、阻塞数的计算步骤
三类指标建议使用以下公式,分子分母均取自同一时间窗、同一范围内的最新执行记录。
- 通过率 = 通过用例数 ÷ 有效执行用例数 × 100%。有效执行用例数 = 通过数 + 失败数 + 阻塞数,即分母排除跳过与未执行。
- 失败数 = 最新执行状态为失败的用例条数,按条计数,不按缺陷数计数。
- 阻塞数 = 最新执行状态为阻塞的用例条数,与失败数并列披露,不合并。
分母为零时需要单独约定:当有效执行用例数为零(全部跳过或全部未执行),通过率标注为“不适用”,不记为 0% 或 100%。当全部有效执行用例均为阻塞时,通过率为 0%,但必须同时标注阻塞数为全部有效执行数,避免被读成“执行了但全部失败”。
重测与多次执行的去重规则是:同一用例在同一轮次内只保留最新一条执行状态参与计数;跨轮次重测归属新轮次,原轮次数据不回溯修改,除非口径说明中明确约定回溯并记录变更。计算流程建议固定为五步:
- 确定轮次与时间窗,导出该轮次全部计划内用例及其最新执行记录。
- 按范围条件筛选测试类型与优先级,剔除范围外用例。
- 按状态字典逐条判定状态,争议记录由复核人确认。
- 分别统计通过、失败、阻塞、跳过、未执行的数量,校验五类之和等于计划内用例总数。
- 代入公式计算通过率,输出失败数、阻塞数及未执行数,并附口径版本号。
一个可复算的统计示例
以下为演示数据,用于说明口径差异,不代表任何真实项目。某轮次计划内用例共 100 条,执行记录汇总如下:通过 70 条,失败 12 条,阻塞 8 条,跳过 4 条,未执行 6 条。其中 3 条失败用例重测后通过,最新状态已更新为通过。
| 口径 | 分母 | 通过率 | 失败数 | 阻塞数 |
|---|---|---|---|---|
| 口径 A:全部计划用例为分母 | 100 | 70.0% | 12 | 8 |
| 口径 B:有效执行用例为分母(本文建议) | 70 + 12 + 8 = 90 | 77.8% | 12 | 8 |
| 口径 C:未去重、按执行次数累计 | 含重测记录,分母大于 90 | 低于口径 B | 15(含已重测通过的 3 条) | 8 |
复算核对分两步。第一步做数量校验:70 + 12 + 8 + 4 + 6 = 100,与计划内用例总数一致;有效执行数 90,加上跳过 4、未执行 6,同样等于 100。第二步做公式校验:70 ÷ 90 = 77.8%,与报表数字一致;失败数 12 条对应 12 条用例,不包含已重测通过的 3 条。若报表显示失败数为 15,说明未执行去重规则,应回到原始执行记录按最新状态重新统计。
这个示例也说明口径 A 与口径 B 的差距来自分母:口径 A 把跳过和未执行算进了分母,适合回答“计划完成度”,不适合回答“已执行部分的质量”。两类问题应使用不同指标并分别命名,避免同一个“通过率”承担两种含义。
结果怎么解读,口径有哪些限制
通过率不能单独作为质量结论。77.8% 的通过率配合 8 条阻塞,说明有相当一部分用例尚未得到有效验证;若阻塞集中在核心链路,实际风险高于数字呈现的水平。解读时应把通过率、失败数、阻塞数、未执行数放在一起看,并注明统计范围与轮次。
跨轮次、跨团队比较需要满足前提:统计单元、时间窗、状态字典和范围条件一致,且口径版本相同。轮次之间用例集变化较大时,通过率的变化可能来自用例构成而非质量变化,此时应同时披露新增与移除的用例数量。跨团队比较前先对齐状态判定标准,尤其是阻塞与失败的边界。
口径本身需要版本管理。建议把口径说明作为受控文档,记录版本号、变更内容、变更原因和生效时间;口径调整后,用同一份原始执行记录按新旧两版各算一次,核对差异并留档。常见误读及纠正方式包括:把未执行算入分母导致通过率偏低,纠正方式是改用有效执行用例作分母并单独披露未执行数;把阻塞并入失败导致失败数虚高,纠正方式是分列两个指标;用某一时点的看板数字代替轮次结论,纠正方式是注明截止时刻并按轮次截止时间复算。
在工具层面,口径落地依赖执行记录字段的规范与报表模板的固定。ONES 测试管理支持自定义组装测试报告模板,可将约定的指标与范围固化到报告中;未通过的用例可快速创建缺陷任务并在测试与研发团队间流转,便于把失败数对应到后续处理。报表中通过率等指标的具体计算方式仍需按本文方法在实施时确认并写入口径说明,确保看板数字与口径文档一致。
常见问题
团队里已经有两套通过率数字,先从哪里开始对齐?
先对齐分母,再对齐状态。把两套数字背后的原始执行记录各取一份,逐条核对同一条用例在两边的状态是否一致,重点看三类差异:未执行和跳过是否被算进分母、环境问题被记成失败还是阻塞、重测结果是否覆盖了原状态。分母和状态对齐后,通过率差异通常能解释清楚。统计单元与时间窗的约定可以随后补进口径说明,避免下次再出现分歧。
用例重测多次,失败数应该按哪一次算?
按轮次内最新一次执行状态计数,一条用例只计一次。重测通过后状态更新为通过,不再同时计入失败数;历史执行记录保留用于追溯,但不参与指标计算。如果业务上需要观察重测次数或返工情况,可以另设“重测次数”作为工作量指标单独统计,不混入通过率与失败数。跨轮次重测归属新轮次,原轮次数据不回溯修改,除非口径说明中明确约定回溯并记录变更。
阻塞用例很多时,通过率还有参考价值吗?
有参考价值,但必须和阻塞数一起看。当全部有效执行用例均为阻塞时,通过率为0%,此时要同时标注阻塞数等于有效执行数,避免被读成“执行了但全部失败”。阻塞集中在核心链路时,实际风险高于通过率呈现的水平。建议在报表中把通过率、失败数、阻塞数、未执行数并列展示,并注明统计范围与轮次,让读者能判断已执行部分的覆盖程度。
口径调整后,历史报表数字要不要重算?
建议保留历史数字并标注口径版本,同时用同一份原始执行记录按新旧两版各算一次,把差异和原因记录在口径说明中。是否回溯重算取决于用途:用于跨轮次趋势对比时,需要统一到同一版本口径;用于还原当时结论时,保留原版本数字更合适。无论哪种方式,口径说明都应记录版本号、变更内容、变更原因和生效时间,避免后续读者把不同版本的通过率直接比较。
在工具里落地这套口径,需要先确认哪些配置?
先确认执行状态字段的可选值与判定规则能否覆盖通过、失败、阻塞、跳过、未执行五类,再确认统计范围能否按测试类型、优先级筛选。ONES 测试管理支持自定义用例属性且用例属性支持筛选,测试情况概览可查看测试计划的进度和通过率,支持自定义组装测试报告模板;通过率等指标的具体计算方式需在实施时按本文方法约定并写入口径说明,确保看板数字与口径文档一致。
