测试用例冗余度统计口径的核心,是先确定“比较单元”和“重复判定规则”,再选择指标并固定分母。同一批用例,按标题比对和按覆盖需求点比对,结果可能相差很大。本文围绕重复用例占比、重复覆盖对占比、用例密度和去重后覆盖率变化四类指标,说明口径要素、计算步骤、复核方法与解读边界。ONES测试管理可承载用例字段、需求关联与状态管理,便于把口径落到日常用例库中。
要点总览(TL;DR)
- 先定比较单元(项目、模块、需求点或用例集)和重复判定规则,再选指标;同一批用例按不同规则比对,结果差异很大。
- 常用四类指标:重复用例占比、重复覆盖对占比、用例密度、去重后覆盖率变化,每个指标都要写明分子、分母和统计范围。
- 口径要素包括比较字段与相似阈值、时间窗与用例状态、分母选择、缺失字段处理,建议固化成带版本号的口径说明卡。
- 计算后抽样人工复核,统计误判率并据此调整阈值,修正结果替换原数字并记录调整过程。
- 冗余度只反映用例内容与覆盖点的重叠程度,与缺陷发现能力无必然因果,不宜跨模块直接横比或直接挂钩个人绩效。
评估目标:冗余度要回答什么问题
冗余度评估服务于具体决策,指标才有意义。常见用途有三类:用例评审时判断新增用例是否与已有用例重复;回归集裁剪时找出覆盖同一风险点的多条用例,决定保留哪一条;用例库治理时识别长期未更新、内容高度相似的存量用例。评估开始前,先写清本次要支持哪一类决策,再决定统计范围和指标组合。
评估对象是用例内容与覆盖点,包括标题、前置条件、操作步骤、预期结果以及关联的需求点或等价类。脚本实现层面的重复检测属于另一类问题,不在本文范围内。需要区分两种问题:内容重复指两条用例的描述高度相似,可能连步骤都一致;覆盖重叠指两条用例内容不同,但验证的是同一个需求点或同一个等价类。前者影响用例库整洁度,后者影响回归集的执行成本,两者的判定规则和指标不同。
可以用一份评估目标清单来锁定范围:本次评估支持哪项决策、评估哪些模块或需求、比较单元是什么、需要输出哪几个指标、结果交给谁使用。清单确认后再进入指标选择,避免把能算的指标全部算一遍却无法支撑决策。
指标与范围:四类可用的冗余度指标
冗余度没有单一标准指标,常用四类指标从不同角度描述重叠程度。选择时按评估目标组合使用,并统一统计单位与分母。
| 指标 | 公式 | 单位 | 适用场景 |
|---|---|---|---|
| 重复用例占比 | 完全重复或近似重复的用例数 ÷ 用例总数 | 百分比 | 用例库整体整洁度评估、评审新增用例 |
| 重复覆盖对占比 | 存在覆盖重叠的用例对数 ÷ 可比用例对数 | 百分比 | 回归集裁剪、识别同一需求点下的多条用例 |
| 用例密度 | 用例数 ÷ 需求点数(或等价类数、功能点数) | 条/需求点 | 比较不同模块的用例投入是否过度集中 |
| 去重后覆盖率变化 | (去重前覆盖点数 − 去重后覆盖点数)÷ 去重前覆盖点数 | 百分比 | 验证去重操作是否损失覆盖,支撑裁剪决策 |
重复用例占比以用例为统计单位,适合回答“库里有太多相似用例吗”;重复覆盖对占比以用例对为统计单位,适合回答“同一覆盖点被重复验证了多少次”。用例密度是相对值,只有在需求点划分口径一致时才能比较。去重后覆盖率变化衡量的是去重动作的代价,需要先有明确的覆盖点清单。四类指标可以同时报告,但每个指标都要注明分子、分母和统计范围,否则数字无法复算。
数据口径:比较单元、判定规则与分母
口径确定的关键是把判定标准写成可复核的规则。建议用一张口径说明卡固定以下要素,每次统计沿用同一版本。
比较单元
比较单元决定“谁和谁比”。按项目统计适合整体健康度观察;按模块统计适合定位问题集中区域;按需求点统计适合回归集裁剪;按用例集(如某次迭代新增用例)统计适合评审场景。比较单元一旦确定,重复对只在单元内部生成,跨单元不比较,避免把不同业务背景的用例误判为重复。
重复判定规则
判定规则要写明比较哪些字段、相似到什么程度算重复。常见做法是组合比较:标题相似度达到设定阈值,且关联需求点相同,判为近似重复;前置条件、步骤、预期结果三个字段中至少两个高度相似,判为完全重复候选。阈值需要根据抽样复核结果校准,初始值可参考团队历史评审中人工判定为重复的用例对,统计其字段相似度分布后确定。规则中还要说明字段缺失时如何处理,例如未填写前置条件的用例只比较其余字段。
时间窗与状态
统计截止时间、用例版本和状态要固定。通常只统计有效状态的用例,废弃用例单独计数并从分母中排除;跨版本比较时,以同一版本的用例快照为准,避免统计期间用例被修改导致结果不可复现。
分母与缺失值
分母选择直接影响指标含义。重复用例占比的分母可以是全部用例、有效用例或可比用例,推荐使用有效用例并在口径卡中注明。重复覆盖对占比的分母是可比用例对数,即同一比较单元内、关联到同一需求点或同一功能点的用例对数量。未关联需求的用例无法参与覆盖对计算,应单独标注数量并说明排除规则,不能默认归入某一需求点。分母为零时,指标记为“不适用”,不写为0%。
计算与评估步骤:从规则到可复核结果
按以下五步执行,每一步留下可检查的记录,结果才能被复核和复用。
- 确定统计范围并导出用例字段。按比较单元筛选有效用例,导出标题、前置条件、步骤、预期结果、关联需求、状态和更新时间。记录导出时间与用例总数。
- 按判定规则生成重复对或重复组。对同一比较单元内的用例两两比较,输出重复对清单,包含两条用例的编号、相似字段和判定类型(完全重复或近似重复)。重复组用于处理三条以上互相相似的用例。
- 计算各指标并记录分子分母。每个指标单独一行,写明分子值、分母值、统计范围和计算时间。覆盖率变化需要先列出去重前后的覆盖点清单。
- 抽样人工复核。从重复对中随机抽取一定比例,由熟悉业务的测试人员逐对判断是否真重复,统计误判率。误判率偏高时调整相似阈值或增加比较字段,重新计算并记录调整前后的差异。
- 固化口径文档。把比较单元、判定规则、阈值、时间窗、分母选择和缺失值处理写入文档,标注版本号、生效日期和复核人。后续统计沿用同一版本,规则变更时升版本并说明影响。
复核记录模板可以包含:用例对编号、机器判定结果、人工判定结果、是否一致、不一致原因、处理动作。积累若干轮后,误判原因分布本身就能说明判定规则需要在哪里细化。
例子:一个模块的冗余度计算演示
以下为演示情景,数字用于说明计算过程。某模块统计范围内有效用例120条,关联需求点30个,未关联需求的用例6条。按判定规则生成完全重复用例8条,近似重复用例对15对。可比用例对指同一需求点下的用例两两组合,该模块共形成210对可比用例对,其中判定为覆盖重叠的有15对。
重复用例占比 = 8 ÷ 120 ≈ 6.7%。这里分母取有效用例总数,未关联需求的6条仍计入分母,因为内容重复判定不依赖需求关联;如果口径卡规定只统计已关联需求的用例,分母改为114,结果约为7.0%,两种口径不能混用。
重复覆盖对占比 = 15 ÷ 210 ≈ 7.1%。分母210对只包含同一需求点内的用例组合,跨需求点的用例对不进入分母。
用例密度 = 120 ÷ 30 = 4条/需求点。若某需求点下有12条用例而其他需求点平均3条,说明该需求点用例投入明显集中,可进一步检查是否存在覆盖重叠。
去重后覆盖率变化:去重前覆盖点45个,按规则合并重复对后覆盖点仍为45个,变化为0%,说明这批重复用例没有带来额外覆盖,裁剪风险较低。若去重后覆盖点降为42个,变化为(45−42)÷45≈6.7%,需要逐项确认丢失的3个覆盖点是否由其他用例间接覆盖。
抽样复核:抽取15对重复对中的10对人工判断,发现2对误判,误判率20%。检查发现误判主要发生在步骤描述简短、字段缺失的用例上。将近似重复阈值上调,并对缺失前置条件的用例改为比较步骤与预期结果两个字段,重新计算后重复对降为12对,误判率降至10%。修正后的数字替换原结果,并在口径文档中记录本次调整。
这类统计需要用例字段完整、需求关联可查、状态可筛选。在ONES测试管理中,用例可关联需求并维护状态,统计前按比较单元筛选有效用例、导出所需字段,重复对清单和复核记录可作为用例库治理的过程材料留存,规则调整后按同一范围重新统计即可对比前后结果。
解读与限制:指标能说明什么、不能说明什么
冗余度指标反映用例内容与覆盖点的重叠程度,与缺陷发现能力之间没有必然因果关系。两条内容相似的用例可能因为测试数据或执行路径不同而发现不同问题;一条看似冗余的用例也可能是某类边界场景的唯一保障。指标用于提示需要人工检查的位置,不能替代测试人员的判断。
样本过小时结论不稳定。用例总数很少的模块,一两条重复就会让占比大幅波动;分母为零时指标不适用,应直接说明而不强行给出百分比。不同模块之间,需求复杂度、业务风险和用例编写习惯不同,用例密度和重复占比不宜直接横向比较,比较应限定在相似类型的模块或同一模块的历史版本之间。
阈值应结合团队历史基线和人工复核确定。先统计若干个月的重复占比,观察稳定区间,再结合复核误判率设定关注线,例如超过历史基线一定幅度时触发评审。通用达标线在不同团队之间缺乏可比性,不建议直接套用。
指标的使用范围限定在改进用例评审和回归集维护。把重复用例占比直接与个人绩效挂钩,容易导致测试人员减少用例编写或刻意改写描述规避判定,反而损害覆盖完整性。更合适的做法是把指标作为用例库治理的输入,配合评审记录和覆盖点清单,推动用例内容质量的持续改进。
常见问题
用例没有关联需求点,还能参与冗余度统计吗?
可以参与内容重复类指标,但无法参与覆盖对类指标。重复用例占比按标题、步骤、预期结果等字段判定,不依赖需求关联,这类用例可正常计入分子和分母。重复覆盖对占比需要先确定同一需求点下的可比用例对,未关联需求的用例无法归入任何需求点,应单独标注数量并从该指标的分母中排除,同时在口径卡中写明排除规则。若团队希望减少这类缺口,可在统计前先补齐需求关联,再按同一口径重新计算。
相似度阈值定多少合适,需要一次定死吗?
阈值没有通用取值,建议用团队历史评审中人工判定为重复的用例对做校准:统计这些用例对在各字段上的相似度分布,取能覆盖多数真实重复对、同时误判较少的区间作为初始值。阈值不必一次定死,但每次调整都要记录调整原因、调整前后的重复对数量和复核误判率,并在口径文档中升版本。调整后应保持一段时间稳定,避免频繁变动导致前后数据不可比。
去重后覆盖率没有变化,是否说明这些重复用例可以直接删除?
覆盖率变化为0%说明去重没有减少已识别的覆盖点,是裁剪风险较低的信号,但不等于可以直接删除。还需要确认三点:覆盖点清单本身是否完整,是否存在尚未登记为覆盖点的边界场景;重复用例是否承担不同的测试数据或执行路径;被合并的用例是否属于某个专项或合规要求必须保留的记录。建议先标记为候选裁剪,经业务测试人员确认后再处理,并保留操作记录。
不同模块的重复用例占比可以直接比较排名吗?
不建议直接横比排名。各模块的需求复杂度、业务风险、用例编写习惯和需求点划分粒度不同,用例密度和重复占比的基线本来就有差异。更稳妥的做法是在相似类型的模块之间比较,或比较同一模块不同版本的历史变化。如果确实需要跨模块观察,应先统一需求点划分口径和判定规则,并同时报告样本量,样本过小的模块结论不稳定,只作参考。
冗余度指标多久统计一次,结果交给谁用?
统计频率跟随使用场景:用例评审场景可按迭代或版本统计新增用例的重复情况;用例库治理可按季度统计存量用例。结果主要交给测试负责人和用例评审人,用于确定需要人工检查的用例范围和回归集裁剪候选。指标进入评审流程时,应同时附上口径版本、统计范围、分子分母和复核误判率,让使用者能判断数字是否可复算。指标作为治理输入使用,不宜直接作为个人考核依据。
