返回知识库

调试与质量 · 修复与防回归

回归测试Regression Test

回归测试把曾经的故障锁成一条会失败的用例;红叉要拦合并,不能为了绿色删掉它。

先认出 CI 里这一行,再看它能不能拦住旧故障

下面就是锁定 BUG-184 的那条用例。跑改动后失败会写在该行并拦住合并;删掉它,套件变绿,旧坑却漏了。

CI · pull/184no lock
网络失败后邮箱仍在未锁定套件里还没有这行

套件里没有锁

还没有锁BUG-184 修过了,但 CI 里没有对应用例。下一步:先跑一遍,看旧坑会不会默默回来。

回归测试专门锁定曾经出现过的故障。红叉写在这一行上;为了绿删掉它的原因是想让套件变绿,下一步必须加回用例才能恢复拦截。

知识点:锁的是旧故障,不是新功能

上面的 CI 行已经演示了核心关系,这里只给可复用的命名。

  • 回归用例描述曾经发生过的故障,而不是「页面能打开」。
  • 失败必须能拦住合并;变绿不能靠删用例。
  • 修登录、升级表单库、改样式时都要继续跑这一行。

什么时候用、怎么用

issue 关闭后、相关代码还可能被动到时,把复现步骤写成回归测试。

  • 信号:同类修复第三次出现,或有人说「这以前修过」。
  • 不适用:还没有稳定复现,或用例依赖本机手工数据。
  • 最短路径:用原复现步骤写成断言 → 放进 CI → 失败即拦合并。

正反例:同一 BUG-184,只改 CI 里有没有锁

目标都是不让「网络失败清空邮箱」回来。差别只在红叉能不能拦住合并。

正例锁定用例 failed,合并被拦住

旧故障一回来就能看见,不会在发布后才被用户撞到。

反例没有用例,或为了绿删掉它

套件变绿不等于坑被填上;下一次改样式就会把旧故障带回来。

快速自测

登录修复已经合并,CI 全绿,但没有针对旧故障的用例。最大的风险是什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。