1、什么是白盒测试
白盒测试是基于系统或者组件的内部实现结构和逻辑寻找缺陷的测试技术,是针对被测单元内部是如何经行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证
2、白盒测试与黑盒测试的区别
白盒测试是结构测试、逻辑驱动测试
黑盒测试则是功能测试、数据驱动测试
3、常用的白盒测试技术
(1)基本路径测试
根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例
设计步骤:
根据模块逻辑构造控制流图(Flow Graph)
计算控制流图的环复杂度 (Cyclomatic Complexity)
列出包含起始节点和终止节点的基本路径
检查一下列出的基本路径数目是否超过控制流图的环复杂度
设计覆盖这些基本路径的测试用例
(2)分支-条件测试
根据模块中的逻辑条件设计测试用例,使得被测模块中的每一个复合条件以及构成这个复合条件的每一个简单条件的真假情况至少被执行一次。
简单条件是一个布尔变量或一个可能带有NOT(“┓”)操作符的关系表达式,关系表达式的形式如:E1<关系操作符>E2,其中E1和E2是算术表达式,而<关系操作符>是下列之一:“<”,“≤”,“=”,“≠”(“┓=”),“>”, 或“≥”
复合条件由简单条件、布尔操作符和括弧组成。假定可用于复合条件的布尔算子包括OR“|”,AND“&”和NOT“┓”,不含关系表达式的条件称为布尔表达式。
(3)循环测试
关注循环体结构的正确性,对循环变量运用类似于边界值测试的方法以验证循环体结构的正确性。
四种不同类型的循环结构:
简单循环
嵌套循环
连接循环
非结构循环
4、其它白盒测试方法
(1)数据流测试
根据被测模块中变量的定义和使用路径,发现代码中如引用未定义变量、对以前未曾使用的变量再次赋值等数据流异常情况。
导致这些异常情况原因是由于代码存在名字拼错、名字混淆或是语句遗漏等缺陷。
构造其定义——使用路径设计相应的测试用例。
(2)程序插桩
借助往被测程序中插入操作来实现测试目的的方法
设计插桩需考虑的问题:
探测哪些信息
在代码的什么部位设置探测点
需要设置多少个探测点
(3)符号测试
用代数符号代替具体的数值作为程序的输入,如果用符号运算相应获得的结果是正确的,那么所有符合条件的输入数值产生的结果都将是正确的。
5、总结
白盒测试方法基于系统或者组件的内部实现结构和逻辑寻找软件中的缺陷
常用的白盒测试方法包括基本路径测试、分支-条件测试和循环测试 覆盖准则可以作为测试停止或/和选取测试数据的标准
基于控制流的覆盖准则是被工业界广泛采用的覆盖标准之一
按照覆盖率从低到高的顺序,基于控制流的覆盖准则包括语句覆盖、分支覆盖、条件覆盖、分支-条件覆盖和多条件覆盖