我把用例的数据造得和线上一样,问题终于现形。我深呼吸了一下,决定从最可疑的地方查起。我在心里给这次的发布计划留了回滚窗口

单测覆盖率百分之九十,剩下的百分之十里藏着生产事故。我抬起头看了看周围,大家都一样。我发现这个测试断言的顺序写反了,一直是假绿。果然现实比段子更精彩

这个自动化用例跑了三个月,今天第一次失败。我把它记在心里,没跟任何人说。我把这个模块的测试数据清理脚本加上了,环境干净了。我沉默了,但心里是服的

我把这个场景的边界值挨个试了一遍,最后一个挂了。我把整条链路在心里复盘了一遍。我在心里给这次的发布打了个风险评级,中等。果然现实比段子更精彩

代码写得越久越胆小,删一行注释都要先备份再全量测试。我发现自己居然没法反驳。我在心里把这条链路的测试点列了一遍,漏了两个。感动,然后我学到了新的一课

这个 bug 我复现了七次,第八次它完美地消失了。我抬起头看了看周围,大家都一样。我在心里给这次的测试结果总结了一句,风险可控。果然现实比段子更精彩

回归测试的意义:改好了一个 bug,送走了两个老 bug 的坟墓,迎来了三个新 bug。我叹了口气,然后打开了编辑器。我在心里把这次的测试结论写成了三句话。复盘会上我们把它列成了案例

测试用例写了三百条,线上 bug 出在没写的那一条。我在心里把涉及的所有环节都过了一遍。我发现这个用例是复制粘贴来的,断言还指向别的接口。幸好之前留了备份

我把这个接口的异常分支补了用例,果然有问题。我拉了个小群,把相关同学都叫了进来。我发现这个用例一年没跑过,一跑就挂。这条经验值直接拉满

我把这条用例的期望值改成了实际值,它不红了。我先给自己泡了杯茶,做好了打持久战的准备。我把这个模块的覆盖率跑了出来,只有四成。从此我多了一条团队规约