什么是白盒测试?
白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况。
白盒测试是基于程序结构的逻辑驱动测试。
白盒又可以被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试。
为什么要进行白盒测试?
白盒测试一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题基本得到消除。
白盒测试能保证内部逻辑结构达到一定的覆盖程度,能够给予软件代码质量的更大的保证。
白盒测试发现问题后解决问题的成本较低。
白盒测试的常用技术
白盒测试一般会用到静态分析和动态分析两类技术。常用的有:
静态分析:控制流分析、数据流分析、信息流分析等
动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等
白盒测试的特点
。测试人员需要了解软件的实现
。可以检测代码中的每条分支和路径
。提示隐藏在代码中的错误
。对代码的测试比较彻底
。 实现代码结构上的优化
。白盒测试投入较大,成本高
。白盒测试不验证规格的正确性
什么是黑盒测试
黑盒测试是把被测对象看成一个黑盒,只考虑其整体特性,不考虑其内部实现。
黑盒测试针对的被测对象可以是一个系统、一个子系统、一个模块、一个子模块、一个函数等。
黑盒测试又可以被称为基于规格的测试
常见的黑盒测试类型
功能性测试:一种是顺序测试每个程序特性或功能,另一种途径是一个模块一个模块的测试,即每个功能再其在其最先调用的地方被测试;
容量测试,检查软件在处理海量数据时的局限性,能发现系统效率方面的问题;
负载测试,检查系统在一个很短时间内处理一个巨大数据量或执行许多功能调用上的能力;
恢复性测试,主要保证系统在崩溃后能够恢复外部数据的能力;
常见的黑盒测试方法
等价类划分法
边界值分析法
因果图分析法
错误推测法
判定表法
状态迁移法
。。。。。。
不管用什么测试方法,都是为了减少测试时的测试用例数,都是为了用尽量少的测试用例去完成测试,去发现更多的问题。
黑盒测试的特点
。对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率更高
。测试人员不需要了解实现的细节,包括特定的编程语言
。从用户的视角进行测试,很容易被大家理解和接受
。有助于暴露任何规格不一致或有歧义的问题
。 没有清晰的和简明的规格,测试用例很难设计
。不能控制内部执行路径,会有很多内部程序路径没有被测试到
。不能直接针对特定的程序段,这些程序可能比较复杂(因此可能隐藏更多的问题)
灰盒测试
根据被测对象信息的不同,采用不用的方法进行测试
利用被测对象的整体特性信息,采用黑盒测试方法
利用被测对象的内部具体实现信息,采用白盒测试
如果既利用被测对象的整体特性信息,又利用被测对象的内部具体实现信息,采用的就是灰盒测试方法。两种信息所占的比例不同,相应的灰度就不同。完全是整体特性信息,就是黑盒测试,完全是内部具体实现信息,就是白盒测试
典型的灰盒测试比如集成测试和系统测试时借助log信息