测试用例冗余度可以用哪些指标衡量

测试用例冗余度可以从四个层面衡量:用例内容重复度、需求覆盖重叠度、执行路径重合度、缺陷贡献度。每个层面都有可复算的公式,但结果是否可信,取决于统计前是否固定了统计单元、覆盖粒度、时间窗和去重判定规则。本文给出指标定义、口径选择方法、计算步骤和一个带数字的示例,帮助测试负责人或质量工程师建立一套可复算、可复核的冗余度评估方法。



要点总览(TL;DR)


  • 冗余度可从四个层面衡量:用例内容重复度、需求覆盖重叠度、执行路径重合度、缺陷贡献度,四类指标分别对应条目、需求点、执行路径和缺陷影响。
  • 统计口径需先固定四个要素:统计单元(用例条目还是用例组)、覆盖粒度(需求点、功能点还是代码路径)、时间窗(版本、迭代还是季度)、去重判定规则(人工标注、文本相似度阈值还是步骤指纹)。
  • 分母为零时记为“不适用”而非零,两者含义不同;需求覆盖重叠度的阈值N和相似度阈值都需在报告中写明,否则结果无法复算。
  • 单一指标只反映一个侧面,建议用重复用例数占比看规模、需求覆盖重叠度定位重点、执行路径重合度支持回归裁剪、缺陷贡献度判断处置力度,再以抽样复核误判率校准结论。
  • 冗余度高不等于用例质量低,合并或删除前需结合缺陷贡献度与人工评审确认,指标用于缩小复核范围。


冗余度评估要回答什么问题


冗余度评估的目标是识别用例库中可合并、可删除、可降级的用例,为用例评审、用例库治理和版本回归裁剪提供依据。评估开始前先明确结果交给谁、支持什么决策,指标选择才有方向。


常见的使用场景有三类。第一类是用例评审:评审前用冗余度指标筛出疑似重复的用例组,评审时集中判断保留哪一条、合并哪些步骤,减少逐条通读的时间。第二类是用例库治理:按模块或需求域统计冗余度,定位长期堆积重复用例的区域,安排合并或下线。第三类是版本回归裁剪:在回归范围确定阶段,参考执行路径重合度识别步骤高度相似的用例,避免同一路径被反复执行。


冗余度指标与覆盖率、缺陷逃逸率分工不同。覆盖率回答需求是否被验证到,冗余度回答验证同一需求的用例是否过多;缺陷逃逸率回答漏测程度,冗余度不直接反映漏测。三者可以并列观察,但冗余度高不能推出覆盖充分,冗余度低也不能推出质量好。评估结果应落到具体动作上:合并、删除、降级为低优先级或保留观察,每条处置建议对应到用例编号和责任人。



四类冗余度指标及其计算口径


四类指标分别从用例条目、用例对、需求点和执行路径四个角度刻画重复程度,另加一个缺陷贡献度用于判断冗余的实际影响。下表给出定义、公式、分子分母、单位与建议时间窗。


指标 公式 分子 分母 单位 建议时间窗
重复用例数占比 重复用例数 / 用例总数 被判定为重复的用例条目数 统计范围内用例条目总数 百分比 单版本或单迭代
重复对占比 存在重复关系的用例对数 / 全部用例对数 判定为重复的用例对数量 n×(n-1)/2,n为用例总数 百分比 单版本或单迭代
需求覆盖重叠度 被N条以上用例覆盖的需求点数 / 已覆盖需求点总数 覆盖用例数超过阈值N的需求点数量 至少被一条用例覆盖的需求点数量 百分比 单迭代,跨版本累计需单独标注
执行路径重合度 相同前置条件与步骤指纹的用例组数 / 用例组总数 步骤指纹相同的用例组数量 统计范围内用例组总数 百分比 单版本
缺陷贡献度 冗余组内发现缺陷的用例数 / 该组用例数 组内曾发现缺陷的用例条目数 该冗余组用例条目数 百分比 近若干版本累计,需注明区间

需求覆盖重叠度中的阈值N需要事先约定,例如N取3表示同一需求点被3条及以上用例覆盖时计入重叠。N的取值影响结果大小,报告里必须写明。重复对占比的分母随用例总数平方增长,用例库规模变化时该指标不宜直接跨期比较。


