使用测试覆盖率改进测试

发表于:2011-10-21 13:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:肖利琼    来源:51testing 投稿

  小结:从上面的例子中可知,语句覆盖确实很弱,很容易达到100%覆盖,且即使达到100%仍可能会存在严重、致命bug,如果我们只追求语句覆盖,说测试是软件质量的把关者未免失职,以此来度量质量也没有多太意义。

  4.2.2 分支覆盖(BranchCoverage)

  又称判定覆盖(DecisionCoverage),边覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。

  分支覆盖比语句覆盖强,与条件覆盖有相似之处,容易混淆,案例的列举将与下面的条件覆盖一起,对比着讲解,以方便清楚地理解它们之间的异同点。

  4.2.3 条件覆盖

  条件覆盖,它度量判断中的每个子表达式结果true和false是否被测试到了。假如被测试代码如下:

  设计判定覆盖案例时,我们只需要考虑判定语句(if(a<10 || b<10)的结果为true和false两种情况,即只考虑有一个条件满足的情况即可。因此,我们只要设计如下的案例就能达到判定覆盖率100%。

  用例1:a=5,b=任意值,if()判定结果为ture, 覆盖分支一

  用例2:a=20,b=20,if()判定结果为false,覆盖分支二

  而条件覆盖,需每个表达式为true和false的情况都考虑到,上述程序块中,要达到100%的条件覆盖,其用例可设计如下:

  用例1:a=5,b=5,(a<10),(b<10)都为true,覆盖分支一

  用例2:a=15,b=15,(a<10)为false,(b<10)都为false,覆盖分支二

  上面用例满足每个表达式为true 和false的情况,即达到了100%的条件覆盖。但我们对下面两个用例也很熟悉,对吧。

  用例3:a=5,b=15,(a<10)为true,(b<10)为false,覆盖分支一

  用例4:a=15,b=5,(a<10)为false,(b<10)为true,覆盖分支一

  可见,即使达到100%的条件覆盖,并不是把各表达式的值进行了排列组合(那是条件组合覆盖做的事),仍存在一些分支未覆盖到,条件覆盖的覆盖度也是有限的。

  4.2.4 路径覆盖

  又称断言覆盖(PredicateCoverage),它度量了是否函数的每一个分支都被执行了。 这句话也非常好理解,就是所有可能的分支都执行一遍,有多个分支嵌套时,需要对多个分支进行排列组合,可想而知,测试路径随着分支的数量指数级别增加。

  下面是一个路径覆盖的简单例子:

64/6<123456>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号