需求测试关联表是把需求条目与验证它的测试用例逐条建立对应关系的记录表,核心字段包括需求标识、测试用例标识和关联状态。它既是覆盖矩阵的数据来源,也是判断测试是否足以支撑需求验收的依据。下面从定义、边界、判定机制、示例和维护要点五个方面说明。
要点总览(TL;DR)
- 需求测试关联表是记录“哪条需求由哪些测试用例验证”的对照表,核心字段为需求标识、测试用例标识和关联状态。
- 它是覆盖矩阵的数据来源:按需求为行、用例为列展开后,可直观看出哪些需求没有测试在管。
- 测试充分性判断要同时看关联状态和执行结果,只有关联没有执行,说明验证尚未完成。
- 需求覆盖率的口径需事先约定,是否排除失效关联、是否包含本期不验证的需求,都会影响数字。
- 关联表只处理需求与测试用例这一段,整链路追溯和代码覆盖率属于另外的管理范畴。
需求测试关联表的核心定义
需求测试关联表是一份“哪条需求由哪些用例来验证”的对照记录。它把需求库中的每一条需求,与测试用例库中负责验证它的用例建立一条或多条关联,并记录这条关联当前是否有效。团队用它回答两个问题:某条需求有没有测试在管;某个用例失败时会影响哪些需求的验收结论。
这张表通常由测试负责人或测试设计人员在需求评审通过、测试设计阶段建立,在需求变更、用例增删时同步更新。它解决的是需求与测试之间“对不上号”的问题——没有这张表,测试执行完了也很难说清哪些需求真正被验证过。
覆盖矩阵是把关联表按“需求为行、用例为列”展开后的视图,关联表本身是它的数据来源。两者是同一份数据的不同呈现方式,关联表偏记录,覆盖矩阵偏阅读和判断。
一张最小可用的关联表,字段构成可以如下:
| 字段 | 作用 | 是否必需 |
|---|---|---|
| 需求标识 | 指向需求库中的唯一条目,如需求编号或标题 | 必需 |
| 测试用例标识 | 指向用例库中的唯一用例,如用例编号 | 必需 |
| 关联状态 | 标记该关联有效、待确认或已失效 | 必需 |
| 关联类型 | 区分主验证用例与辅助验证用例 | 可选 |
| 最近执行结果 | 通过、失败、未执行、阻塞 | 可选,可由执行记录带入 |
| 更新人与更新时间 | 便于追溯关联变更 | 可选 |
字段不必求多,需求标识、用例标识、关联状态三项齐全,这张表就能支撑基本的覆盖判断;其余字段用于提高可追溯性和判断精度。
它不包括什么:边界与相邻概念
需求测试关联表在测试管理中处于“连接需求与用例”的位置,容易与几个相邻概念混为一谈。区分清楚,才能避免把不同工具的输出当成同一件事。
与需求追溯矩阵的分工。需求追溯矩阵覆盖的范围更宽,通常沿需求—设计—开发任务—测试—发布这条链路记录上下游关系,用于变更影响分析和审计。需求测试关联表只处理“需求—测试用例”这一段,是追溯矩阵中测试环节的局部数据。整链路的追溯管理属于需求追溯与覆盖管理的范畴,本文不展开。
与代码覆盖率的区别。代码覆盖率由插桩工具在代码运行过程中采集,统计的是测试执行触达了哪些代码行、分支或函数,回答“代码被执行了多少”。需求测试关联表统计的是需求有没有对应用例、用例有没有通过,回答“需求被验证了多少”。前者衡量实现层面的执行广度,后者衡量需求层面的验证完整性,两者口径不同,不能互相替代。
与测试用例库、测试执行记录的区别。用例库存放用例本身的内容,包括步骤、预期结果和前置条件;执行记录存放某次测试计划中每条用例的实际执行结果。关联表只保存“需求—用例”的对应关系和关联状态,不重复存放用例正文,也不承担执行结果的原始记录。执行结果可以作为字段引入关联表用于判断,但源头仍在执行记录中。
| 概念 | 回答的问题 | 数据来源 |
|---|---|---|
| 需求测试关联表 | 哪条需求由哪些用例验证 | 测试设计时人工或半自动建立 |
| 需求追溯矩阵 | 需求在整条交付链路上流向哪里 | 各环节工作项的关联汇总 |
| 代码覆盖率 | 测试执行触达了多少代码 | 插桩工具运行时采集 |
| 测试用例库 | 用例怎么设计、步骤是什么 | 测试设计产出 |
| 测试执行记录 | 某次执行中每条用例结果如何 | 测试计划执行过程 |
关联表如何支撑覆盖矩阵与充分性判断
关联表转化为覆盖结论,要经过“展开矩阵—计算覆盖率—判定充分性”三个步骤。每一步的口径需要事先约定,否则同一份数据可能得出不同结论。
第一步:展开覆盖矩阵。以需求为行、测试用例为列,单元格填入关联状态。某条需求与某个用例有关联,对应单元格标记为已关联;没有关联则留空。矩阵的行数等于纳入本次判断的需求条数,列数等于参与验证的用例数。矩阵的价值在于一眼看出哪些需求行是空白的,哪些用例列承担了过多需求。
第二步:计算需求覆盖率。常见口径是:需求覆盖率 = 至少有一条有效关联用例的需求数 ÷ 纳入统计的需求总数 × 100%。这里有两个口径需要明确:一是“有效关联”是否排除已失效和待确认的关联;二是分母是否包含本期不计划验证的需求。口径不同,算出的数字差别可能很大,团队应在测试计划中写清楚。
第三步:判定测试充分性。覆盖率达标只是必要条件之一。常见的充分性判定会同时检查以下条件:
- 每条需求至少有一条有效关联用例,且关联状态为有效;
- 关联用例已在本次测试计划中执行,执行结果为通过;
- 失败或阻塞的用例已有对应缺陷记录,并明确是否影响需求验收;
- 需求变更后新增或修改的部分,已补充关联用例。
关联状态和执行结果在这里各司其职:关联状态回答“这条需求有没有测试在管”,执行结果回答“这些测试是否已经跑通”。只有关联没有执行,说明测试设计完成但验证未完成;只有执行没有关联,说明跑了测试但说不清覆盖了哪条需求。两者结合,才能得出“测试是否足以支撑需求验收”的结论。
需要说明的是,上述计算口径和判定条件是测试管理中的常见做法,不同组织会按项目风险、行业要求调整阈值和检查项,不存在统一标准。
一个具体例子:三条需求的关联与覆盖结论
以下为演示情景,数据为虚构,仅用于说明判定过程。
某版本计划交付三条需求:R1 用户登录支持手机号、R2 登录失败锁定、R3 登录日志导出。测试设计人员编写了四条用例:C1 手机号登录成功、C2 密码错误提示、C3 连续失败锁定、C4 日志导出格式校验。
关联表填写如下:
| 需求标识 | 测试用例标识 | 关联状态 | 最近执行结果 |
|---|---|---|---|
| R1 | C1 | 有效 | 通过 |
| R1 | C2 | 有效 | 通过 |
| R2 | C3 | 有效 | 失败 |
| R3 | C4 | 待确认 | 未执行 |
展开为覆盖矩阵:
| 需求 | C1 | C2 | C3 | C4 |
|---|---|---|---|---|
| R1 | 已关联·通过 | 已关联·通过 | — | — |
| R2 | — | — | 已关联·失败 | — |
| R3 | — | — | — | 待确认·未执行 |
按“至少有一条有效关联用例”的口径计算,R1、R2 计入覆盖,R3 的关联处于待确认状态,若口径排除待确认关联,则覆盖率为 2÷3≈67%。
充分性结论:R1 的关联用例均已通过,可以支撑验收;R2 有有效关联但执行失败,需要确认缺陷修复后复测,暂不能判定充分;R3 的关联尚未确认且用例未执行,属于明显缺口,需要先确认 C4 是否确实验证日志导出需求,再安排执行。这个例子说明,覆盖率数字本身不足以说明问题,缺口定位才是关联表的主要输出。
常见误解与维护要点
关联表用错,往往不是字段设计的问题,而是把“有关联”当成了“已验证”。以下误解在评审中比较常见。
- 有关联即算覆盖。关联只说明测试设计时认为这条用例能验证该需求,用例未执行或执行失败时,需求并未真正被验证。判断覆盖时应把关联状态和执行结果一起看。
- 一条用例关联多条需求就默认全部覆盖。一条用例覆盖多条需求是正常做法,但需要确认该用例的步骤和断言确实分别验证了每条需求的关键点。若用例只验证了其中一条,其余关联应拆分为独立用例或补充断言。
- 失效关联未清理。需求被拆分、合并或取消后,原关联仍留在表中,会让覆盖率虚高。需求变更时应同步检查并关闭失效关联。
- 只建表不评审。关联表在测试设计评审时若不被检查,容易出现漏关联和错关联,等到执行阶段才发现缺口,返工成本更高。
保持关联表可信,维护责任和更新时点需要明确:测试设计人员负责建立和修改关联,需求负责人在需求变更时通知测试侧,测试负责人在每轮测试计划启动前核对关联完整性。评审时的检查点可以包括:每条本期需求是否至少有一条有效关联;新增或变更需求是否已补充用例;失效关联是否已关闭;关联用例的执行结果是否已回填。
在工具层面,ONES TestCase 支持测试用例与需求、任务关联,测试计划与迭代关联,形成测试流程闭环;其质量统计报表可自动生成测试报告。团队可以把关联关系随需求条目和用例一起维护,在测试计划执行后结合执行结果核对覆盖情况。ONES ALM 方案进一步把测试用例、缺陷、版本和发布过程关联到需求链路中,便于在需求变化时沿关联关系分析受影响的任务、测试和交付内容。具体报表指标口径和关联维护机制以实际部署版本为准。
常见问题
需求测试关联表和需求追溯矩阵可以合并成一张表吗?
可以合并,但需要区分用途。需求追溯矩阵覆盖需求、设计、开发任务、测试、发布整条链路,需求测试关联表只处理“需求—测试用例”这一段。如果团队规模不大、工具支持在同一工作项上挂多类关联,把测试关联作为追溯矩阵的一部分维护,能减少重复录入;如果测试设计由独立团队负责、需要单独评审关联完整性,保留一张聚焦需求与用例的关联表更便于检查。合并与否取决于评审流程,不改变两者的判断口径。
一条测试用例关联了多条需求,覆盖率怎么算?
按需求侧统计即可:只要某条需求至少有一条有效关联用例,这条需求就计入覆盖,与它关联了几条用例无关。一条用例关联多条需求时,需要确认该用例的步骤和断言确实分别验证了每条需求的关键点;若只验证了其中一条,其余关联应拆分为独立用例或补充断言,否则覆盖率会偏高。用例侧可以另外统计“一条用例平均覆盖多少需求”,用于识别用例设计粒度过粗的情况。
需求在迭代中途变更,关联表应该什么时候更新?
建议在需求变更被确认时同步更新,而不是等到测试执行前统一处理。需求拆分、合并或取消后,原关联若继续保留,覆盖率会虚高;需求新增验收点时,需要补充对应用例再建立关联。实际操作中可以把“关联是否已同步”作为需求变更流转的一个检查项,由需求负责人通知测试侧,测试设计人员完成关联调整后再进入执行。
覆盖率达到了约定阈值,是否就可以判定测试充分?
覆盖率达标只是必要条件之一。充分性判断通常还要检查:关联用例是否已在本次测试计划中执行并通过;失败或阻塞的用例是否已有缺陷记录并明确对需求验收的影响;需求变更部分是否补充了关联用例。覆盖率回答“需求有没有测试在管”,执行结果回答“这些测试是否跑通”,两者结合才能支撑验收结论。阈值本身也应按项目风险设定,高风险需求可以提高要求。
用工具管理关联关系时,需要关注哪些能力?
主要看三点:用例能否直接关联到需求条目并在需求侧查看;关联关系能否随需求变更同步调整、失效关联能否关闭;测试计划执行后执行结果能否回填到关联视图用于覆盖核对。以 ONES TestCase 为例,其官网说明支持测试用例与需求、任务关联,测试计划与迭代关联,并提供质量统计报表自动生成测试报告;ONES ALM 方案把测试用例、缺陷、版本和发布过程关联到需求链路中。具体报表指标口径与关联维护机制以实际部署版本为准。