分母为零的处理要统一。用例总数为零时,重复用例数占比和重复对占比记为“不适用”,不记为零;已覆盖需求点为零时,需求覆盖重叠度记为“不适用”;用例组总数为零时,执行路径重合度记为“不适用”;冗余组用例数为零时,缺陷贡献度记为“不适用”。记为“不适用”与记为零含义不同,前者表示没有可统计对象,后者表示统计了但没有重复,报告中应区分展示。



统计口径怎么定:单元、粒度与去重规则


同一批用例在不同口径下算出的冗余度可能相差很大,因此口径要先于计算确定,并写入报告首页。口径包含四个要素:统计单元、覆盖粒度、时间窗和重复判定规则。


统计单元决定“一条”指什么。以用例条目为单元适合评估用例库规模层面的重复;以用例组或测试场景为单元适合评估业务流程层面的重复,此时组内多条用例视为一个整体。两种单元算出的重复用例数占比不可直接比较,切换单元时应在报告中注明。


覆盖粒度决定需求侧的分母。按需求点统计适合需求管理较规范的团队;按功能点或接口统计适合需求拆解较粗、但接口清单稳定的系统;按代码路径统计需要用例与代码路径建立关联,数据准备成本较高。粒度越细,重叠度通常越高,因为同一功能会被拆成更多可覆盖单元。


时间窗决定统计范围。按版本或迭代统计适合回归裁剪场景,反映当期用例集的重复情况;按季度统计适合治理场景,平滑单次版本波动;跨版本累计统计需要明确是否包含已下线用例,包含与否会显著改变分母。


重复判定规则是口径中最容易产生分歧的部分。人工标注准确但成本高,适合抽样复核和小规模用例库;文本相似度阈值可批量计算,阈值取0.8与取0.9会得到不同的重复对集合,阈值需在报告中固定并说明;步骤指纹按前置条件和操作步骤生成特征值,适合识别执行路径重复;等价类归并适合输入域相似的用例。口径变更后,新旧结果不具备直接可比性,应保留变更记录,必要时用新旧口径各算一次做对照。



计算与评估步骤


从数据准备到报告输出,可以按以下步骤执行。每一步都产出可核验的中间物,便于复核和复算。


  1. 导出用例清单与需求关联关系。清单至少包含用例编号、所属模块、优先级、前置条件、操作步骤、关联需求编号和最近执行版本。需求关联缺失的用例单独列出,不强行归入某个需求点。
  2. 标注或计算重复关系。先按步骤指纹自动分组,再对指纹相同或文本相似度超过阈值的用例对做人工确认,形成重复关系表,记录判定依据和判定人。
  3. 按公式计算各指标。逐项代入分子分母,分母为零时按前述规则记为“不适用”。计算结果保留一位小数,并附上分子分母原始数值。
  4. 分层查看。按模块、需求域、用例优先级拆分结果,定位冗余集中的区域。整体冗余度可能不高,但某个模块或某类低优先级用例的重复对占比明显偏高,处置重点应放在这些分层上。
  5. 抽样人工复核并修正误判。从判定为重复的用例对中抽取一定比例复核,统计误判率;误判率偏高时调整相似度阈值或指纹规则,重新计算。
  6. 输出冗余度报告与处置建议。报告包含口径说明、各指标数值、分层结果、抽样复核结论,以及按用例编号列出的合并、删除、降级建议和责任人。

用例清单、需求关联和评审记录需要在同一处维护,指标才能按版本稳定复算。ONES 测试管理支持用例与需求的关联管理,用例评审可在同一流程中记录评审结论,便于把冗余度评估结果落到具体的用例处置动作上。评估过程中形成的重复关系表和处置建议,也可以作为评审材料随用例一起留存。



一个计算示例


以下为演示用假设数据,不对应任何真实项目。某模块当前版本共有用例200条,经步骤指纹分组和人工确认,判定为重复的用例有30条;重复关系表中共有45对用例被判定为重复;该模块关联需求点40个,其中已覆盖35个,有12个需求点被3条及以上用例覆盖;用例按场景归并为50个用例组,其中8个组内存在前置条件与步骤指纹完全相同的用例;其中一个包含5条用例的冗余组中,只有1条用例在近三个版本中发现过缺陷。


逐项代入公式:重复用例数占比 = 30 / 200 = 15.0%;重复对占比 = 45 / [200×199/2] = 45 / 19900 ≈ 0.2%;需求覆盖重叠度(N取3)= 12 / 35 ≈ 34.3%;执行路径重合度 = 8 / 50 = 16.0%;缺陷贡献度 = 1 / 5 = 20.0%。


