测试环境最大的特点是它和线上不一样。我盯着屏幕,觉得这才是我的一天。我把这个接口的超时场景测了,降级逻辑没生效。感动,然后我学到了新的一课

单测覆盖率百分之九十,剩下的百分之十里藏着生产事故。我不知道该说什么,就笑了笑。我在心里给这次的测试时间估了个数,实际用了两倍。这条经验值直接拉满

测试用例写了三百条,线上 bug 出在没写的那一条。我把整条链路在心里复盘了一遍。我把这个断言改成了更宽松的,它就不红了。我把这条经验写进了团队 wiki

我把用例的数据造得和线上一样,问题终于现形。我先给自己泡了杯茶,做好了打持久战的准备。我发现这个用例的期望值是错的,一直在迁就代码。我把它写进了组内的避坑文档第一章

测试用例写了三百条,线上 bug 出在没写的那一条。这套流程走下来,我从头到尾又确认了一遍。我加了三道自动化检查,希望下次能早点发现。这条经验值直接拉满

质量不是测出来的,但漏了会被算在测试头上。我发现自己居然没法反驳。我把这条用例补进了回归清单,标了个醒目的红色。感动,然后我学到了新的一课

回归测试的意义:改好了一个 bug,送走了两个老 bug 的坟墓,迎来了三个新 bug。我抬起头看了看周围,大家都一样。我在这个用例上加了个断言,它立刻红了。连茶水间都安静了

我把用例的数据造得和线上一样,问题终于现形。我把整条链路在心里复盘了一遍。我发现这条路径从来没被任何自动化用例覆盖过。这条经验值直接拉满

我把这个功能的验收条件重读了一遍,有几条说了等于没说。我决定先把手上的事情做完再处理这件事。我把这个功能的回归用例精简了一半,覆盖没降。我沉默了,但心里是服的

每天最快乐的时刻:写下最后一个分号,跑完测试,全部通过。我在心里点了点头。我把这个接口的返回码逐个对了一遍,有一个不符合约定。世界瞬间清净了