仙居住房和城乡建设部网站,个人网站的制作,建设通类似网站,做英文网站用什么字体好白盒测试
白盒测试#xff08;White Box Testing#xff09;又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程#xff0c;而不测试软件产品的功能#xff0c;用于纠正软件系统在描述、表示和规格上的错误#xff0c…白盒测试
白盒测试White Box Testing又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程而不测试软件产品的功能用于纠正软件系统在描述、表示和规格上的错误是进一步测试的前提。
白盒测试遵循的四大原则:
保证一个模块中所有路径至少被测试一次所有逻辑值都要测试真(true)和假(false)两种情况检查程序的内部数据结构是否有效检查上、下边界及可操作范围内运行所有循环
静态白盒测试
白盒测试分静态和动态两种,静态测试是指不运行程序通过人工对程序和文档进行分析与检查。下面是静态白盒测试检查的故障模式。
内存泄漏的故障Memory Leak Fault MLF数组越界故障的故障Out of Bounds Array Access Fault OBAF使用未初始化变量故障Uninitialized Variable FaultUVF空指针使用故障NULL Pointer Dereference Fault NPDF非法计算类故障Illegal Computing Fault ILCF死循环结构(Dead Loop Fault DLF)资源泄漏RLF并发故障 Concurrency Fault安全漏洞故障疑问代码故障
简单来说静态白盒测试就是看代码找bug
动态白盒测试
白盒测试分静态和动态两种动态测试是指通过运行被测程序检查运行结果与预期结果的差异并分析运行效率和健壮性等性能。
动态白盒测试流程
选取定义域有效值或定义域外无效值等价类划分思想已选取值决定预期的结果用选取值执行程序执行结果与对已选取值决定预期的结果对比不吻合程序有错
逻辑覆盖测试
为了满足白盒测试的四大原则需要使用逻辑覆盖测试法来设计测试用例。逻辑覆盖测试是以程序内部的逻辑结构为基础设计测试用例的方法首先需要就行代码的结构分析绘制流程图。
代码如图所示 对应结构图如下 注意圆圈中的数字代表代码的行数
之后进行逻辑覆盖由于覆盖测试的目标不同逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
覆盖方法介绍语句覆盖选择足够多的测试用例使得程序中的每个可执行语句至少执行一次。判定覆盖通过执行足够的测试用例使得程序中的每个判定至少都获得一次“真”值和“假”值 也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次也称为“分支覆盖”。条件覆盖设计足够多的测试用例使得程序中每个判定包含的每个条件的可能取值真/假都至少满足一次。判定/条件覆盖设计足够多的测试用例使得程序中每个判定包含的每个条件的所有情况真/假至少出现一次并且每个判定本身的判定结果真/假也至少出现一次。满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖条件组合覆盖通过执行足够的测试用例使得程序中每个判定的所有可能的条件取值组合都至少出现一次。满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖路径覆盖设计足够多的测试用例要求覆盖程序中所有可能的路径
从表中的介绍可知从上到下该方法覆盖的路径越多。其他方法覆盖的路径不全面那为什么不直接使用路径覆盖这是由于如果程序中出现了多个判断和多个循环可能的路径数目将会急剧增长以至实现路径覆盖不可能。
为了解决上面的问题出现了基本路径覆盖它在程序控制流图的基础上通过分析程序控制流图的环路复杂性导出基本可执行路径(独立路径)的集合然后据此设计测试用例。
各个覆盖方法的优缺点 在实际测试中即使对于路径数很有限的程序已经做到路径覆盖仍然不能保证被测试程序的正确性还需要采用其他测试方法进行补充。 数据流测试
数据流测试分析常常集中于定义/引用异常的缺陷用于如下三方面测试。
变量被定义但是从来没有使用(引用)所使用的变量没有被定义变量在使用之前被定义两次 早期的数据流测试主要用于检测程序编写时出现的一些警告信息如“所定义的变量未被使用等”问题这些问题光靠简单的语法分析器或者是语义分析器是无法检测出来的。 程序插桩
在程序的特定部位插入记录动态特性的语句最终是为了把程序执行过程中发生的一些重要的历史事件记录下来。例如记录在程序执行过程中某些变量值的变化情况变化的范围等。这些插入的语句常常被称为“探测器”或者“探测点”。
总结
白盒测试方法基于被测程序的源代码开发测试用例。常见的白盒测试方法有逻辑覆盖、数据流测试、路径分析以及程序插装等。逻辑覆盖以程序内部的逻辑结构为基础设计测试用例要求对被测程序的结构作到一定程度的覆盖如语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖及路径覆盖。路径覆盖是最强的逻辑覆盖准则实际上我们只能有选择地测试程序中某些有代表的性路径。