白盒测试遵照的四大原则:
担保一个模块中所有路径至少被测试一次;
所有逻辑值都要测试真(true)和假(false)两种情形

检讨程序的内部数据构造是否有效;
检讨上、下边界及可操作范围内运行所有循环
静态白盒测试白盒测试分静态和动态两种,静态测试是指不运行程序,通过人工对程序和文档进行剖析与检讨。下面是静态白盒测试检讨的故障模式。
内存泄露的故障(Memory Leak Fault, MLF)数组越界故障的故障(Out of Bounds Array Access Fault OBAF)利用未初始化变量故障(Uninitialized Variable Fault,UVF)空指针利用故障(NULL Pointer Dereference Fault NPDF)造孽打算类故障(Illegal Computing Fault ILCF)去世循环构造(Dead Loop Fault DLF)资源泄露(RLF)并发故障 (Concurrency Fault)安全漏洞故障疑问代码故障大略来说,静态白盒测试便是看代码找bug
动态白盒测试白盒测试分静态和动态两种,动态测试是指通过运行被测程序,检讨运行结果与预期结果的差异,并剖析运行效率和健壮性等性能。
动态白盒测试流程:
选取定义域有效值,或定义域外无效值;(等价类划分思想)已选取值决定预期的结果;用选取值实行程序;实行结果与对已选取值决定预期的结果比拟,不吻正当式有错逻辑覆盖测试为了知足白盒测试的四大原则,须要利用逻辑覆盖测试法来设计测试用例。逻辑覆盖测试因此程序内部的逻辑构造为根本设计测试用例的方法,首先须要就行代码的构造剖析,绘制流程图。
代码如图所示:
对应构造图如下:
把稳:圆圈中的数字代表代码的行数
之后进行逻辑覆盖,由于覆盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、剖断覆盖、条件覆盖、剖断/条件覆盖、条件组合覆盖和路径覆盖。
从表中的先容可知,从上到下,该方法覆盖的路径越多。其他方法覆盖的路径不全面,那为什么不直策应用路径覆盖?这是由于如果程序中涌现了多个判断和多个循环,可能的路径数目将会急剧增长,以至实现路径覆盖不可能。
为理解决上面的问题,涌现了基本路径覆盖,它在程序掌握流图的根本上,通过剖析程序掌握流图的环路繁芜性,导出基本可实行路径(独立路径)的凑集,然后据此设计测试用例。
各个覆盖方法的优缺陷:
在实际测试中,纵然对付路径数很有限的程序已经做到路径覆盖,仍旧不能担保被测试程序的精确性,还须要采取其他测试方法进行补充。
数据流测试数据流测试剖析常常集中于定义/引用非常的毛病,用于如下三方面测试。
变量被定义,但是从来没有利用(引用)所利用的变量没有被定义变量在利用之前被定义两次早期的数据流测试紧张用于检测程序编写时涌现的一些警告信息,如“所定义的变量未被利用等”问题,这些问题光靠大略的语法剖析器或者是语义剖析器是无法检测出来的。
程序插桩在程序的特定部位插入记录动态特性的语句,终极是为了把程序实行过程中发生的一些主要的历史事宜记录下来。例如,记录在程序实行过程中某些变量值的变革情形,变革的范围等。这些插入的语句常常被称为“探测器”或者“探测点”。
总结白盒测试方法基于被测程序的源代码开拓测试用例。常见的白盒测试方法有逻辑覆盖、数据流测试、路径剖析以及程序插装等。逻辑覆盖以程序内部的逻辑构造为根本设计测试用例,哀求对被测程序的构做作到一定程度的覆盖,如语句覆盖、剖断覆盖、条件覆盖、剖断/条件覆盖、条件组合覆盖及路径覆盖。路径覆盖是最强的逻辑覆盖准则,实际上我们只能有选择地测试程序中某些有代表的性路径。