评估缺陷密度,需要先把“算哪些缺陷、除以什么规模、统计哪段时间和版本”这三件事定下来。分子侧要有缺陷单原始记录、严重等级、发现阶段和有效性判定;分母侧要有代码行数、功能点、需求数或用例数的统计来源;范围侧要有版本基线、时间窗和口径说明。三者齐备,结果才能复算和解释。
要点总览(TL;DR)
- 评估缺陷密度需要三类数据:分子侧的有效缺陷数、分母侧的规模基数、范围侧的版本与时间窗,三者必须对应同一对象才能复算。
- 分母可选千行代码、功能点、需求数或用例数,选定后在同一份报告内保持一致,不同口径的密度值不能直接比较。
- 计算前要完成去重与无效缺陷判定并留存记录,分母为零的范围标注为不可计算,估算数据需注明方法。
- 结果宜按严重等级和发现阶段分层解读,缺陷密度反映密集程度,不能单独作为质量结论或绩效依据。
评估缺陷密度要回答什么问题
缺陷密度评估的目标,是判断当前版本或当前测试阶段的缺陷密集程度,为测试报告中的质量描述和风险提示提供依据。它回答的是一个范围明确的问题:在指定版本、指定时间窗、指定规模口径下,每单位规模承载了多少有效缺陷。
结论用途主要有两类。一类是描述性用途,在测试报告中说明本版本的缺陷分布情况,例如整体密度、按严重等级分层的密度、按发现阶段分层的密度。另一类是风险提示用途,指出某些模块或需求范围的缺陷密度明显高于同版本其他部分,提示需要补充测试或复查。
本文的边界需要提前说明。组织级质量趋势分析、跨版本长期对比、发布审批与质量门禁规则,属于另外的评估任务,本文不展开。缺陷密度是单指标,它能说明密集程度,不能单独支撑“可以发布”或“质量合格”的结论。
缺陷密度用哪些指标与统计范围
缺陷密度的基本公式为:缺陷密度 = 有效缺陷数 ÷ 规模基数。分子是统计范围内的有效缺陷数量,分母是同一范围内选定的规模度量。公式简单,难点在于分子、分母和范围三者必须对应同一对象。
分母口径常见有四类,选择哪一种取决于团队已有的规模数据和管理习惯:
| 分母口径 | 单位表达 | 适用条件 | 主要限制 |
|---|---|---|---|
| 千行代码 | 个/千行 | 有稳定的代码统计工具和版本基线 | 受语言、注释、生成代码影响,跨项目可比性弱 |
| 功能点 | 个/功能点 | 有功能点估算或计数记录 | 估算工作量较大,计数规则需统一 |
| 需求数 | 个/需求 | 需求粒度相对均匀,需求与缺陷可关联 | 需求大小差异大时,密度会被粒度稀释 |
| 用例数 | 个/用例 | 测试用例库稳定,用例与版本对应 | 反映测试覆盖规模,与产品规模不完全等价 |
统计范围要固定三项要素。第一是版本或迭代边界,明确统计哪个版本、哪个迭代内引入或发现的缺陷。第二是时间窗,给出统计起止日期,并说明按缺陷创建时间还是关闭时间取数。第三是缺陷发现阶段,区分单元测试、集成测试、系统测试、验收测试等阶段,不同阶段的缺陷密度含义不同。
严重等级分层统计有必要单独做。整体密度会把一个致命缺陷和若干提示级缺陷混在一起,掩盖风险结构。按严重等级分别计算密度,能看出高等级缺陷是否集中在某些模块,这比单一总数更有解释力。
需要准备哪些数据与证据
数据准备可以按分子、分母、范围三条线并行推进,每条线都配对应的证据材料,保证结果可复核。
| 类别 | 所需数据 | 对应证据材料 |
|---|---|---|
| 分子 | 统计范围内的缺陷单原始记录,含状态、严重等级、发现阶段、所属模块或需求 | 缺陷系统导出的明细清单,字段完整、时间可追溯 |
| 分子 | 有效缺陷与无效、重复缺陷的区分结果 | 去重记录、无效缺陷判定依据与判定人 |
| 分母 | 规模基数,如代码行数、功能点、需求数或用例数 | 规模统计工具的导出结果、计数规则说明 |
| 范围 | 版本基线、迭代范围、统计起止时间 | 版本发布记录、迭代计划、时间窗截图或导出 |
| 范围 | 统计口径说明 | 口径文档,写明分子筛选条件、分母来源、取数时间点 |
有效性证据是容易被忽略的一环。缺陷单里常混有重复提交、环境问题误报、需求理解偏差产生的无效单。计算前应逐条确认,保留去重合并的记录和判定理由,使“有效缺陷数”这个分子可以被第三方按同样规则复现。判定标准应在统计前确定,避免看到结果后再调整口径。
分母数据的来源要写清楚。代码行数来自哪个统计工具、统计的是哪个分支或标签、是否包含注释和生成代码;需求数按什么粒度计数;用例数是否包含未执行用例。这些说明直接决定分母是否可复算。
在缺陷记录与版本范围管理环节,ONES 测试管理支持未通过用例快速创建缺陷任务并在测试与研发团队间流转,缺陷可关联至迭代,测试计划与迭代关联,便于按版本或迭代界定统计范围;同时提供质量统计报表与项目缺陷分布统计,并支持自定义组装测试报告模板。具体报表字段与导出方式以实际配置为准。
缺陷密度怎么算:步骤与缺失值处理
计算过程建议按固定顺序执行,每一步留下记录,便于复核。
- 确定范围:写明版本或迭代、统计起止时间、取数时间点、缺陷发现阶段范围。
- 取分子:从缺陷系统导出范围内缺陷明细,剔除重复与无效单,记录剔除数量和理由,得到有效缺陷数。
- 取分母:按选定口径取得同期规模基数,记录来源工具和计数规则。
- 相除:有效缺陷数 ÷ 规模基数,按分母口径标注单位。
- 分层:按严重等级、发现阶段、模块或需求分别计算,形成分层结果。
单位与分母口径必须一致。分子统计的是系统测试阶段缺陷,分母就应取对应版本的规模,不能拿全项目累计代码行数作分母。同一份报告中出现多个密度值时,每个值都要标注自己的分母口径,避免读者误比。
异常数据的处理规则需要事先约定:
- 分母为零:该范围标注为“不可计算”,说明原因,不用零填充,也不省略该行。
- 缺陷未关闭:按统计目的选择口径。评估发现密度时计入全部有效缺陷;评估遗留风险时单独列出未关闭缺陷数,不与密度混算。
- 跨版本缺陷:按缺陷归属版本或引入版本归入一个版本,避免同一缺陷在两个版本重复计数;无法归属的单列说明。
- 缺失值与估算:规模数据缺失需估算时,标注“估算”字样、估算方法和估算人,估算值不与实测值直接合并比较。
一个可复算的示例
以下为演示情景,数字仅用于说明计算过程,非真实项目数据。
设定范围:某版本 V2.3,统计时间窗为 3 月 1 日至 3 月 31 日,取缺陷创建时间,统计系统测试阶段发现的缺陷,分母采用需求数口径。
分子取数:时间窗内共导出缺陷单 96 条,经去重合并 6 条、判定无效 4 条,有效缺陷 86 条。其中致命 4 条、严重 18 条、一般 46 条、提示 18 条。
分母取数:该版本纳入统计的需求共 43 个,需求清单与版本基线一致。
整体计算:86 ÷ 43 ≈ 2.0 个/需求。
分层结果:
| 严重等级 | 有效缺陷数 | 密度(个/需求) |
|---|---|---|
| 致命 | 4 | 约 0.09 |
| 严重 | 18 | 约 0.42 |
| 一般 | 46 | 约 1.07 |
| 提示 | 18 | 约 0.42 |
口径说明与可比性提示:本例分母为需求数,结果不能与按千行代码计算的密度直接比较;若另一版本需求粒度明显不同,两版密度对比也需谨慎。去重与无效判定记录应随报告留存,便于他人按同一规则复算。
结果怎么解读,有哪些限制
解读缺陷密度,先看分层再看总数。整体密度相同的两个版本,若一个高等级缺陷占比明显更高,风险结构并不相同。结合发现阶段看也有意义:系统测试阶段密度高,可能说明前期评审和单元测试拦截不足;验收阶段仍有较高密度,则提示交付风险。
不同分母口径之间不可直接比较。个/千行与个/需求衡量的是不同规模维度,数值大小没有统一换算关系。跨版本比较时,还要确认需求粒度、代码统计规则、缺陷判定标准是否一致,任一变化都应在新报告中说明。
缺陷密度不能单独作为质量结论或绩效依据。它反映的是缺陷与规模的比值,受测试投入、缺陷记录习惯、需求拆分方式影响。把它直接用于个人考核,容易诱发少报或拆分缺陷单等行为,反而损害数据质量。
数据质量决定结论可信度。缺陷单字段缺失、去重不彻底、分母来源不明,都会让密度值失真。报告中应同时呈现数据完整性和处理规则,让读者知道这个数字在什么条件下成立。
常见问题
缺陷密度按缺陷创建时间还是关闭时间取数,对结果有什么影响?
两种取数方式对应不同的评估目的。按创建时间取数,统计的是时间窗内新发现的缺陷,适合评估当前测试阶段的发现密度;按关闭时间取数,统计的是时间窗内处理完毕的缺陷,会混入更早版本发现、近期才关闭的单据。
选定一种后应在口径说明中写明,同一版本内保持一致。若报告需要同时呈现发现与关闭情况,可以分别计算并各自标注取数规则,避免把两个口径的数字放在一起比较。
缺陷单里混有需求变更引起的“缺陷”,这类单据要不要计入分子?
是否计入取决于统计前确定的判定标准。需求变更导致的行为差异,通常不属于产品缺陷,可在有效性判定阶段剔除,并记录剔除理由和数量。
关键是标准先定、执行一致。如果同一批数据里一部分需求变更单被剔除、另一部分被保留,分子就失去可比性。建议在口径文档中列出计入与不计入的典型情形,供复核时对照。
同一版本内需求粒度差异很大,用需求数作分母还合适吗?
需求数口径适合需求拆分相对均匀的团队。若同一版本内既有大型需求又有大量细碎需求,密度值会被粒度结构影响,大需求多的模块密度可能被低估。
这种情况下可以改用功能点或代码行数作分母,或在按需求数计算的同时补充按模块分层的密度,说明各模块需求规模差异。报告中保留需求清单,读者才能判断密度差异有多少来自缺陷、多少来自粒度。
缺陷密度算出来之后,怎么和测试报告里的其他结论衔接?
缺陷密度适合作为质量描述的一部分,与遗留缺陷数、缺陷关闭率、高等级缺陷占比等指标并列呈现,各自说明口径。它说明的是单位规模承载的缺陷数量,遗留风险还需要看未关闭缺陷的等级分布。
在测试管理流程中,ONES 测试管理支持未通过用例快速创建缺陷任务并在测试与研发团队间流转,缺陷可关联至迭代,测试计划与迭代关联,便于按版本或迭代界定统计范围;同时提供质量统计报表与项目缺陷分布统计,并支持自定义组装测试报告模板。具体报表字段与导出方式以实际配置为准。
跨版本累计的缺陷密度能不能用来做版本间趋势对比?
可以对比,但前提是各版本的统计口径一致:分母口径相同、需求粒度接近、缺陷判定标准未变、时间窗长度可比。任一条件变化,趋势线就可能反映口径变化而非质量变化。
对比时建议同时列出各版本的口径说明和样本量。组织级的长期质量趋势分析属于另外的评估任务,单版本报告中的对比只作为参考信息呈现。
