代码覆盖率

简介:   经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。”  Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。

引言


 经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。”


 Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。


代码覆盖率的意义


 · 分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?需求/设计不够清晰,测试设计的理解有误,工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。


 · 检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。


 · 代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,代码质量不会高到哪里去,可以作为测试自我审视的重要工具之一。


代码覆盖率的种类


  代码覆盖率工具将使用一个或多个标准来确定在执行测试套件期间您的代码是如何执行的。覆盖率报告中的常见指标包括:


  函数覆盖率:已定义的函数中有多少被调用。


  语句覆盖率:程序中有多少语句已执行。


  分支覆盖率:控制结构的分支(例如 if 语句)中有多少已执行。


  条件覆盖率:已经测试了多少布尔子表达式的真值和假值。


  行覆盖率:已经测试了多少行源代码。


  这些指标通常表示为实际测试的项目数量、代码中找到的项目以及覆盖率百分比(测试的项目/找到的项目)。


在IDEA中查看代码覆盖率


  编写好测试类,启动时选择“使用覆盖率运行”


image.png


  然后在覆盖率面板就会有数据统计


image.png


在IDEA中查看分支覆盖率


  在配置中勾选“启用分支覆盖率并测试跟踪”:


image.png


在IDEA中查看代码覆盖情况


  在启动时选择“使用覆盖率运行”之后,点击覆盖面板的被测试类:


image.png


  然后会跳转到相应类,左边绿色表示覆盖了的:


image.png

相关文章
|
28天前
|
SQL Web App开发 编解码
如何编写全面的测试覆盖
【10月更文挑战第25天】在实际编写测试用例的过程中,需要根据项目的具体特点和需求,灵活运用各种测试方法和技术,不断完善测试覆盖,以确保软件系统的质量。
|
2月前
|
设计模式 关系型数据库 测试技术
进阶技巧:提高单元测试覆盖率与代码质量
【10月更文挑战第14天】随着软件复杂性的不断增加,确保代码质量的重要性日益凸显。单元测试作为软件开发过程中的一个重要环节,对于提高代码质量、减少bug以及加快开发速度都有着不可替代的作用。本文将探讨如何优化单元测试以达到更高的测试覆盖率,并确保代码质量。我们将从编写有效的测试用例策略入手,讨论如何避免常见的测试陷阱,使用mocking工具模拟依赖项,以及如何重构难以测试的代码。
62 4
|
4月前
|
监控 测试技术 开发者
单元测试问题之单元测试的工作量,如何评估
单元测试问题之单元测试的工作量,如何评估
|
7月前
|
前端开发 Java 测试技术
什么是回归测试?
什么是回归测试?
138 0
什么是回归测试?
|
Java 测试技术
利用JaCoCo统计接口测试中代码覆盖率
做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求。这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆盖率,场景的覆盖率,接口的覆盖率,代码的覆盖率等,本文介绍接口测试的代码覆盖率。那么我们来看看如何是实现的。
利用JaCoCo统计接口测试中代码覆盖率
|
运维 测试技术 持续交付
单元测试发现是问题不是缺陷
单元测试发现是问题不是缺陷
221 0
单元测试发现是问题不是缺陷
|
Ubuntu 测试技术 C语言
C++语言的单元测试与代码覆盖率
# 前言 测试是软件开发过程中一个必须的环节,测试确保软件的质量符合预期。 对于工程师自己来说,单元测试也是一种提升自信心的方式。 直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团队的时间,在一些原本早期就可以发现的问题上。而单元测试,就是发现问题一个很重要的环节。 本文以C++语言为基础,讲解如何进行单元测试并生成测试报告。 在工具上,我们会使用下面这
4501 0
|
测试技术 Android开发