摘 要:黑盒测试着眼于整体,不考虑软件局部的功能与结构,仅依照软件的需求规格说明书,检查程序的功能是否符合需求说明书的要求;而白盒测试着眼于软件局部,检验软件的模块、细节及实现过程。
关键词:白盒测试;黑盒测试;软件测试
伴随着软件业的发展壮大,人们对于软件功能的要求也随之提高。我国的软件企业也逐渐认识到软件测试的重大意义,在软件开发过程中也越来越重视软件测试这一工作。
软件测试并不是说软件开发完成后对其进行简单的“找错”,而应当贯穿于软件开发的全过程,对其进行科学、严格的质量控制。软件测试的方法可分为白盒测试和黑盒测试两种,对于任何软件工程产品,都可以从这两种方法中选择一种来进行测试。
一、测试的定义与分类
我们应当首先认识测试的含义,顾名思义,即找出错误,具体来说就是采用人工或者自动的方法测试某个系统(包括软件经过建模、需求、设计等阶段所产生的大量输出工件)的过程,并找出其中存在问题或者不足的过程。并指出存在问题的具体位置以及引起问题的具体操作步骤,记录下测试时的错误状态,这样就能够在测试后将问题再现。
1.黑盒测试
黑盒测试也称功能测试,它是已知程序应当具有的每个功能,通过测试来检验工程的每个模块能不能正常使用。它从使用者的角度出发,将程序看成是一个不能打开的黑盒子。测试过程中,不考虑程序内部结构以及其内部特性,只在程序接口进行测试,这种测试方法只检验程序功能是否能够达到产品需要规格说明书的要求,能不能正常接收数据并输出正确的信息,并让外部信息保持完整。显然,用这种测试方法并不能发现外部特性本身的错误。
黑盒测试有错误推测法、正交试验设计法、判定表驱动法、功能图法等测试方法,主要用于测试软件的功能需求和软件界面等。
2.白盒测试
白盒测试,也称逻辑驱动测试、结构测试。它了解了程序的内部工作过程之后,通过测试程序内部动作能否按照规格说明书的要求顺利进行,测试程序内部的每条通道能否按照预设正常工作。这种测试方法不考虑程序的功能。
二、盒测试和白盒测试的应用
1.黑盒测试的应用
黑盒测试主要是测试软件的功能是否达到预期的目标,是否符合需求说明书要求。它是依照软件需求,设计文档,模拟用户实际场景进行的测试。这种测试技术包涵了测试的各个方面,它主要用来检查以下几个方面的错误:是否存在错误或者遗漏某种功能;对于接口上输入的数据能否正确的读取及是否能够正确的输出结构;是否存在数据结构上的错误或外部数据(如数据文件)访问上的错误;应用性能是否能够满足用户的需求;是否存在初始化及终止性错误。
概括的来说,黑盒测试实际上是针对以下几点的检查:
(1)正确性(Correctness):计算结果,命名等方面;
(2)可用性(Usability):是否可以满足软件的需求说明;
(3)边界条件(Boundary Condition):输入部分的边界值,就是使用一般书中说的等价类划分,测试最大最小和非法数据等等;
(4)性能(Performance):如果在测试过程中发现性能问题,修改起来是非常巨大和艰难的工程,因为这通常意味着程序的算法或结果上的缺陷,因此在产品开发的初始阶段,软件性能的优劣应该作为首要问题考虑;
(5)压力测试(Stress):多用户情况可以考虑使用压力测试工具;
(6)错误恢复(Error Recovery):错误处理,页面数据验证,包括突然间断电、输入脏数据等;
(7)安全性测试(Security):如防火墙、补丁包、杀毒软件等;
2.白盒测试的应用
白盒测试主要是对程序的过程性细节做详细的检测,它对软件的所有逻辑路径进行测试,要求测试人员熟悉程序的内部结构,是一种穷举路径测试。在应用这种测试技术时,测试人员应当检查程序内部逻辑结构,从而得出测试数据。贯穿程序的独立路径的数量庞大,因此,测试人员应用白盒测试时,对程序模块主要有以下检查步骤:
(1)对程序所有独立的模块执行路径至少测试1次;
(2)对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试1次:
(3)在循环的边界和运行界限内执行循环体;
(4)对内部数据结构的有效性测试等。
但是纵使测试了每一条路径后仍然可能有错误,因为如果程序违反了设计规范,采用穷举路径测试并不能测试出来,如果程序本身存在错误,那么用这种方法也无济于事。另外,穷举路径测试也不能发现程序中有些与数据有关的错误,以及程序中因遗漏路径而出现的错误。
综上所述,白盒测试虽能够深入程序内部、技术性也更强,但也不是万能的,有些错误用黑盒测试反而更加容易发现。
3.白盒测试与黑盒测试的关系
黑盒测试和白盒测试对于软件开发都具有极其重大的意义,两者不存在技术含量孰高孰低的区别,只是他们的侧重点以及使用的技术不相同。黑盒测试主要针对业务方面,而白盒测试的主要对象是实现方式的测试;黑盒测试更注重整体的完整性,而白盒测试则专注于局部的测试;黑盒测试更关注测试的结果,而白盒测试是对过程的测试。
三、结语
白盒测试和黑盒测试是软件测试中两种不同的测试方法。在整个的测试过程中两者各有所长,相辅而成,但在实践项目中测试工程师还是把黑盒测试作为主要测试手段,白盒测试作为辅助测试手段。因为,在测试软件时,必须先用黑盒测试来验证目标工程的正确性。倘若结果正确,再用白盒测试来检验其正确结果是否产生于正确的过程。倘若结果发生错误,则可用白盒测试来查找过程中错误的地方。一个完整的软件测试,是先经过黑盒测试的错误检查,再通过白盒测试的结果验证,才能说真正意义上的完整。
参考文献:
[1] 赵宸,浅析黑盒测试与白盒测试[J] -硅谷2010(11)
[2] 冯凯,《软件测试的分类及方法》解析[J] -科技创新导报2010(9)
[3] 梁红硕,冯晓东,贾永胜,论黑盒测试与白盒测试在软件测试中的不同作用[J] -商场现代化 2010(16)