白盒测试(结构测试/逻辑驱动测试)
定义:白盒测试就是把一个程序当作一个可以打开的盒子,需要对程序的结构和逻辑进行分析并测试。
白盒测试也称为结构测试,又叫逻辑驱动测试。穷举路径测试方法。
白盒测试的三大方法:
1,程序结构分析测试(顺序结构,选择结构,循环结构)
2,逻辑覆盖测试(语句覆盖,分支覆盖,条件覆盖,判定/条件覆盖,组合覆盖,路径覆盖)
3,基本路径测试(穷举路径测试)
(白盒测试不能的问题)穷举路径测试:
1,无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。2,穷举路径测试不可能查出程序因为遗漏路径而出的错误。3,穷举路径测试发现不了一些与数据相关的错误
@采用白盒测试必须遵从以下几条原则:
(1)保证一个模块中所有独立路径至少被测试一次(2)所有逻辑值均需测试真(true)和假(false)两种情况(3)检查程序的内部数据结构,保证其结构的有效性(4)在取值上下边界,即可操作范围内运行所有循环(对于循环结构,在循环的次数边界上至少取值一次)
控制流图:
对程序控制流程图的简化得到,它的元素是由节点和边组成(带数的圈和箭头组成)
环形复杂度:(圈复杂度)
1,边-节点+2(循环边除外)
V(G) = E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点数量。
2,V(G) = P+1
其中,P是控制流图G中判定节点的数量。
3,区域数量对应复杂度
判定覆盖又称为分支覆盖。
每个语句+每个判定的每个分支
(1)语句覆盖:就是设计足够多个测试用例,运行被测程序,使得每一个可执行语句至少执行一次
(2)判定覆盖:就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
(3)条件覆盖: 条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
(4)判定/条件覆盖:
设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
(5)组合覆盖: 通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次(满足判定,条件,判定/条件)
(6)路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。