【干货详解】全网最全白盒测试攻略大全

sw

白盒测试(WhiteBoxTesting)又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。

白盒测试遵循的四大原则:

保证一个模块中所有路径至少被测试一次;

所有逻辑值都要测试真(true)和假(false)两种情况

检查程序的内部数据结构是否有效;

检查上、下边界及可操作范围内运行所有循环

静态白盒测试

白盒测试分静态和动态两种,静态测试是指不运行程序,通过人工对程序和文档进行分析与检查。下面是静态白盒测试检查的故障模式。

内存泄漏的故障(MemoryLeakFault,MLF)

数组越界故障的故障(OutofBoundsArrayAccessFaultOBAF)

使用未初始化变量故障(UninitializedVariableFault,UVF)

空指针使用故障(NULLPointerDereferenceFaultNPDF)

非法计算类故障(IllegalComputingFaultILCF)

死循环结构(DeadLoopFaultDLF)

资源泄漏(RLF)

并发故障(ConcurrencyFault)

安全漏洞故障

疑问代码故障

简单来说,静态白盒测试就是看代码找bug

动态白盒测试

白盒测试分静态和动态两种,动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。

动态白盒测试流程:

选取定义域有效值,或定义域外无效值;(等价类划分思想)

已选取值决定预期的结果;

用选取值执行程序;

执行结果与对已选取值决定预期的结果对比,不吻合程序有错

逻辑覆盖测试

为了满足白盒测试的四大原则,需要使用逻辑覆盖测试法来设计测试用例。逻辑覆盖测试是以程序内部的逻辑结构为基础设计测试用例的方法,首先需要就行代码的结构分析,绘制流程图。

代码如图所示:

对应结构图如下:

注意:圆圈中的数字代表代码的行数

之后进行逻辑覆盖,由于覆盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

从表中的介绍可知,从上到下,该方法覆盖的路径越多。其他方法覆盖的路径不全面,那为什么不直接使用路径覆盖?这是由于如果程序中出现了多个判断和多个循环,可能的路径数目将会急剧增长,以至实现路径覆盖不可能。

为了解决上面的问题,出现了基本路径覆盖,它在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径(独立路径)的集合,然后据此设计测试用例。

各个覆盖方法的优缺点:

数据流测试

数据流测试分析常常集中于定义/引用异常的缺陷,用于如下三方面测试。

变量被定义,但是从来没有使用(引用)

所使用的变量没有被定义

变量在使用之前被定义两次

程序插桩

在程序的特定部位插入记录动态特性的语句,最终是为了把程序执行过程中发生的一些重要的历史事件记录下来。例如,记录在程序执行过程中某些变量值的变化情况,变化的范围等。这些插入的语句常常被称为“探测器”或者“探测点”。

总结

白盒测试方法基于被测程序的源代码开发测试用例。常见的白盒测试方法有逻辑覆盖、数据流测试、路径分析以及程序插装等。

逻辑覆盖以程序内部的逻辑结构为基础设计测试用例,要求对被测程序的结构作到一定程度的覆盖,如语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖及路径覆盖。路径覆盖是最强的逻辑覆盖准则,实际上我们只能有选择地测试程序中某些有代表的性路径。

文章版权声明:除非注明,否则均为味悦醇香汇原创文章,转载或复制请以超链接形式并注明出处。

上一个 红古区25家商户因疫情防控不力上黑榜

下一个 吴晓波写的《茅台传》水平怎么样?