测试报告的数据来自测试过程中留下的执行记录、缺陷记录和需求追溯记录三类可追溯信息,统计口径则要先固定统计范围、时间窗口、计数单位和状态判定,再分别计算执行结果、缺陷与需求覆盖。本文解释这三类数据各自承载什么、如何取数计算,以及怎样通过需求—用例—执行—缺陷的追溯链对齐到同一版本,帮助读者写出可复现的报告口径说明。
要点总览(TL;DR)
- 测试报告的数据来源由测试用例与执行记录、缺陷记录、需求与追溯记录三类构成,环境与构建信息作为版本与时间范围的锚点。
- 统计口径要先固定统计范围、时间窗口、计数单位和状态判定四件事,并写成可复算的口径备注。
- 执行结果、缺陷、需求覆盖各有自己的分子分母,三类指标的分母必须与统计范围保持一致。
- 需求—用例—执行—缺陷的追溯链把三类数据对齐到同一版本;关联缺失会导致覆盖率虚高、缺陷无法归属。
- 测试报告只回答当前版本或本轮测试的结论,跨版本质量趋势与发布门禁属于相邻概念,口径不能混用。
测试报告的数据来源包括哪些记录
测试报告的数据来源可以归为四类记录:测试用例与执行记录、缺陷记录、需求与追溯记录,以及作为范围锚点的环境与构建信息。前三类决定报告能算出什么指标,第四类决定这些指标属于哪个版本、哪个测试周期。四类记录在测试过程中由不同角色在不同环节产生,报告编制阶段主要是汇总和核对,而不是重新采集。
| 数据来源 | 关键字段 | 产生环节与责任人 |
|---|---|---|
| 测试用例与执行记录 | 用例编号、用例标题、步骤、预期结果、实际结果、执行状态、执行时间、执行人、所属测试计划 | 测试设计阶段由测试人员编写用例;测试执行阶段由执行人逐条记录结果与状态 |
| 缺陷记录 | 缺陷编号、标题、严重程度、优先级、状态、发现版本、发现时间、关闭时间、关联用例或需求、处理人 | 执行失败或探索测试发现问题时由测试人员提交;研发处理、测试验证过程中状态持续流转 |
| 需求与追溯记录 | 需求条目、需求状态、需求与用例的关联关系、需求所属版本或迭代 | 需求评审通过后由产品人员维护条目;测试设计阶段由测试人员建立需求与用例的关联 |
| 环境与构建信息 | 被测版本号、构建号、测试环境、提测时间 | 提测环节由研发或构建系统提供,测试负责人确认 |
这四类记录的共同要求是可追溯:每条执行记录能回到具体用例,每条缺陷能回到触发它的用例或对应需求,每条用例能回到它验证的需求。缺少任何一层关联,报告在汇总时就会出现无法归属的数据。环境与构建信息容易被忽略,但它决定了报告标题里“哪个版本”的含义,没有它,执行率和缺陷数都失去比较基准。
统计口径要先定哪几件事
统计口径是报告里“数字怎么算出来的”那部分说明。同一批数据,口径不同会得出不同结论,所以口径要在取数之前定好,并写进报告备注。一份可复现的口径说明至少包含四个要素。
- 统计范围:按版本、按测试周期还是按需求批次取数。按版本适合回答“这个版本能不能发”,按测试周期适合回答“这轮测试做了什么”,按需求批次适合回答“某批需求的验证情况”。范围一旦确定,所有指标的分母都从同一范围里取。
- 时间窗口:执行结果按执行时间取数;缺陷可以按发现时间或关闭时间取数,两者含义不同。跨窗口的缺陷要事先约定归属规则,例如“本周期发现、下周期关闭的缺陷计入发现周期”,并在报告中注明。
- 计数单位:按用例、按步骤、按缺陷单还是按需求条目计数。计数单位决定指标的粒度,也决定不同指标之间能否直接比较。
- 状态判定:什么状态算通过、算有效缺陷、算已覆盖。重开的用例如何计、阻塞的用例算不算已执行、被判定为无效或重复的缺陷是否计入缺陷总数,都需要明确写出。
把这四件事写成一段口径备注,放在报告开头或附录,读者就能自行复算关键数字。口径备注不需要很长,但要具体到状态名称和取数条件,避免“按实际情况统计”这类无法复现的表述。
执行结果、缺陷与需求覆盖分别怎么取数与计算
三类指标各有自己的分子分母,取数来源也不同。下表给出常用计算方式和需要事先声明的排除项。
| 指标 | 分子 | 分母 | 常见排除项与分歧点 |
|---|---|---|---|
| 执行率(按用例) | 状态为通过、失败、阻塞等已执行状态的用例数 | 统计范围内应执行的用例总数 | 未执行用例是否计入分母;阻塞算已执行还是未执行;按步骤计时分子分母改为步骤数 |
| 通过率 | 状态为通过的用例数 | 已执行用例数(或应执行用例数) | 分母选已执行还是应执行,结论差异明显;重开后被判定通过的用例按最终状态计 |
| 缺陷数量与分布 | 统计窗口内符合条件的缺陷单数 | 不适用,按严重程度、模块、发现版本分组呈现 | 无效、重复、非缺陷类工单是否剔除;按发现时间还是关闭时间归属 |
| 缺陷密度 | 有效缺陷数 | 按需求条目数、用例数或代码规模等选定基数 | 基数选择必须与统计范围一致,跨版本比较时基数口径要相同 |
| 需求覆盖率 | 已关联用例且满足覆盖判定条件的需求数 | 统计范围内应测需求数(或全部需求数) | 覆盖判定是“已关联用例”还是“已执行通过”;未关联用例的需求是否计入分母 |
执行结果的核心分歧在分母。用应执行用例数作分母,执行率反映测试进度;用已执行用例数作分母,通过率反映已测部分的稳定性。两个数字回答不同问题,报告中应同时给出并标明分母。阻塞用例的处理也需要固定:通常计入已执行但不计入通过,若团队把阻塞视为环境问题,可在口径备注中单独列出阻塞数量。
缺陷统计要先区分有效缺陷与无效缺陷。被关闭为“不是问题”“重复提交”的记录如果计入总数,缺陷密度会被抬高,严重程度分布也会失真。建议在报告中同时给出提交总数和有效缺陷数,并说明剔除规则。缺陷密度依赖基数选择,按需求条目计适合评估需求实现质量,按用例计适合评估测试发现效率,选择哪种基数要与报告用途匹配。
需求覆盖率的分母是应测需求还是全部需求,取决于报告要回答的问题。评估版本交付质量时,用应测需求作分母更合理;盘点需求管理完整性时,用全部需求作分母能暴露未纳入测试的需求。覆盖判定条件同样要写明:仅建立需求与用例关联,说明测试设计已覆盖;要求关联用例执行通过,才说明验证已完成。两种判定得出的覆盖率可能相差很大,报告应注明采用的是哪一种。
三类数据如何通过追溯链对应起来
三类指标能放在同一份报告里比较,靠的是需求—用例—执行—缺陷这条追溯链。需求条目关联一条或多条测试用例,用例在执行时产生执行记录,执行失败或探索测试发现的问题生成缺陷单,缺陷再回挂到对应用例或需求。链条完整时,每个缺陷都能归属到需求,每条需求的覆盖质量可以由执行结果和缺陷情况共同说明。
这条链在实际项目中经常断裂,断裂方式不同,报告失真的表现也不同。
- 需求未关联用例:该需求在覆盖率计算中要么被当作未覆盖,要么被排除在分母之外,两种处理都会让覆盖率数字偏离实际测试投入。
- 缺陷未回挂需求或用例:缺陷只能按模块或版本汇总,无法回答“这条需求的验证过程中发现了多少问题”,需求覆盖质量缺少缺陷维度。
- 用例未关联测试计划或版本:执行记录无法归入统计范围,执行率分母偏小,通过率看起来更好。
- 缺陷关联到错误的版本:按发现版本统计时,缺陷被计入其他版本,本版本的缺陷分布出现缺口。
对齐到同一版本和同一时间窗口是三者可比较的前提。执行记录按执行时间落入窗口,缺陷按约定的发现或关闭时间落入窗口,需求按所属版本或迭代确定范围,三者使用同一套范围定义,报告中的执行率、缺陷数和覆盖率才能互相解释。报告编制时可以先做一次关联完整性检查:统计未关联用例的需求数、未关联需求的缺陷数,把这些数量作为数据质量说明附在报告里,比直接给出一个看似精确的覆盖率更有参考价值。
在工具层面,这条追溯链需要由工作项之间的关联关系承载。ONES 测试管理支持测试用例与产品需求、研发任务关联,测试计划与迭代关联;未通过的用例可快速创建缺陷任务,缺陷任务在测试与研发团队间流转,缺陷也可关联至迭代。这类关联让需求、用例、执行记录和缺陷落在同一套工作项关系里,报告汇总时按版本或迭代取数即可保持范围一致。ONES 测试管理还支持自动生成测试报告、项目缺陷分布统计,以及自定义组装测试报告模板,具体报告字段与指标算法需按实际配置核验。
与相邻概念的区别:质量趋势、质量门禁与测试报告
测试报告回答的是当前测试或当前版本的结论:这个版本执行了多少、通过情况如何、发现了哪些缺陷、需求覆盖到什么程度。它的数据范围通常是一个版本或一个测试周期,口径围绕这个范围设定。超出这个范围的问题属于相邻概念,不应混入测试报告的口径讨论。
| 概念 | 回答的问题 | 数据范围与口径特点 |
|---|---|---|
| 测试报告 | 当前版本或本轮测试的结论是什么 | 单版本或单周期,口径围绕该范围固定 |
| 研发质量度量与质量趋势 | 多个版本之间质量如何变化、组织级质量水平如何 | 跨版本、跨团队,需要统一各版本口径后才能比较 |
| 发布审批与质量门禁 | 是否满足发布条件、能否进入下一阶段 | 关注通过条件与阈值判定,数据统计只是输入之一 |
三者的关系是数据可以复用、口径不能混用。测试报告中的通过率和缺陷数可以作为质量门禁的判定输入,但门禁的通过条件(例如严重缺陷清零、通过率不低于某阈值)属于发布审批规则,不在测试报告口径的范畴内。跨版本趋势分析会复用各版本测试报告的数据,但需要额外处理版本间用例集变化、需求规模变化带来的口径差异,这些处理也不属于单份测试报告要解决的问题。同一批数据在不同用途下采用不同口径是正常的,关键是每份报告或每个度量都写清自己的口径,避免把趋势结论直接套到单版本报告上。
一个具体例子与常见误解
假设某版本统计范围内有 200 条用例,其中 160 条已执行,140 条通过,20 条失败,40 条未执行。按用例计,执行率为 160/200=80%,通过率为 140/160=87.5%。如果这 200 条用例合计 1000 个步骤,已执行步骤 700 个、通过 650 个,按步骤计的执行率为 70%,通过率为 92.9%。同一批数据,按用例计和按步骤计给出的执行率相差 10 个百分点,原因是长用例的步骤多、执行进度与用例条数不同步。报告应说明采用哪种计数单位,或在附录同时列出两种口径。
缺陷归属的例子:某版本测试周期内发现 30 个缺陷,其中 8 个在周期结束后才关闭。按发现时间统计,本周期缺陷数为 30;按关闭时间统计,本周期关闭 22 个,另有上周期发现的 5 个在本周期关闭,合计 27 个。两个数字都不错,但回答的问题不同:前者反映本轮测试发现问题的能力,后者反映本轮缺陷处理的吞吐。跨周期缺陷的归属规则必须在口径备注中写明,否则读者无法判断数字含义。
围绕这三类数据,有三个常见误解需要纠正。
- 需求覆盖率高不等于质量好。 覆盖率高只说明需求与用例的关联和执行较完整,如果用例设计本身没有覆盖关键场景,或者覆盖判定只要求关联而不要求执行通过,高覆盖率并不能说明需求实现正确。覆盖率要和执行通过率、缺陷分布一起看。
- 缺陷数少不等于测试充分。 缺陷数受测试深度、用例设计质量、统计窗口和有效缺陷判定规则影响。执行率低、探索测试投入少的版本,缺陷数自然偏少,这反映的是测试投入不足,而非质量稳定。
- 执行通过率不能直接跨版本比较。 不同版本的用例集、需求范围和执行策略不同,通过率的分母构成也不同。要做跨版本比较,需要先统一用例范围、计数单位和状态判定,否则差异可能来自口径变化而非质量变化。
把数据来源清单、口径四要素和三类指标的计算方式写进报告模板,再附上关联完整性检查结果,测试报告的每个数字都能被复算和解释。这比追求单一的综合评分更能支撑版本质量判断。
常见问题
统计范围按版本、按测试周期还是按需求批次,应该怎么选?
取决于报告要回答的问题。要判断某个版本能否交付,按版本取数,所有指标的分母都限定在该版本的用例与需求内;要说明这一轮测试做了什么,按测试周期取数,范围随测试计划走;要汇报某批需求的验证情况,按需求批次取数。三种范围可以并存,但同一份报告内只能选一种作为主口径,其他范围的数据作为补充说明,否则执行率、缺陷数和覆盖率的分母会互相矛盾。
跨周期发现的缺陷,按发现时间还是关闭时间统计更合适?
两者回答不同问题,没有绝对优劣。按发现时间统计,反映本轮测试发现问题的能力,适合评估测试投入与用例有效性;按关闭时间统计,反映本轮缺陷处理的吞吐,适合评估研发修复与验证节奏。常见做法是主口径选发现时间,同时在报告中列出本周期关闭数和遗留未关闭数。无论选哪种,都要在口径备注中写明跨周期缺陷的归属规则,例如“本周期发现、下周期关闭的缺陷计入发现周期”,让读者能判断数字含义。
需求覆盖率用“已关联用例”还是“已执行通过”作为覆盖判定,差异有多大?
差异可能很大。仅要求需求已关联用例,衡量的是测试设计覆盖,只要用例写好并挂上需求就算覆盖;要求关联用例执行通过,衡量的是验证完成度,未执行、执行失败或阻塞的需求都不计入。前者数字通常更高,适合跟踪测试设计进度;后者更接近交付质量,适合版本结论。报告应注明采用哪一种判定,必要时两个数字并列给出,避免读者把设计覆盖率误读为验证完成率。
报告里执行率、缺陷数、覆盖率对不上,通常是什么原因?
多数是追溯链断裂或范围不一致。常见情况包括:部分用例未关联测试计划或版本,执行记录没进入统计范围,执行率分母偏小;缺陷未回挂需求或用例,只能按模块汇总,无法与需求覆盖对应;缺陷关联到错误版本,按发现版本统计时出现缺口;三类指标使用了不同的时间窗口。编制报告前先做一次关联完整性检查,统计未关联用例的需求数、未关联需求的缺陷数,把这些数量作为数据质量说明附上,比直接给出精确数字更有参考价值。
测试报告的数据可以直接用于发布门禁判定吗?
数据可以复用,判定规则不能混用。测试报告提供当前版本的执行率、通过率、缺陷分布和需求覆盖率,这些是门禁判定的输入;门禁本身关注的是通过条件与阈值,例如严重缺陷是否清零、通过率是否达到约定水平,属于发布审批规则。同一批数据在报告和门禁中使用时口径可以不同,关键是各自写清口径,避免把门禁阈值当成报告结论,也避免用报告口径直接推导发布决策。
