代码覆盖率.docx

上传人:ng****60 文档编号:2374397 上传时间:2019-05-09 格式:DOCX 页数:7 大小:19.28KB
下载 相关 举报
代码覆盖率.docx_第1页
第1页 / 共7页
代码覆盖率.docx_第2页
第2页 / 共7页
代码覆盖率.docx_第3页
第3页 / 共7页
代码覆盖率.docx_第4页
第4页 / 共7页
代码覆盖率.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到 80或 90。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义:代码覆盖率 代码的覆盖程度,一种度量方式。上面简短精悍的文字非常准确的描述了代码覆盖率的含义。而代码覆盖程度的度量方式是有很多种的,这里介绍一下最常用的几种:1. 语句覆盖(StatementCoverage)又称行覆盖(LineCoverage),段覆盖(Seg

2、mentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是“可执行语句”,因此就不会包括像 C的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。需要注意的是,单独一行的花括号 也常常被统计进去。语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。假如你的上司只要求你达到语句覆盖,那么你可以省下很多功夫,但是,换来的确实测试效果的不明显,很难更多地发现代码中的问题。这里举一个不能再简单的例子,我们看下面的被

3、测试代码:int foo(int a, int b)return a / b;假如我们的测试人员编写如下测试案例:TeseCase: a = 10, b = 5测试人员的测试结果会告诉你,他的代码覆盖率达到了 100,并且所有测试案例都通过了。然而遗憾的是,我们的语句覆盖率达到了所谓的 100%,但是却没有发现最简单的 Bug,比如,当我让 b=0 时,会抛出一个除零异常。正因如此,假如上面只要求测试人员语句覆盖率达到多少的话,测试人员只要钻钻空子,专门针对如何覆盖代码行编写测试案例,就很容易达到主管的要求。当然了,这同时说明了几个问题:1.主管只使用语句覆盖率来考核测试人员本身就有问题。2.

4、测试人员的目的是为了测好代码,钻如此的空子是缺乏职业道德的。 3.是否应该采用更好的考核方式来考核测试人员的工作? 为了寻求更好的考核标准,我们必须先了解完代码覆盖率到底还有哪些,如果你的主管只知道语句覆盖,行覆盖,那么你应该主动向他介绍还有更多的覆盖方式。比如:2. 判定覆盖(DecisionCoverage)又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。这句话是需要进一步理解的,应该非常容易和下面说到的条件覆盖混淆。因此我们直接介绍第三种覆盖方式,然后和判定覆盖一起来对比,就明白两者是怎么回事了。3. 条件覆盖(ConditionCoverage)它度量判定中的每个子表达式结果 true 和 false 是否被测试到了。为了说明判定覆盖和条件覆盖的区别,我们来举一个例子,假如我们的被测代码如下:int foo(int a, int b)if (a 判定覆盖 语句覆盖e. 测试人员不能盲目追求代码覆盖率,而应该想办法设计更多更好的案例,哪怕多设计出来的案例对覆盖率一点影响也没有。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。