![软件单元测试](https://wfqqreader-1252317822.image.myqcloud.com/cover/132/47549132/b_47549132.jpg)
1.4 软件测试金字塔
谈到软件测试金字塔,就不得不提到Mike Cohn版本的测试金字塔,如图1-1所示。Mike Cohn认为开发一个软件产品需要最多的是单元测试,其次是接口测试,最后是UI(User Interface,界面)测试。
在软件测试金字塔模型中,越往上需要集成得越多,修复缺陷的速度越慢,消耗的成本越高;反之,越往下需要集成得越少,修复缺陷的速度越快,消耗的成本越低。2009年,在伦敦召开的XP日会议上,Google发布了一份报告,报告指出:在单元测试阶段修复缺陷的成本为5美元,构建阶段修复缺陷的成本为50美元,集成测试阶段修复缺陷的成本为500美元,系统测试阶段修复缺陷的成本为5000美元。
根据Mike Cohn测试金字塔模型,Google也提出了自己的测试金字塔模型,如图1-2所示。
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_18_1.jpg?sign=1738820100-FZcRT7Hb2zvR81VTnu5jM2RNOls18O05-0-21ce4dcdd0c467fc27267db014bcc7ef)
图1-1 Mike Cohn版本的软件测试金字塔模型
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_18_2.jpg?sign=1738820100-D4uCQws30QENg3sYDbwTH6VquaxhL0OP-0-c6709222d05a66fa64078d8a41bb5751)
图1-2 Google版本的软件测试金字塔模型
我们可以认为单元测试为小型测试,接口测试为中型测试,UI测试为大型测试,可见Mike Cohn版本的软件测试金字塔模型与Google版本的本质上是一致的。
上面所述的软件测试主要是指自动化测试,而探索式测试也是不可被忽略的。据统计,基于接口和UI的自动化测试在回归测试中占有重要作用,而探索式测试对于发现产品新功能中的缺陷起着至关重要的作用。因此,在Mike Cohn软件测试金字塔模型上加上探索式测试,就形成了图1-3所示的改进版的软件测试金字塔模型。
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_19_1.jpg?sign=1738820100-ITEE0MXj8nKO6uFMBDzam0OPTFR73ZNa-0-ca14a46ae3ede2317cef51e178ac10aa)
图1-3 Mike Cohn改进版的软件测试金字塔模型
单元测试的缺点是减缓研发的速度,特别是在产品初期,这显然不符合互联网公司提出的“快鱼吃慢鱼”的思想,由此提出缩小单元测试的规模,扩大接口测试的规模,故形成了蜂巢形模型或纺锤形模型,如图1-4和图1-5所示。
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_19_2.jpg?sign=1738820100-QDePjWlEIt0IFof1eSSVEaPOvrlGPSS5-0-724fe83156bc4f057897fc2c4022141d)
图1-4 蜂巢形模型
![](https://epubservercos.yuewen.com/BF62AD/26947397804628406/epubprivate/OEBPS/Images/45509_19_3.jpg?sign=1738820100-HksQLIjb2IwuWTSmMR5aEtiR9zsb3bmH-0-0f4f2a28b090061960b829aecfed9c5c)
图1-5 纺锤形模型