
1.4 软件测试金字塔
谈到软件测试金字塔,就不得不提到Mike Cohn版本的测试金字塔,如图1-1所示。Mike Cohn认为开发一个软件产品需要最多的是单元测试,其次是接口测试,最后是UI(User Interface,界面)测试。
在软件测试金字塔模型中,越往上需要集成得越多,修复缺陷的速度越慢,消耗的成本越高;反之,越往下需要集成得越少,修复缺陷的速度越快,消耗的成本越低。2009年,在伦敦召开的XP日会议上,Google发布了一份报告,报告指出:在单元测试阶段修复缺陷的成本为5美元,构建阶段修复缺陷的成本为50美元,集成测试阶段修复缺陷的成本为500美元,系统测试阶段修复缺陷的成本为5000美元。
根据Mike Cohn测试金字塔模型,Google也提出了自己的测试金字塔模型,如图1-2所示。

图1-1 Mike Cohn版本的软件测试金字塔模型

图1-2 Google版本的软件测试金字塔模型
我们可以认为单元测试为小型测试,接口测试为中型测试,UI测试为大型测试,可见Mike Cohn版本的软件测试金字塔模型与Google版本的本质上是一致的。
上面所述的软件测试主要是指自动化测试,而探索式测试也是不可被忽略的。据统计,基于接口和UI的自动化测试在回归测试中占有重要作用,而探索式测试对于发现产品新功能中的缺陷起着至关重要的作用。因此,在Mike Cohn软件测试金字塔模型上加上探索式测试,就形成了图1-3所示的改进版的软件测试金字塔模型。

图1-3 Mike Cohn改进版的软件测试金字塔模型
单元测试的缺点是减缓研发的速度,特别是在产品初期,这显然不符合互联网公司提出的“快鱼吃慢鱼”的思想,由此提出缩小单元测试的规模,扩大接口测试的规模,故形成了蜂巢形模型或纺锤形模型,如图1-4和图1-5所示。

图1-4 蜂巢形模型

图1-5 纺锤形模型