码迷,mamicode.com
首页 > 其他好文 > 详细

单元测试之覆盖率浅谈

时间:2015-02-16 18:28:32      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

                                          技术分享

一、什么是代码覆盖率

 

       代码覆盖是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。一般我们用工具做的代码覆盖率的计算方法是:

 

代码覆盖率 = 被测代码行数 / 参测代码总行数 * 100%

 

二、度量方式

 

       代码覆盖程度的度量方式是有很多种的,这里介绍一下最常用的几种:

 

1. 语句覆盖/行覆盖(StatementCoverage)

        这是一种较为常用且具有代表性的指标,度量的是被测代码中所有语句是否被执行到。

 

2.判定覆盖(DecisionCoverage)

        度量程序中每一个判定的分支是否都被测试到了;

 

3.条件覆盖(ConditionCoverage)

        指程序中每个判断中的每个条件的所有可能取值的全部组合情况至少被执行一次;

 

4.路径覆盖(PathCoverage)

         度量的是当代码中存在多个分支时,是否覆盖到分支之间不同组合方式所产生的全部路径。这是一种力度最强的覆盖检测,相对而言,条件覆盖只是路径覆盖中的一部分。

 

        因为网上已经有了很好的一篇博客具体阐述这四种度量方式,有具体实例,所以直接推荐《代码覆盖率浅谈

 

        高效高质量的行覆盖是有效进行条件覆盖与路径覆盖的前提。行覆盖率越高,说明没有被覆盖到的代码越少,这样开发人员便会集中精力修改测试用例,覆盖这些数量不多的代码。如果看完我推荐的博客,我们可以得出这样一个结论:路径覆盖率 > 判定覆盖 > 语句覆盖

 

三、辩证性的看覆盖率

 

有人说:

        代码覆盖率(CodeCoverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标。它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重要原因之一就是测试难于量化,而代码覆盖率恰恰是解决着一问题的重要指标。

 

有人说:

       就单元测试而言,确定我们拥有高质量的测试用例,确定关键的模块都有相关的测试对应,比简单地追求覆盖率要重要得多。而这些通过传统的评审和走查可以轻易做到的事情,却常常被我们定义流程和日常管理中忽略了。

 

        其实,代码覆盖率能告诉你产品代码还有哪些地方、哪些功能模块没有测试到,或者说很仔细地测试过。但是它不能告诉你测试效果是否已经足够好了,代码覆盖率为100%不能说明你已经把用户的需求都考虑并且测试到了。相宜才能得当,所以,合理使用代码覆盖率,可以规定一个测试覆盖率的下限,例如所有的包和类的覆盖率必须达到 80%以上。不过值得注意的是,不要单纯追求高覆盖率,要同时注意测试用例的质量,如果测试用例本身就写的有错误,那么即使测试覆盖率很高也没有意义,一切的前提都是要保证单元测试的有效性和质量。





单元测试之覆盖率浅谈

标签:

原文地址:http://blog.csdn.net/caozhangyingfei0109/article/details/43704001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!