首页常见问题正文

逻辑覆盖法:语句覆盖【软件测试培训】

更新时间:2022-08-12 来源:黑马程序员 浏览量:

IT培训班

  逻辑覆盖法是白盒测试最常用的测试方法,它包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖5种,今天先来介绍一下语句覆盖。

  语句覆盖(Statement Coverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖方式。语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。

  为了让读者更深刻地理解语句覆盖,下面结合一段小程序介绍语句覆盖方法的执行,程序伪代码如下所示。

IF x>0 AND y<0  //条件1
  z=z-(x-y)
IF x>2 OR z>0   //条件2
  z=z+(x+y)

  在上述代码中,AND表示逻辑运算&&,OR表示逻辑运算Ⅱ,第1~2行代码表示如果x>0成立并且y<0成立,则执行z=z-(x-y)语句;第3~4行代码表示如果x>2成立或者z>0成立,则执行z=z+(x+y)语句。该段程序的流程图如图3-1所示。

  在图3-1中,a、b、c、d、e表示程序执行分支,在语句覆盖测试用例中,使程序中每个可执行语句至少被执行一次。根据图3-1程序流程图中标示的语句执行路径设计测试用例,具体如下。

Test1: x=1 y=-1 z=2

  

1660285484500_程序执行流程图.jpg

       图3-1 程序执行流程图

  执行上述测试用例,程序运行路径为acd。可以看出程序中acd路径上的每个语句都能被执行,但是语句覆盖对多分支的逻辑无法全面反映,仅仅执行一次不能进行全面覆盖,因此,语句覆盖是弱覆盖方法。

  语句覆盖虽然可以测试执行语句是否被执行到,但却无法测试程序中存在的逻辑错误,例如,如果上述程序中的逻辑判断符号“AND”误写成了“OR”,使用测试用例Test1同样可以覆盖acd路径上的全部执行语句,但却无法发现错误。同样,如果将x>0误写成x>=0,使用同样的测试用例Test1也可以执行acd路径上的全部执行语句,但却无法发现x>=0的错误。

  语句覆盖无须详细考虑每个判断表达式,可以直观地从源程序中有效测试执行语句是否全部被覆盖,由于程序在设计的时候,语句之间存在许多内部逻辑关系,而语句覆盖不能发现其中存在的缺陷,因此语句覆盖并不能满足白盒测试的测试所有逻辑语句的基本需求。

分享到:
在线咨询 我要报名
和我们在线交谈!