电话:0731-83595998
导航

软件测试:软件测试代码覆盖率浅谈

来源: 2017-11-26 13:12

   在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。   首先,让我们先来了解一下所谓的"代码覆盖率"。我找来了所谓的定义:
  代码覆盖率 = 代码的覆盖程度,一种度量方式。
  上面简短精悍的文字非常准确的描述了代码覆盖率的含义。而代码覆盖程度的度量方式是有很多种的,这里介绍一下最常用的几种:
  1. 语句覆盖(StatementCoverage)
  又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是"可执行语句",因此就不会包括像C++的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。需要注意的是,单独一行的花括号{}也常常被统计进去。语句覆盖常常被人指责为"最弱的覆盖",它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。假如你的上司只要求你达到语句覆盖,那么你可以省下很多功夫,但是,换来的确实测试效果的不明显,很难更多地发现代码中的问题。   这里举一个不能再简单的例子,我们看下面的被测试代码:
  int foo(int a, int b)
  {
  return a / b;
  }
  假如我们的测试人员编写如下测试案例:
  TeseCase: a = 10, b = 5
  测试人员的测试结果会告诉你,他的代码覆盖率达到了100%,并且所有测试案例都通过了。然而遗憾的是,我们的语句覆盖率达到了所谓的100%,但是却没有发现最简单的Bug,比如,当我让b=0时,会抛出一个除零异常。
  正因如此,假如上面只要求测试人员语句覆盖率达到多少的话,测试人员只要钻钻空子,专门针对如何覆盖代码行编写测试案例,就很容易达到主管的要求。当然了,这同时说明了几个问题:
  1)主管只使用语句覆盖率来考核测试人员本身就有问题。
  2)测试人员的目的是为了测好代码,钻如此的空子是缺乏职业道德的。
  3)是否应该采用更好的考核方式来考核测试人员的工作?
  为了寻求更好的考核标准,我们必须先了解完代码覆盖率到底还有哪些,如果你的主管只知道语句覆盖,行覆盖,那么你应该主动向他介绍还有更多的覆盖方式。比如:
  2. 判定覆盖(DecisionCoverage)
  又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖 (BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。这句话是需要进一步理解的,应该非常容易和下面说到的条件覆盖混淆。因此我们直接介绍第三种覆盖方式,然后和判定覆盖一起来对比,就明白两者是怎么回事了。   3. 条件覆盖(ConditionCoverage)
  它度量判定中的每个子表达式结果true和false是否被测试到了。
  为了说明判定覆盖和条件覆盖的区别,我们来举一个例子,假如我们的被测代码如下:
  int foo(int a, int b)
  {
  if (a < 10 || b < 10) // 判定
  {
  return 0; // 分支一
  }
  else
  {
  return 1; // 分支二
  }
  }
  设计判定覆盖案例时,我们只需要考虑判定结果为true和false两种情况,因此,我们设计如下的案例就能达到判定覆盖率100%:
  TestCaes1: a = 5, b = 任意数字 覆盖了分支一
  TestCaes2: a = 15, b = 15 覆盖了分支二
  设计条件覆盖案例时,我们需要考虑判定中的每个条件表达式结果,为了覆盖率达到100%,我们设计了如下的案例:
  TestCase1: a = 5, b = 5 true, true
  TestCase4: a = 15, b = 15 false, false

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
拼团课程更多+
热门排行
  • 长理培训微信公众号
    每日推送精彩考试资讯
    长按二维码识别
    微信搜索“ 长理培训
  • 加入QQ群一起来考国网!
    QQ群号:223940140
    点击进入

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端