白盒测试
又称为结构测试或逻辑驱动测试,通过分析程序内部的逻辑与程序执行路线来设计测试用例的测试方法。属于穷举路径测试。
白盒测试的方法
逻辑覆盖、符号测试、程序变异等。
被测试模块及流程图如下
Begin
if(A>1 and B=0)
then
X=X/4;
if(A=2 or x>1)
then
X=X+1;
Return;
End
对于上面流程图,依次规定以下8种状态。
T1:A>1;F1:A<=1;T2:B=0;F2:B!=0
T3:A=2;F3:A!=2;T4:X>1;F4:X<=1
逻辑覆盖
1、语句覆盖(最弱的逻辑覆盖准则)
被测试程序中的每一可执行语句在测试中尽可能检验过。
测试用例:
2、判定覆盖
又称为分支覆盖。不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
测试用例:
3、条件覆盖
使判定表达式中的每个条件都取到各种可能的结果。
条件覆盖比判定条件覆盖功能强,因为它使判定表达式中的每个条件都取到了两个不同的结果,而判定覆盖却只关心整个判定表达式的值。
测试用例:
4、判定/条件覆盖
同时满足判定覆盖和条件覆盖。 选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都可以取到各种可能的结果。
测试用例:
5、条件组合覆盖
属于更强的逻辑,要求选取足够多的测试数据,使得每个判定表达式中的各种可能组合都至少出现一次。
测试用例:
6、路径覆盖
选取足够多的测试数据,使程序的每条可能路径都至少执行一次,如果程序控制流图中有环,则要求每个环至少执行一次。
测试用例:
六种逻辑覆盖从弱到强的关系:
语句覆盖->判定覆盖->条件覆盖->判定条件覆盖->条件组合覆盖->路径覆盖
他们之间的关系如下图所示:
符号测试
基本思想:允许程序的输入不仅可以数值数据,也可以包括符号值,符号可以是符号变量,也可以是包含这些符号变量的一个表达式。
优点:可以很容易确定所给的一组测试用例是否覆盖了程序的各条路径。
程序变异
程序变异方法是一种错误驱动测试。错误驱动测试是指该方法是针对某类特定程序错误的。