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

实施测试策略

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

EN →

这一章讲什么?

你手机里的 App,每次更新前都得有人确认「它没坏」。问题是:要确认的东西成千上万,谁来确认、什么时候确认?《持续交付》第 4 章的答案不是「多测一点」,而是把「测」拆成几种完全不同的活,分给不同的人和不同的时机

打个比方

盖一栋楼,有三种检查。第一种:工人每砌一段墙,随手用水平尺量一下——几秒钟,而且一量就知道是哪块砖歪了。第二种:一层封顶后走一遍,试试水电通不通——慢一些,但能查出单块砖看不出来的问题。第三种:楼盖好了请个老验房师进去转两天,他会打开你根本没想到要打开的柜门,说「这个门框,人拎着行李根本转不过身」。

三种缺一不可,性价比却天差地别。可怕的是很多团队只有第三种——墙砌到十八层都没人拿水平尺量过,等验房师说「三楼开始歪了」,那已经是要拆的量级。

旧世界为什么难

过去的默认干法:程序员写完扔给专门的测试组,最后几天集中人手,照着一张几百条的清单从头点一遍。三件事必然发生。一,反馈太晚——问题是三周前埋下的,写的人早忘了当时怎么想。二,成本只会涨——功能越加越多,清单越来越长,发布还想越来越快。三,做过的功课不能存档——这轮点完,下轮还得从头再点,谁也说不准漏了哪几条。

核心点子

这一章把测试按两个问题重新分类:这个检查是想「帮团队别做错」,还是想「挑出做出来的东西哪儿不对」?它关心「业务上对不对」,还是「技术上稳不稳」?两两一组,正好四类活。

分完之后,最关键的那条分工线就自己浮出来了:每次都一样、答案只有对或错的检查,交给机器每天自动跑几千遍;要靠好奇心和经验去「找你根本没想到的问题」的,留给人。把这两者搞反,才是多数团队真正的病根:机器闲着,人却在一遍遍手工点那张清单。

那该怎么分工

机器负责的部分自己还要分层:又快又小的检查多做(几千个,几分钟跑完,一红就知道是哪块砖),慢而全的整体检查少而精(几十个,管的是「用户能不能把钱付出去」)——因为整体检查慢、贵,还常会无缘无故失败一次,堆多了就没人信它。

人这边正相反:把照着清单点屏幕的事全交出去,换来的时间用在「像个真实用户那样去乱逛,看能撞出什么」——机器只会检查你事先写下的那几条。

一句诚实的代价:自动化测试本身也是代码,要写、要养,写歪了会天天误报、拖慢所有人,最后被整队一起无视。

一句话记住

测试不是发布前的最后一道工序,而是从第一天起就并行的一堆不同的活。能重复的交给机器、多做小的少做大的;靠创造力的留给人——两者都要,但千万别互相顶替。

想进到四象限、分层比例、对比表和流水线落位图? → 切到精读版