软件测试技术——白盒测试
1
白盒测试(White Box Testing)
软件测试人员可以访问
程序员的代码,并通过
检查代码来测试,可以
看到盒子里面以及里面
是如何运作的。
被测试的软件
2
贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
3
讨论
白盒测试也通常被认为是单元测试与集成测试的统称,但这个概念是相对的,与当前项目遵循的研发流程有关,某些流程把白盒测试划分为单元测试与集成测试,而另一些流程,把白盒测试划分为模块单元测试、模块系统测试、多模块集成测试,还有一些流程把单元测试与集成测试混为一体,统称为持续集成测试。
4
采用白盒测试方法必须遵循以下几条原则
保证一个模块中的所有独立路径至少被使用一次
对所有逻辑值均需测试true和false
在上下边界及可操作范围内运行所有循环
检查内部数据结构以确保其有效性
在上下边界及可操作范围内运行所有循环
5
白盒测试的其它称呼
玻璃盒测试(Glass Box Testing)
透明盒测试(Clear Box Testing)
开放盒测试(Open Box Testing)
结构化测试(Structured Testing)
基于代码的测试(Code-Based Testing)
逻辑驱动测试(Logic-Driven Testing)
6
本次课程的主要内容
为什么要进行白盒测试
静态白盒测试
动态白盒测试
7
从一个比喻开始
假设有一台的面包机,从上面倒入面粉与水,开动机器后从下面出来的就是烤好了的面包,这个机器的功能比较单一,接口很清晰,输入是面粉与水,输出是面包。现在假定这个面包机多年未用,内部都生锈了,现在要清洗它,类似于我们开发的软件,软件有Bug,那得通过测试来清理。
那如何更快速的清洗这台面包机呢?有两种洗法,一是拿水从上往下灌,这是系统测试的方法。另一种是拆开来洗,拆开机器后,拿抺布沾点清洁剂,把各零件的坑坑槽槽擦洗一遍,然后组装回来,再用水从上往下冲一遍,拆开来洗是白盒方法,组装回来用水冲是黑盒方式,相当于白盒测试之后再追加一次系统测试。
8
无疑,上面第二种方法是正确的,我们的前提是:清洗多年未用的面包机,铁锈够多,如果洗不干净,造出的面包都是致癌物质。当然,清洗面包机还只能算简单劳动,清理软件中的Bug要复杂得多,一个if语句有两条分支,一个while循环判断也是两条分支,还有break、continue、return等,想想看,一个1万行规模的软件能有多少个分支!一个分支就是一条坑坑槽槽,而且软件Bug还具备动态特性,不是静止的明摆在哪儿。
所以,软件的白盒测试不可或缺,因为遗留Bug的影响很大,就像面包机没洗净留铁锈会致癌,还因为软件系统远比面包机复杂,不拆开来怎么能洗干净!
9
白盒测试是高效测试
第一个误解:白盒测试太低效,不值得去做
针对一个功能点的测试,若将问题发现、定位与解决都计算进去,单元测试效率最高,是集成测试的2倍,是系统测试的3倍。
10
白盒测试-软件技术 来自淘豆网m.daumloan.com转载请标明出处.