结果解读:重复用例数占比15%说明有一定数量的用例可进入合并或删除评审;重复对占比很低,说明重复关系集中在少数用例上,而非大面积两两重复;需求覆盖重叠度超过三分之一,说明相当一部分需求点被多条用例覆盖,适合优先核查这些需求点下的用例是否可合并;执行路径重合度16%提示部分场景内步骤重复,回归时可考虑只保留一条代表用例;缺陷贡献度20%说明该冗余组中多数用例未发现过缺陷,可优先评估降级或删除,但样本仅一组,结论限于该组。


若该模块某子域没有关联任何需求点,则已覆盖需求点数为零,需求覆盖重叠度记为“不适用”,并在报告中注明该子域需求关联缺失,先补关联再统计,而不是记为零。



结果解读与使用限制


冗余度高不等于用例质量低。重复用例可能承担不同的测试数据组合或不同的业务入口,删除前需确认其验证价值。判断时应结合缺陷贡献度:冗余组内多条用例都曾发现缺陷,说明这些用例各有作用,处置动作偏向保留或合并步骤;组内仅少数用例发现缺陷,才更适合降级或删除。


文本相似度阈值直接影响重复对集合的大小。阈值调低,更多用例被判为重复,冗余度上升,误判也随之增加;阈值调高则相反。报告中应写明阈值和抽样复核的误判率,让读者知道结果的可信区间。


跨模块、跨版本比较存在可比性限制。模块之间用例粒度、需求拆解方式不同,冗余度数值不宜直接排名;版本之间用例总数变化会放大重复对占比的波动,跨期比较建议使用重复用例数占比和需求覆盖重叠度,并保持统计单元和时间窗一致。口径变更后的结果不与旧结果直接比较。


指标不能替代人工评审。自动判定只能缩小复核范围,合并、删除、降级的最终决定仍需用例作者或评审人确认。建议的组合观察方式是:用重复用例数占比看整体规模,用需求覆盖重叠度定位重点需求点,用执行路径重合度支持回归裁剪,用缺陷贡献度判断处置力度,再以抽样复核的误判率校准整体结论。



常见问题


用例库规模很大时,重复对占比还有参考价值吗?


重复对占比的分母是用例总数按两两组合计算,规模越大分母增长越快,指标数值会被显著压低。用例库达到数千条时,该指标更适合用来判断重复关系是集中还是分散,不宜作为冗余程度的绝对值。规模较大的用例库建议以重复用例数占比为主,重复对占比作为辅助观察,并保持统计单元和时间窗一致后再做跨期比较。


文本相似度阈值取多少合适,需要固定吗?


阈值没有通用最优值,取决于用例描述的规范程度和复核成本。阈值取低会扩大重复对集合,误判增加,人工复核量上升;取高则可能漏掉表述不同但实质重复的用例。可行做法是先取一个初始阈值试算,从判定为重复的用例对中抽样复核,统计误判率,再调整阈值直到误判率落在团队可接受的范围。阈值一旦确定应写入报告并保持稳定,变更阈值后新旧结果不具备直接可比性。


需求关联缺失的用例怎么计入冗余度统计?


需求关联缺失的用例不应强行归入某个需求点,否则会扭曲需求覆盖重叠度的分子分母。建议在导出清单时单独列出这部分用例,需求覆盖重叠度只统计已建立关联的需求点;同时把关联缺失本身作为一项数据质量问题记录,先补关联再纳入后续统计。若某子域完全没有关联需求点,该子域的需求覆盖重叠度记为“不适用”,并在报告中注明原因。


冗余度指标多久算一次比较合适?


频率取决于指标用途。用于版本回归裁剪时,按版本或迭代计算,结果直接服务于当期回归范围确定;用于用例库治理时,按季度计算可以平滑单次版本的波动,便于观察趋势。缺陷贡献度需要一定时间积累缺陷记录,通常按近若干版本累计计算并注明区间。无论频率如何,同一指标在连续几期之间应保持统计单元、覆盖粒度和去重规则不变,否则趋势没有意义。


指标显示冗余度偏高,应该先合并还是先删除?


先判断冗余组内各用例的验证价值,再决定动作。组内多条用例都曾发现缺陷,说明它们各自覆盖了不同的测试数据或业务入口,优先考虑合并步骤、保留关键验证点;组内仅少数用例发现过缺陷,可评估降级为低优先级或删除。执行路径完全相同的用例,回归时可只保留一条代表用例。所有处置建议应落到具体用例编号和责任人,并经用例作者或评审人确认后执行。