白盒测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。

  先看一下具体例子的源代码(C语言):

   1. /*
   2.  *  白盒测试逻辑覆盖测试范例
   3.  *  作者:胡添发(hutianfa@126.com
   4.  */
   5. int logicExample(int x, int y)
   6. {
   7.     int magic=0;
   8.     if(x>0 && y>0)
   9.     {
  10.         magic = x+y+10; // 语句块1
  11.     }
  12.     else
  13.     {
  14.         magic = x+y-10; // 语句块2
  15.     }
  16.    
  17.     if(magic < 0)
  18.     {
  19.         magic = 0;         // 语句块3
  20.     }
  21.     return magic;       // 语句块4
  22. }

  一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:

  做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:

  一、语句覆盖

  1、概念:

  设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。在本例中,可执行语句是指语句块1到语句块4中的语句。

  2、测试用例:

  {x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f

  {x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f

  这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。

  3、测试的充分性:

  假设第一个判断语句if(x>0 && y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0 || y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。

  在六种逻辑覆盖标准中,语句覆盖标准是最弱的。

原文地址:https://www.cnblogs.com/wang-yong-qiang/p/4443706.html