缺陷重复发生率衡量统计时间窗内被判定为重复的缺陷占同期有效缺陷的比例,反映缺陷录入与查重环节的质量。计算前要先固定“重复”的判定口径、去重对象和分母范围,再按公式计算并抽样核验。这个指标适合用于缺陷流程治理和测试与研发协作复盘,需要与缺陷密度、回归缺陷率等指标联合解读,不宜单独当作质量绩效结论。
要点总览(TL;DR)
- 缺陷重复发生率 = 统计窗内被判定为重复的缺陷数 ÷ 同期有效缺陷总数 × 100%,计算前先固定重复判定标准、去重对象和分母范围。
- 重复判定建议同时满足同一根因、同一现象、同一模块;分子按缺陷单计还是按根因计,回答的问题不同,口径中要写明。
- 分母要说明是否排除无效、撤销缺陷和外部提交;时间归属按创建时间还是关闭时间,选定后各期保持一致。
- 分母为零时标注“无有效缺陷”,不写 0%;分组样本过小时标注“样本不足”,只呈现绝对数。
- 结果需抽样复核标记准确性与漏标情况,并与缺陷密度、回归缺陷率联合解读,不宜单独作为绩效依据。
这个指标要回答什么评估问题
缺陷重复发生率回答的是一个流程问题:在缺陷从发现到录入系统的环节中,有多少缺陷在提交时没有被识别出与已有缺陷相同,从而形成了重复记录。它评估的对象是缺陷录入与查重环节的质量,包括提交人是否先检索已有缺陷、测试与研发之间是否有统一的查重约定、缺陷单上的关联关系是否被及时维护。
这个指标适合用在两类场景。第一类是缺陷流程治理:当团队发现缺陷列表中存在大量内容相近的记录,处理人需要反复合并、关闭重复单,就可以用这个指标量化问题的规模,并观察治理动作前后的变化。第二类是测试与研发协作复盘:在迭代或版本复盘时,用重复发生率说明提交环节的沟通成本,讨论是否需要在提缺陷前增加检索步骤、是否需要在评审中统一重复判定标准。
需要明确的是,这个指标不承担跨团队质量排名或绩效评价功能。不同团队负责的模块复杂度、缺陷提交人构成、历史缺陷积累量都不同,重复发生率高可能来自模块本身耦合度高、缺陷现象相似,也可能来自新成员较多、对已有缺陷不熟悉。把它直接用于团队横向比较,容易把流程问题误读为人的问题。指标的价值在于定位查重环节的改进空间,而非给出谁好谁坏的结论。
适用与不适用的场景可以归纳如下:
- 适用:评估缺陷提交前的检索习惯是否落实;观察缺陷合并、关闭重复单的工作量变化;定位哪些模块或版本更容易产生重复提交;为缺陷模板和查重规则的调整提供依据。
- 不适用:跨团队质量排名;个人绩效评价;单独判断产品质量好坏;替代根因分析说明缺陷为何反复出现。
指标定义、分子分母与统计范围
缺陷重复发生率的定义是:在统计时间窗内,被判定为重复的缺陷数占同期有效缺陷总数的比例。公式为:重复缺陷数 ÷ 有效缺陷总数 × 100%。要让这个结果可复算,必须先固定三件事:重复怎么判定、分子数什么、分母数什么。
重复缺陷的判定标准建议至少明确三条:同一根因、同一现象、同一模块。同一根因指两个缺陷由同一段代码或同一设计缺陷引起;同一现象指用户或测试观察到的表现一致;同一模块指缺陷落在同一功能范围内。三条同时满足时判定为重复最为稳妥。判定由谁做、是否需要第二人复核,也应写入口径文档。常见做法是由缺陷处理人或模块负责人判定,争议项由测试负责人复核。
分子是统计窗内被标记为重复的缺陷数。这里要区分两种去重对象:按缺陷单去重,即每一张被标记为重复的缺陷单计一次;按根因去重,即同一根因下的多张重复单只计一次。按缺陷单统计反映录入环节的重复提交量,按根因统计反映重复问题的集中程度,两者回答的问题不同,口径中要写明采用哪一种。
分母是同期有效缺陷总数。有效缺陷的范围需要明确说明:是否包含无效缺陷、撤销缺陷和外部提交的缺陷。无效缺陷通常指经确认并非缺陷的记录,撤销缺陷指提交后主动撤回的记录,外部提交指来自客户或线上反馈渠道的缺陷。建议分母只计入经确认有效的缺陷,并在口径文档中列明排除项。不同口径下的结果不可直接横向比较。
统计时间窗按周或按月设定,并保持各期一致。时间归属要明确按创建时间还是关闭时间:按创建时间归属,反映的是提交环节的重复情况,适合评估查重习惯;按关闭时间归属,反映的是处理完成时被认定为重复的情况,适合评估处理环节的合并工作量。两种归属方式的结果含义不同,选定后不要在同一份报表中混用。
| 口径项 | 需要固定的内容 | 常见选择 |
|---|---|---|
| 重复判定 | 判定条件、判定人、是否复核 | 同一根因+同一现象+同一模块,处理人判定,争议项复核 |
| 分子 | 去重对象 | 按缺陷单计,或按根因计 |
| 分母 | 有效缺陷范围 | 排除无效、撤销缺陷,外部提交按需说明 |
| 时间窗 | 周期与归属字段 | 按月,按创建时间或关闭时间 |
| 单位 | 结果呈现 | 百分比,保留一位小数 |
数据从哪里取、口径怎么统一
计算所需的数据主要来自缺陷单本身。第一类是重复标记与关联关系字段:缺陷单上是否有“重复”标记,是否记录了关联到已有缺陷的关系。第二类是状态流转记录与时间字段:创建时间、关闭时间、状态变更历史,用于确定时间归属和排除无效、撤销缺陷。第三类是分组字段:模块、团队、版本,用于按维度拆分统计。
跨项目取数时,字段命名不一致是常见问题。不同项目可能把重复标记叫“重复”“Duplicate”“关联缺陷”,把模块字段叫“组件”“功能模块”。处理方法是先建立字段映射表,把各项目的源字段映射到统一的分析字段,再在映射后的数据上计算。映射表要记录源字段名、所属项目、映射目标字段和转换规则,便于后续复核。
| 分析字段 | 可能的源字段 | 转换规则 |
|---|---|---|
| 是否重复 | 重复标记、关联类型为重复 | 任一来源为是即记为重复 |
| 有效缺陷 | 状态、关闭原因 | 排除无效、撤销状态 |
| 创建时间 | 创建时间、提交时间 | 统一时区后取创建时间 |
| 关闭时间 | 完成时间、关闭时间 | 取首次进入关闭状态的时间 |
| 模块 | 组件、功能模块 | 按映射表归并到统一模块名 |
缺失值与未标记缺陷的处理规则要提前写明。重复标记为空时,不能默认视为非重复,也不能默认视为重复,建议单独归为“未标记”并统计其占比;未标记占比过高时,说明标记习惯尚未建立,此时计算出的重复发生率参考价值有限。关联关系存在但标记缺失的记录,可按关联关系补判,并在口径文档中注明补判规则。状态字段缺失的记录,建议从分母中排除并单独记录数量。
在工具承载层面,缺陷单的重复标记、关联关系与状态流转需要有稳定的记录位置。ONES Project 适配缺陷管理等场景,支持缺陷跟踪管理并可统计缺陷状态分布;ONES TestCase 支持未通过的用例快速创建缺陷任务,缺陷任务在测试与研发团队间流转。把重复标记和关联关系维护在缺陷单上,状态流转记录保留在系统中,后续取数与复核就有据可查。
计算步骤与分母为零的处理
计算按以下步骤执行,每一步都产出可检查的中间结果:
- 取数:按统计时间窗和归属字段,导出缺陷单的编号、重复标记、关联关系、状态、创建时间、关闭时间、模块、团队、版本。
- 清洗:按字段映射表统一字段名,统一时区,排除测试数据与明显误录记录,记录排除数量。
- 标记识别:识别重复标记与关联关系,按口径确定分子范围;标记为空的记录归入“未标记”并统计占比。
- 确定分母:按有效缺陷范围筛选,排除无效、撤销缺陷,记录排除数量。
- 分组汇总:按模块、团队、版本等维度分组,分别汇总分子与分母。
- 计算比率:重复缺陷数 ÷ 有效缺陷总数 × 100%,保留一位小数。
- 记录口径:在结果旁注明判定标准、去重对象、分母范围、时间归属,便于复算。
分母为零或样本过小时,不建议直接呈现百分比。分母为零时,结果标注为“无有效缺陷”,不写 0%。样本过小时,建议设定最小样本量,例如分组统计时有效缺陷数低于 30 的分组标注“样本不足”,只呈现绝对数不呈现比率。最小样本量没有通用标准,可按团队缺陷量级自行设定,关键是各期保持一致,并在报表中注明。
按模块、团队、版本分组时,同样适用最小样本要求。分组越细,单组样本越小,比率波动越大。建议先看整体比率,再看样本量足够的分组,对样本不足的分组只做数量观察,不据此下结论。
一个可复算的例子
以下为演示情景,数字用于说明计算过程。某团队某月新建缺陷 120 个,其中经确认有效的缺陷 100 个,无效缺陷 15 个,撤销缺陷 5 个;有效缺陷中被标记为重复的缺陷 12 个,另有 3 个有效缺陷标记为空。
按“排除无效与撤销、按缺陷单计、按创建时间归属”的口径计算:分子为 12,分母为 100,重复发生率为 12 ÷ 100 × 100% = 12.0%。未标记的 3 个缺陷不计入分子,但其占比为 3%,需要在结果旁注明。
同一批数据换口径后结果会变化。若分母改为全部新建缺陷 120 个,则结果为 12 ÷ 120 × 100% = 10.0%。若按根因去重,假设 12 张重复单对应 5 个根因,则按根因计的比率为 5 ÷ 100 × 100% = 5.0%。若把 3 个未标记缺陷经复核后补判为重复,则分子变为 15,比率为 15.0%。
| 口径 | 分子 | 分母 | 结果 |
|---|---|---|---|
| 排除无效撤销,按缺陷单 | 12 | 100 | 12.0% |
| 分母含全部新建缺陷 | 12 | 120 | 10.0% |
| 按根因去重 | 5 | 100 | 5.0% |
| 补判未标记后按缺陷单 | 15 | 100 | 15.0% |
这组对比说明,口径不同结果差异明显,报表中必须注明口径,跨期比较时保持口径一致。从管理动作看,12.0% 的比率配合 3% 的未标记占比,提示查重习惯已有一定基础但标记不完整,可以先从补全标记和统一判定标准入手;若按根因计的比率明显低于按缺陷单计的比率,说明重复提交集中在少数根因上,可以针对这些根因对应的模块加强提交前检索提示。
怎么核验数据可信、结果怎么解读
核验分两步。第一步是抽样复核重复标记的准确性:从被标记为重复的缺陷中随机抽取一定数量,例如 20 到 30 条,逐条核对根因、现象、模块是否与关联缺陷一致,统计判定成立的比例。第二步是抽查漏标:从未标记为重复的缺陷中随机抽取同样数量,检查是否存在与已有缺陷同根因、同现象、同模块但未标记的情况,统计漏标比例。两步结合,可以判断当前比率是偏高还是偏低。
重复发生率偏高与偏低的可能原因不同。偏高常见于:提交前未检索已有缺陷、缺陷模板缺少必填的模块与现象描述、新成员较多对历史缺陷不熟悉、模块耦合度高导致现象相似。偏低常见于:重复标记习惯未建立、标记为空被当作非重复、判定标准过严导致实际重复未被识别、缺陷量本身很小。解读时要结合未标记占比和抽样结果判断属于哪种情况。
这个指标需要与缺陷密度、回归缺陷率等指标联合解读。缺陷密度反映单位规模下的缺陷数量,重复发生率反映录入环节的重复情况,回归缺陷率反映修复后再次出现问题的比例。三者结合,可以区分“缺陷多”与“缺陷记录重复多”是不同问题:缺陷密度高而重复发生率低,说明缺陷本身较多但记录较规范;重复发生率高而缺陷密度正常,说明录入环节需要治理。回归缺陷率则帮助判断重复问题是否与修复不彻底有关。
解读时有几条限制需要保留。指标反映的是录入与查重环节的质量,不能当作因果保证,重复发生率下降不代表缺陷根因被消除。指标不宜单独作为绩效依据,判定标准的主观性和提交人构成的差异都会影响结果。跨团队、跨期比较前要确认口径一致,口径不同的数字放在一起容易得出错误结论。样本不足的分组只做数量观察,不据此评价。
常见问题
缺陷重复发生率按创建时间还是关闭时间归属更合适?
取决于评估目的。按创建时间归属,统计的是提交环节产生的重复记录,适合评估提交前检索已有缺陷的习惯是否落实;按关闭时间归属,统计的是处理完成时被认定为重复的情况,适合评估合并、关闭重复单的工作量。两种归属方式的结果含义不同,选定一种后在同一份报表中保持一致,跨期比较时不要混用。
重复标记大量为空时,还能计算这个指标吗?
可以计算,但结果的参考价值有限。建议把标记为空的记录单独归为“未标记”并统计其占比,不默认视为非重复,也不默认视为重复。未标记占比过高时,说明标记习惯尚未建立,此时算出的比率更多反映的是记录完整度问题。可以先补全标记、统一判定标准,再观察比率变化。关联关系存在但标记缺失的记录,可按关联关系补判,并在口径文档中注明补判规则。
按模块或团队分组后,很多分组样本很小,怎么呈现?
建议先设定最小样本量,例如有效缺陷数低于 30 的分组标注“样本不足”,只呈现绝对数不呈现比率。分组越细,单组样本越小,比率波动越大,容易把偶然波动误读为差异。呈现顺序上先看整体比率,再看样本量足够的分组,对样本不足的分组只做数量观察,不据此下结论。最小样本量没有通用标准,可按团队缺陷量级自行设定,关键是各期保持一致并在报表中注明。
抽样复核时,除了检查已标记的重复缺陷,还要做什么?
还要抽查漏标。从被标记为重复的缺陷中随机抽取一定数量,逐条核对根因、现象、模块是否与关联缺陷一致,统计判定成立的比例;同时从未标记为重复的缺陷中随机抽取同样数量,检查是否存在同根因、同现象、同模块但未标记的情况。两步结合,才能判断当前比率是偏高还是偏低。只复核已标记部分,会漏掉标记习惯不足导致的低估。
重复发生率下降,是否说明缺陷根因已经被消除?
不能这样推断。这个指标反映的是缺陷录入与查重环节的质量,比率下降可能来自查重习惯改善、标记更规范,也可能来自缺陷量本身变化。缺陷根因是否消除,需要结合回归缺陷率、缺陷密度和具体根因分析判断。把重复发生率当作因果保证或单一绩效依据,容易掩盖真实的质量问题。
