第4代白盒测试方法之“为什么要做白盒测试”

本文探讨了白盒测试的含义,特别是在IBM IPD流程和极限编程(XP)实践中的应用。白盒测试关注代码层面,常分为单元和集成测试。通过一个面包机的比喻解释其必要性,旨在清除软件中的Bug。
摘要由CSDN通过智能技术生成
 

软件白盒测试是一个与黑盒测试相对的概念,是指测试者针对可见代码进行的一种测试。白盒测试通常再划分为单元测试、集成测试两大类,但依据不同的流程,对白盒测试细分的标准也不尽一致,比如在IBMIPD流程之下,白盒测试可能划分为如下几类:模块单元测试、模块集成测试、模块系统测试、渐增Build集成测试、系统集成测试等。而在XP实践中,单元测试与集成测试之间的界限并不明显,统称为渐增迭代测试。

 

一、从一个比喻开始

为什么要做白盒测试?这个问题比较复杂,我们先从一个比喻开始讲起。

假设有一台的面包机,从上面倒入面粉与水,开动机器后从下面出来的就是烤好了的面包,这个机器的功能比较单一,接口很清晰,输入是面粉与水,输出是面包。现在假定这个面包机多年未用,内部都生锈了,现在要清洗它,类似于我们开发的软件,软件有Bug,那得通过测试来清理。

图:清洗面包机

那如何更快速的清洗这台面包机呢?有两种洗法,一是拿水从上往下灌,这是系统测试的方法。另一种是拆开来洗,拆开机器后,拿抺布沾点清洁剂,把各零件的坑坑槽槽擦洗一遍,然后组装回来,再用水从上往下冲一遍,拆开来洗是白盒方法,组装回来用水冲是黑盒方式,相当于白盒测试之后再追加一次系统测试。

无疑,上面第二种方法是正确的,我们的前提是:清洗多年未用的面包机,铁锈够多,如果洗不干净,造出的面包都是致癌物质。当然,清洗面包机还只能算简单劳动,清理软件中的Bug要复杂得多,一个if语句有两条分支,一个while循环判断也是两条分支,还有breakcontinuereturn等,想想看,一个1万行规模的软件能有多少个分支!一个分支就是一条坑坑槽槽,而且软件Bug还具备动态特性,不是静止的明摆在哪儿。

所以,软件的白盒测试不可或缺,因为遗留Bug的影响很大,就像面包机没洗净留铁锈会致癌,还因为软件系统远比面包机复杂,不拆开来怎么能洗干净!

 

二、白盒测试是高效测试

尽管白盒测试如此重要,为什么还有许多企业不愿做白盒测试,有一个很重要的原因是:认为白盒测试太低效,不值得去做。

实际上这种观点有许多误解成分,首先,决策者评估各阶段测试的有效性,仅以发现问题的数量为依据,这好比锈蚀斑斑的面包机,第一次冲水下去,看到大量浊水流出就很有成就感,其实这只是表象,思维方式有不足:把发现问题与解决问题割裂开来了。

我们测试的目标是按既定质量标准稳定推进产品研发进度,只做系统测试的结果是:第一次冲水,很有成效,第二次冲水,还能冲出点铁锈,第三次就没什么效果了。采用该手段并不能有效的达成既定质量目标。其次,研发质量改善,不只发现问题,还要定位问题、解决问题。白盒测试是拆开来洗,发现、定位与解决问题不仅是彻底的,也是直接的,效率非常高,所以,单以发现问题数评估一个测试过程是否有效不尽准确,我们应该综合评估一

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值