
版本发布前,测试负责人常被问:这个 Bug 影响哪些需求,要回归哪些用例。答案如果只能从聊天记录、Excel 和测试平台里拼出来,问题就不在记录数量,而在对象之间没有形成可查询的关系。Bug 跟踪管理系统的价值,是让 Bug 能回到需求、用例和版本。
所谓 Bug 追溯链,是指需求、用例、Bug 和版本之间可以双向查询的关系。
一、追溯链断开的三个信号
先看三个信号。需求改了一条验收条件,测试范围靠回忆;失败用例转成 Bug 后,修复人看不到它覆盖哪条需求;发布前能统计 Bug 数量,却说不清哪些高风险需求尚未验证。
这些信号背后通常是三种记录方式:需求评审后只留下标题,验收条件散在文档里;用例按页面组织,而不是按研发需求组织;Bug 只填标题和重现步骤,影响版本、相关需求留空。每个环节都在记录,连起来却回答不了这次改动验证了什么。
据美国国家标准与技术研究院的规划报告 02-3(2002)的历史估算,软件错误每年给美国经济造成约 595 亿美元损失,其中超过三分之一可通过更好的测试避免。测试的效果不仅取决于用例数量,也取决于失败后能否定位影响范围,追溯链解决的正是后者。缺口通常就在需求到用例、用例到 Bug、Bug 到版本这三处。
二、一条可用的 Bug 追溯链由哪些对象组成
追溯链不是单向记录,而是三类关系在两个查询方向上的组合。需求说明为什么做,用例说明怎么验证,Bug 记录哪里失败,版本回答修在哪个版本,发布回答交付了什么。
三类关系是追溯链的基础:需求与用例是覆盖关系,用例与 Bug 是发现关系,Bug 与版本是修复验证关系。每条关系都要能双向查询。追溯链描述对象之间的关系。需求跟踪矩阵用来查看和导出这些关系;对象关联关系用来手动维护双向关系。
Bug 也可以直接关联研发需求,用于没有用例的线上反馈或探索性测试;这条直接关系是补充,不替代用例覆盖。
下表把三条关系的正向和反向查询并列:
| 关系 | 正向查询 | 反向查询 |
|---|---|---|
| 需求与用例 | 覆盖哪些用例,最近结果如何 | 用例在验证哪条需求,变更后是否调整 |
| 用例与 Bug | 失败后转成哪个 Bug,是否修复 | 由哪条用例发现,相邻场景是否受影响 |
| Bug 与版本 | 在哪个版本修复,是否回归 | 修了哪些 Bug,是否还有未闭环项 |
在变更和发布场景中,反向查询更容易暴露覆盖缺口。 只会从需求往下看,做的是测试计划;能从 Bug 往上追,才更容易做影响分析和发布判断。
三、先把需求拆到可测试的粒度
追溯链的质量在上游就决定了。需求如果只写一句优化登录体验,用例只能按页面写,Bug 也只能按现象记,三者很难建立稳定关系。
禅道把需求分为业务需求、用户需求、研发需求三个层级,用例关联的是研发需求。在当前设计中,一条用例只关联一个研发需求。
需求太粗,多条验收条件挤在一个研发需求里,Bug 回到需求后往往定位不到具体是哪条验收条件失效;需求太细,用例数量膨胀,维护成本上升。
一条研发需求应尽量对应一个可独立验收的交付单元。 比如,登录页支持手机号和验证码登录,可以作为研发需求;优化登录体验不适合。验证码 60 秒内只能发送一次,应写成可观察的验收条件,而不是留在需求描述里。
需求跟踪矩阵把三层需求,以及研发需求关联的任务、设计、用例、代码提交和 Bug 放在同一视图,支持导出和自定义列。它的用途不是汇报,而是让变更时先看到受影响的用例和 Bug。

四、把三条关系落到系统里
对象关系不会因为系统提供了字段就自动成立。对使用 Bug 跟踪管理系统的团队来说,真正要做的是把三条关系嵌入日常动作,让填写关系成为完成动作的一部分。以下操作以禅道当前版本为例;对象关联关系等企业版能力,以实际部署版本的菜单为准。
1. 需求与用例:覆盖率不等于用例数量
写用例时先选研发需求,再写步骤。一条研发需求可以对应多条用例,正常、异常、边界分别建;高风险需求再补权限、并发、兼容性。不宜用关联多少条用例来证明覆盖充分,重复用例只会让回归范围失真。
如果一条用例看起来覆盖了多条研发需求,先判断这些需求是否属于同一个验收单元。属于同一单元,合并为一条研发需求,把其余要求写成验收条件;不属于同一单元,按验收条件拆分用例,分别关联对应研发需求。在当前设计中,一条用例只关联一个研发需求,拆分比复制更容易维护。
撰写用例时可选相关研发需求,常用场景放进用例库复用。覆盖率检查通常看每条研发需求是否至少有一条正常流程和一条异常流程用例,而不是用例总数。

