快捷搜索:

为何进行白盒测试 从“清洗面包机”讲起

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

一、从一个比喻开始

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

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

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

无疑,上面第二种措施是精确的,我们的条件是:洗濯多年未用的面包机,铁锈够多,假如洗不干净,造出的面包都是致癌物质。当然,洗濯面包机还只能算简单劳动,清理软件中的Bug要繁杂得多,一个if语句有两条分支,一个while轮回判断也是两条分支,还有break、continue、return等,想想看,一个1万行规模的软件能有若干个分支!一个分支便是一条坑坑槽槽,而且软件Bug还具备动态特点,不是静止的明摆在哪儿。

以是,软件的白盒测试弗成或缺,由于遗留Bug的影响很大年夜,就像面包机没洗净留铁锈会致癌,还由于软件系统远比面包机繁杂,不拆开来怎么能洗干净!

二、白盒测试是高效测试

只管白盒测试如斯紧张,为什么还有许多企业不愿做白盒测试,有一个很紧张的缘故原由是:觉得白盒测试太低效,不值得去做。

实际上这种不雅点有许多误解因素,首先,决策者评估各阶段测试的有效性,仅以发明问题的数量为依据,这好比锈蚀斑斑的面包机,第一次冲水下去,看到大年夜量浊水流出就很有成绩感,着实这只是表象,思维要领有不够:把发明问题与办理问题割裂开来了。

我们测试的目标是按既定质量标准稳定推进产品研发进度,只做系统测试的结果是:第一次冲水,很有成效,第二次冲水, 还能冲出点铁锈,第三次就没什么效果了。采纳该手段并不能有效的杀青既定质量目标。其次,研发质量改良,不光发明问题,还要定位问题、办理问题。白盒测试 是拆开来洗,发明、定位与办理问题不仅是彻底的,也是直接的,效率异常高,以是,单以发明问题数评估一个测试历程是否有效不尽准确,我们应该综合评估一个问题从被发明,到定位、办理,以及针对它完成回归测试的总效率。

下图滥觞于Capers Jones与McGraw-Hill的“Applied Software Measurement”文章,从该统计数据可看出,针对一个功能点的测试,若将问题发明、定位与办理都谋略进去,单元测试效率最高,是集成测试的2倍,是系统测试的3倍。

觉得白盒测试低效的另一个误解是,决策者并未认清一个bug若遗留到下一阶段须多付出若干价值。履历数据注解,编码阶段的一个问题遗留到验收测试去办理,所须用度将增添5倍,如下图,一个问题越遗留到后面阶段办理,付出价值就越高,而且是成倍递增关系。

以是,越早测试就越能节约资源,白盒测试作为早期测试,跳过不做是得不偿掉的。

依据上述缘故原由,我们评估白盒测试效率时,平日将发明问题总数乘上一个系数K,以此为据再与其它测试方段的发明问题效率做比较,来权衡白盒测试值不值得去做。系数K取值与产品形态相关,按照实际履历,系数K取值区间为1.5~2.5,产品越繁杂,呈现问题越不轻易办理的,K值要往大年夜调。

三、白盒测试能彻底办理编码阶段引入的问题

前面我们阐发了白盒测试是高效的测试,值得一做,下面我们要接着阐明白盒测试必须要做,弗成或缺。

先看一个案例,在某互换机产品的系统测试中,发明ISDN话机拨打某新营业号码时,在特定线路上,若一位一位的拨至18位,不会有问题,但假如先拨完号码再成组发送,会导致系统逝世机。这是一个导致逝世机的致命问题,着末定位出问题所在:呼叫处置惩罚的某段代码判断有误,本应小于18的判断,错写成小于即是18。

您可能还会对下面的文章感兴趣: