一、黑盒测试和白盒测试
以下定义取自维基百科,个人认为不如百度百科的解释更加形象。
黑盒测试,软件测试的主要方法之一,也可以称为功能测试、数据驱动测试或基于规格说明的测试。测试者不了解程序的内部情况,不需具备应用程序的代码、内部结构和编程语言的专门知识。只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。通过测试来检测每个功能是否都能正常使用。
白盒测试(white-box testing)又称透明盒测试(glass box testing)、结构测试(structural testing)等,软件测试的主要方法之一,也称结构测试、逻辑驱动测试或基于程序本身的测试。测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑盒测试)。在白盒测试时,以编程语言的角度来设计测试案例。测试者输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点。测试者了解待测试程序的内部结构、算法等信息,这是从程序设计者的角度对程序进行的测试。
1. 简单分析:
黑盒测试
测试特点:测试功能;
测试依据:需求规格说明书
方法举例:等价类划分、边界值测试、因果图法、场景法、
优点:能站在用户的立场上进行测试
缺点:不能测试程序内部特定部位,如程序有误,则无法发现。
白盒测试
测试特点:测试程序接口与结构
测试依据:软件程序
方法举例:逻辑覆盖、静态结构分析、基本路径测试法、循环覆盖
优点:对程序内部特定部位进行覆盖测试。
缺点:无法检验程序外部特性。
2.直观地理解:
黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试。
白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为”结构测试“或”逻辑驱动测试“。白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。
3. 作用:
黑盒测试主要是为了发现以下错误:
(1)是否有不正确或者遗漏了的功能;
(2)在接口上,输入能否正确的接受?能否输出正确的结果?
(3)是否有数据结构错误或外部信息(例如数据库文件)访问错误?
(4)性能上是否能够满足要求?
(5)是否有初始化或终止性错误?
黑盒的测试用例技术设计有三种: 边界值分析、等价类划分、错误推测法。
白盒测试主要是想对程序模块进行以下检查:
(1)对程序模块的所有独立的执行路径至少测试一遍;
(2)对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;
(3)在循环的边界和运行的界限内执行循环体;
(4)测试内部数据结构的有效性,等等;
(5)静态白盒测试 :即代码审查,正式审查和检验设计和程序代码;
(6)动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;
白盒的测试用例技术包括逻辑覆盖和基本路径测试。
逻辑覆盖:是以程序内在逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。
基本路径测试:在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
部分内容参考自:http://blog.csdn.net/ningmeng2010/article/details/8114530
建议读者直接参考百度百科词条,不建议参考维基百科
黑盒测试:https://baike.baidu.com/item/%E9%BB%91%E7%9B%92%E6%B5%8B%E8%AF%95
白盒测试:https://baike.baidu.com/item/%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95