我对白盒测试的理解

上一篇 / 下一篇  2013-10-15 00:17:07 / 个人分类:

我对白盒测试的早期理解

 

白盒测试与黑盒测试的区别

能过黑盒测试,不能保证能过白盒测试,反过来,能过白盒测试,一般能保证过黑盒测试的。下面可以来说明这一个观点。

首先我们要分析白盒测试与黑盒测试的区别,我认为,这两者的区别可以概括为一句话:黑盒测试是以验证结果为导向的测试执行,白盒测试是以验证过程为导向的测试执行。这句话同时能说明白盒测试执果索因,能从根本上解决软件bug。

 

引用现实中的一个例子来说:打印机。放进去一张白纸,送出来的一张纸上便印上去

了我们需要的信息。我们需要做的操作是:step1:把白纸平放进去。step2,打开word文档,或PDF文档等,做一些必须的打印配置,比如单面打印,打印1份;单面打印,打印5份;双面打印,打印1份;双面打印,打印5份。step3,鼠标打击打印按钮。step4,等待打印机完成打印操作。step5,打印完成。

那么,这种方式对打印机系统的测试可以叫做是黑盒测试方法。在用这种测试方法时,打印机表现给我们看的是他接收“输入”处理完后的“输出”,没有展现出给我们看他的“处理细节”,也就是说,详细的操作流程对于我们来说是不可见的,就像封装起来的盒子,谁也不知道盒子里装什么了。试想,打印机“输出”异常时,已经排除是设备硬件故障了,我们如何知道软件系统bug出现在哪里了,这就需要我们对打印机软件系统作白盒测试了。

如果我们要对打印机系统做白盒测试,这会成为一项很大的工程。首先,我们要拿到打印机的软件系统规格说明书和软件系统程序清单。接着,我们要分析软件系统自上至下的体系结构,层层拨开这个黑盒子的内幕。这里有几种工程实践方法:1,基本路径覆盖测试方法;2,分支-条件测试方法;3,循环测试方法。我们可以综合使用这几种方法,运用图论,把所有的程序语句或功能模块(或函数)用一个节点表示,把程序语句执行的方向或功能模块(或函数或文件)调用与被调用的关系用一个有方向的直线表示,然后用直线把所有的节点给衔接起来,其实这就是构造程序流程图的过程。当程序流程图成型之后,我们可以把流程图中的所有执行路径罗列成一个列表,这个表中的每一个条目就能形成一个白盒测试用例,通过执行这个测试用例,我们就能确定程序执行时,执行到这条路径上是否能通过。列出程序执行的所有路径仍然还不够,我们还要对这些路径做一次等价类划分,有一种实践经验是把终止于同一节点的所有路径归为一类,并给这些路径统一做一个标识,我们在搭建三角形函数白盒测试框架就是这样做的。最后,把这些白盒测试用例执行转换成自动化完成。这一步能成功达成,白盒测试工具也就开发出来了,想想是可行的,但又觉得困难重重。

这么一分析,我们自然明白为什么能过白盒测试,一般能保证过黑盒测试的,原因很简单,白盒测试保证了程序的每一条执行路径都符合逻辑,自然能保证这个软件系统表现出来的行为也会符合逻辑,功能实现不会出现问题。

这里只是笼统的介绍了一下白盒测试,白盒测试工程方法远不止这么简单。

补充介绍:白盒测试之静态白盒测试和动态白盒测试。

我们知道达成结果的方法或途径可以有多种,同样的,设计程序时,可以用不同的操作流程实现,即使用的操作流程一致,也有可能对操作流程的描述会出现差异。不同的操作流程和不同的描述自然有质量差异,说白了,白盒测试就是测试软件操作流程和对操作流程的描述,前者就是白盒测试方法中的动态测试,后者就是白盒测试方法中的静态测试。做静态测试时,我们不让程序运行,我们审阅源代码,分析语法规则,体系结构。做动态测试时,我们让程序运行起来,构造程序“输入”,判断程序“输出”,从而确定程序的操作流程是否都有执行,是否执行成功。


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 5775
  • 日志数: 8
  • 建立时间: 2013-10-15
  • 更新时间: 2014-06-15

RSS订阅

Open Toolbar