白盒测试方法

这里介绍六种白盒测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式可以表示如下:

语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%

2)判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支(t or f)至少经历一次

[优点]:判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每

个判定就可以得到测试用例。

[缺点]:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含ANDORCASE

,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

  例如:

  int a,b;

  if(a || b)

  执行语句1

  else

  执行语句2

要达到这段程序的判断覆盖,我们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase

3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可

能结果至少出现一次,但未必能覆盖全部分支。条件覆盖要检查每个符合谓词的子表达式值为真和假两种

情况,要独立衡量每个子表达式的结果,以确保每个子表达式的值为真和假两种情况都被测试到。

4 判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执

行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

5 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少

出现一次,满足这种覆盖标准成为条件组合覆盖。

6)路径覆盖:是每条可能执行到的路径至少执行一次;

 说明:其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试

用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比

较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。

举例:

if A and B then Action1

if C or D then Action2

1)语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。

2)分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。

上例需要设计测试用例使其分别满足下列条件即可(1A=trueB=trueCtrueD=false2A=trueB=falseCfalseD=false

3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。

上例中第一个判断应考虑到A=trueA=falseB=trueB=false第二个判断应考虑到CtrueCfalseD=trueD=false

所以上例中可以设计测试用例满足下列条件(1A=trueB=trueCtrueD=true2A=falseB=falseCfalseD=false

 4 路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1A=trueB=trueCtrueD=true

2A=falseB=falseCfalseD=false3A=trueB=trueCfalseD=false4A=falseB=falseCtrueD=true

原文地址:https://www.cnblogs.com/ren0506/p/4439943.html