专业书籍精读 · 持续交付 · 第 8 章

自动化验收测试

Continuous Delivery · Ch 8 · Jez Humble & David Farley · 2010

EN →

这一章讲什么?

你在手机上下单、付款、收到一条确认短信——这一整串事情到底走没走通,得有人检查。上一章那道关只检查零件:每个小零件单独看都没毛病。这一章讲下一道关:把整台机器装起来,从头到尾走一遍,看用户真正想要的那件事有没有做成

打个比方

像新房验收。查水泥标号、量钢筋直径,那是零件检查;验收是另一回事——挨个拧开水龙头看出不出水,按下每个开关看灯亮不亮,关上门看锁不锁得住。零件全合格但马桶不冲水,房子照样不能住。

反直觉的地方在这儿:这份验收清单最值钱的时刻,不是装修完那天,而是开工之前。清单一列出来,双方当场发现「你说的封阳台和我理解的不是一回事」——这时候改只是改一句话,等墙砌好再改,就得砸墙。

旧世界为什么难

过去这活全靠人干:一屋子人拿着清单一条条手工点。麻烦在于每改一个地方,理论上整张清单都得重点一遍——你动了付款按钮,谁敢保证注册流程没被带坏?人工点一轮要好几天,于是团队只好少发几次版;少发版就攒下更多改动,攒得越多越容易出事,绕回上上章那个死循环。

而且人做重复检查会累、会跳、会想「上次没问题这次应该也行」。最枯燥的活,恰恰最不该交给人。

它靠什么把这事掰直

第一,把验收清单写成机器能跑的东西,而且用业务的话写。「一个新客户下了一单,付款成功后,他应该收到一封确认信」——这一句话本身既是需求,也是测试。写它的时候客户、分析、开发、测试都在场,含糊的地方当场就暴露了。

第二,也是这一章真正的手艺:把「要检查什么」和「具体怎么点」彻底分成两层。上面几千条清单只说「登录、下单、付款」;最底下单独留一层,专门知道登录按钮长在哪儿、叫什么名字。按钮挪了位置,只改最底下那一层的一句话,上面几千条一个字都不用动。绝大多数团队的验收测试之所以贵到养不起,就是没切这一刀。

第三,能不隔着界面点,就别隔着界面点。走界面又慢又容易被一点点排版改动绊倒;绕到界面背后直接跟系统说话,同一件事快十倍,也稳得多。

它能带来什么

最大的好处是让人敢改代码:改完把整套业务流程重跑一遍,全绿,你就敢按发布键。它真正的身份不是「找 bug 的工具」,是一张让人敢动手的安全网

当然它有代价:这类检查天生又慢又贵,跑一轮几十分钟起步,所以它永远只能是少数——绝大多数检查该在上一关用便宜手段做完。

一句话记住

验收测试回答的不是「代码写对了吗」,而是「用户要的那件事,做出来了吗」;它能不能养得活,取决于你有没有把「验什么」和「怎么点」分开

想看那两层具体怎么切、为什么不能录制回放、几千条端到端测试真跑得动吗? → 切到精读版