联系我:新浪微博@阳光下的云朵2012或者zhangcaiyun_86#163.com(将#换成@)

灰盒、白盒测试是什么?

上一篇 / 下一篇  2014-03-19 10:24:57 / 个人分类:测试技术

灰盒测试
灰盒测试这种测试方式主要用于多模块构成的稍微复杂的软件系统。在灰盒测试中,重点关注软件系统的各个组成模块之间的互动。这里所说的“互动”,包括模块之间的互相调用、数据传递、同步/互斥、等等。
--灰盒测试与黑盒测试的区别
如果某软件包含多个模块,当你使用黑盒测试时,你只要关心整个系统的边界,无需关心软件系统内部各个模块之间如何协作。而如果使用灰盒测试,你就需要关心模块与模块之间的交互。
--灰盒测试与白盒测试的区别
但是,在灰盒测试中,你还是无需关心模块内部的实现细节。对于软件系统的内部模块,灰盒测试依然把它当做一个黑盒来看待。而白盒测试还需要在深入的了解内部模块的实现细节。所以,这是灰盒测试与黑盒测试的区别。
--灰盒测试与单元测试的区别
在进行单元测试时,需要写一些测试代码(桩代码,stub)。通常测试代码和被测试代码通常是同种语言(比如Java的单元测试通常也用Java来写),而且测试代码和被测试代码的耦合很紧密。因此,单元测试通常用开发人员来完成的,测试人员的能力未必能胜任。
单元测试的颗粒度会更细(会细到类一级、函数一级),而灰盒测试仅仅到模块一级。
##相对于黑盒测试的优点
1.测试可以及早介入
由于黑盒测试把整个软件系统当成一个整体来测试。如果系统的某个关键模块还有没完工,那测试人员就无法对整个系统进行测试,只好闲着没事干。而灰盒测试是针对模块的边界进行,模块开发完一个就测试一个。
2.有助于测试人员理解系统结构
为了进行灰盒测试,测试人员首先要熟悉内部模块之间的协作机制。在熟悉的过程中,“顺便”也就对整个系统(及其结构)有一个初步的、宏观的认识。这有助于测试人员发现一些系统结构方面的bug。
而对于黑盒测试来说,由于测试人员不清楚软件系统的内部结构,难以发现一些结构性的缺陷。
3.有助于管理层了解真实的开发进度
一些复杂的大系统,经常会发生开发进度失控的情况。因为很多开发人员有报喜不报忧的倾向。当某个开发人员号称自己的工作已经完成了90%,往往意味着他/她还要花同样多的时间来完成剩下的10%。这导致负责项目管理你的人无法了解开发的真实进度。
由于灰盒测试针对每一个模块进行,而且测试人员会从一个客观的角度来反馈模块的完成情况,这非常有利于管理层了解整个系统的真实完成情况。
4.可以构造更好的测试用例
5.利于提升测试人员能力
很多公司搞的黑盒测试,就是让测试人员用鼠标操作用户界面。在这种的环境里,测试人员干的活,很多都是重复性的体力劳动,技术能力难以得到提高。
而如果搞灰盒测试,测试人员就需要多懂一点技术背景知识,必要时还得写点测试脚本,对测试人员的能力提升很有好处。
 
 
 
 
 
 

TAG:

 

评分:0

我来说两句

Open Toolbar