2. 用例与 Bug:让失败结果带上上下文
测试单是测试执行的载体。版本提交测试后创建测试单,按需求或套件关联用例,再逐条执行。用例失败时直接转 Bug,比事后在群里描述现象可靠,因为测试单、构建、用例和需求上下文已经在同一页面。
在系统中创建 Bug 时,影响版本、标题和重现步骤是基础字段;要让 Bug 能回到需求,还要补相关需求。严重程度是判断发布影响的因素之一,不宜只靠标题判断。只写标题的 Bug,很难在追溯链里被有效利用。
测试单关联用例的操作可参考提交测试单;用例详情页也可以关联 Bug。修复时填写解决版本,回归时回到原失败用例,确认通过后再关闭。没有对应用例的 Bug,确认需要修复后,关闭前应补一条回归用例。

3. Bug 与版本:用发布检查确认闭环
版本关联需求和 Bug,并进入测试与发布流程。创建版本时关联已完成的需求和已解决的 Bug,提交测试后生成测试单;测试通过后生成测试报告,再创建发布。版本因此能关联发布范围、修复内容和测试证据。
发布前建议设四项检查:高优先级需求对应用例全部通过;阻塞发布的 Bug 为零,严重 Bug 完成回归;需求、用例、Bug 都能关联到目标版本;例外项有明确责任人和处理计划。如果有一项不满足,说明发布证据还不完整,需要记录例外和补救措施。
版本与发布流程把需求、Bug、测试单、测试报告和发布放在同一条执行路径上。版本关联的需求和 Bug 就是本次测试范围,测试单的执行结果是发布证据的一部分。

五、按一条 Bug 走一遍
用一个场景走一遍。需求 REQ-102 是登录页支持手机号和验证码登录,验收条件包括验证码 60 秒内只能发送一次、过期后不能登录。测试人员设计四条用例:正确验证码、错误验证码、过期验证码、频繁发送。
版本 2.3.0 提交测试,测试单关联四条用例。过期验证码登录失败后转 Bug,填写影响版本、相关需求、重现步骤和严重程度。修复后填写解决版本 2.3.1,测试回到原失败用例回归,并补跑相邻的频繁发送用例,确认无新问题后关闭。
发布前从 REQ-102 正向查询,能看到四条用例、最近执行结果、关联 Bug 和修复版本。走查还暴露了一个缺口:缺少验证码复用场景。补上后,追溯链的收益不只是记录这次 Bug,而是让一次失败变成下次可复用的测试用例。
六、怎么验证追溯链真的通了
发布前可以做四次演练。
正向查询:任选一条研发需求,在不搜索标题的情况下找到关联用例、最近执行结果、未关闭 Bug 和目标版本。反向查询:任选一个线上 Bug,找到对应需求、发现它的用例,以及同类场景是否还有未覆盖的用例。
变更演练:修改一条验收条件,看系统能否列出受影响用例和 Bug;只能靠人回忆,说明这些关系还没有进入系统。发布演练:冻结一个版本,检查四项发布条件能否用系统数据回答,而不是靠会议口头确认。
四个指标帮助判断趋势:需求用例覆盖率、Bug 的相关需求填写率、失败用例转 Bug 的比例、发布前未闭环 Bug 数。这些指标用于发现流程异常,不用于个人考核。 比例突然下降,可能意味着失败没有被如实记录。
企业版 11.1 的对象关联关系支持在需求、任务、Bug、用例、文档等对象间建立双向关联,并提供关系图谱。系统流程自动形成的关系也会保留,例如需求产生任务、Bug 关联到版本。在实际项目中,双向关系通常更容易支撑变更影响分析。
治理上,建议按迭代抽查固定数量的需求和 Bug;发布前由测试负责人执行检查,产品经理确认范围,研发负责人确认修复版本。只建关系、不改流程,是常见的落地问题:字段可填可不填,评审也不看,关系很快缺失。

七、常见问题
1. 需求评审时还没有用例,追溯链怎么起步?
从研发需求的验收条件开始。评审时先确认每条验收条件都有明确的验证方式,再决定需要哪些用例。用例可以在测试设计阶段补,但验收条件不宜留到开发完成后再补。这样需求通过时,追溯链已经有起点。
2. Bug 关闭后才发现关联错了需求,怎么办?
先修正 Bug 的相关需求,再检查原需求和目标需求下的用例覆盖与影响版本。若 Bug 已进入发布版本,补充影响范围说明;若同类问题可能复现,把相关场景加入下一次回归范围。只改标题,历史记录仍然对不上。
3. 版本发布后才发现漏测,复盘先查什么?
先查漏测场景对应哪条研发需求、是否有用例覆盖、用例是否进入测试单。如果三者有一环缺失,更可能出在追溯链;如果都有记录但未执行,更可能出在测试执行。先补用例和回归记录,再决定是否需要补丁版本。
追溯链做没做好,不看系统里有多少条关联,而看三个问题能否被快速回答:这条需求验证过吗,这个 Bug 从哪来,这个版本凭什么发布。Bug 跟踪管理系统把这些答案放在同一条链路里。
文章标题 :Bug 跟踪管理系统的缺陷追溯链:如何与需求、用例打通 ,发布者 :项目管理研究院

































