白盒测试概述
一、什么是白盒测试?
白盒测试 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
二、白盒测试的目的
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;
在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;
在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
三、白盒测试的目标
采用白盒测试必须遵循以下几条原则,才能达到测试的目标:
1)保证一个模块中的所有独立路径至少被测试一次。
2)所有逻辑值均需测试真 (true) 和假 (false) 两种情况。
3)检查程序的内部数据结构,保证其结构的有效性。
4)在上下边界及可操作范围内运行所有循环。
四、白盒测试方法
1)语句覆盖
所谓语句覆盖是指设计若干个测试用例,使程序中的每个可执行语句至少被执行一次。
2)判定覆盖
所谓判定覆盖是指设计若干个测试用例,使得程序中的每个判定至少得到一次真值和假值,
即判断中的真假分支至少执行一次。判定覆盖又称为分支覆盖。
3)条件覆盖
所为条件覆盖是指设计若干个测试用例,使得程序中每个判断中每个条件的可能值至少得到一次。
因此,条件覆盖与判定覆盖相比增加了对符合判定情况的测试以及测试路径。
4)判定/条件覆盖
所谓判定/条件覆盖是指涉及若干个测试用例,使得判断中每个条件的所有取值至少出现一次,
并且每个判断的所有判断结果也至少出现一次。
5)组合覆盖
所谓组合覆盖是指设计若干个测试用例,使得每个判定条件的各种情况至少出现一次。
6)路径覆盖
所谓路径覆盖是指设计若干个测试用例覆盖程序中所有的路径。
举例:
if A and B then Action1
if C or D then Action2
1)语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。
2)分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。
3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。
4) 路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。