什么是白盒测试?
测试对象为函数体是指实现函数功能的源代码测试,也就是通过分析被测单元的内部程序结构来设计测试用例再进行的测试,称为白盒测试。(white-box testing)
白盒测试的方法
- 语句覆盖:覆盖了程序中的所有语句,是逻辑覆盖的一种
- 逻辑覆盖法:通过对程序结构逻辑的遍历实现程序覆盖的一种白盒测试技术
- 判定覆盖:通过设置足够多的测试用例,使得程序中的每个判定表达式的值为“真”和为“假”的分支都至少要执行一次测试,称为判定覆盖
- 条件覆盖:设计足够多的测试用例,使得程序中的每个判定表达式包含的每个条件的可能取值(真/假)都至少满足一次(也称谓词覆盖)
- 判定-条件覆盖:设计足够多的测试用例,使得程序中每个判定结果的真和假至少执行一次,每个判定表达式所包含的每个条件的真和假也都至少执行一次,使得既满足判定覆盖又满足条件覆盖
- 多重条件覆盖:为避免某个条件由“短路”问题而被忽略,需要设计足够多的测试用例,使程序中的每个判定的所有可能的取值组合至少执行一次,并且每个判断本身的判定结果也至少执行一次,这称为多重条件覆盖
- 修正条件-判定:将两个组合作为测试条件,再选出程序中具备独立影像判定结果的条件组合,这种方法称为修正条件-判定覆盖。它要求生成足够的测试用例满足:
- 每个程序的入口和出口至少被调用一次
- 每个判定的分支要执行一次(满足判定覆盖)
- 每个条件的所有可能结果至少要取一次(满足条件覆盖)
- 每个判定中的每个条件必须能独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,使判定结果会改变
-
路径覆盖
路径覆盖使设计足够多的测试用例,使得执行程序覆盖所有可能的路径。 -
基本路径覆盖法:是指如果程序中每条至少引入了一个新的处理语句集合或一个新条件的程序通路都被测试过,那么可以认为程序中的每个代码行、每个条件的真假分支都测试到了。