代码覆盖率

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

引言


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


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


代码覆盖率的意义


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


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


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


代码覆盖率的种类


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


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


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


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


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


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


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


在IDEA中查看代码覆盖率


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


image.png


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


image.png


在IDEA中查看分支覆盖率


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


image.png


在IDEA中查看代码覆盖情况


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


image.png


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


image.png

相关文章
|
测试技术
IDEA创建单元测试与测试覆盖率统计
IDEA(IntelliJ IDEA)不仅支持快速基于当前类创建单元测试,还支持代码测试覆盖率的统计,以及生成报告和标记测试运行命中的代码。
2021 0
IDEA创建单元测试与测试覆盖率统计
|
2月前
|
前端开发 Java 测试技术
什么是回归测试?
什么是回归测试?
什么是回归测试?
|
Java 测试技术
利用JaCoCo统计接口测试中代码覆盖率
做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求。这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆盖率,场景的覆盖率,接口的覆盖率,代码的覆盖率等,本文介绍接口测试的代码覆盖率。那么我们来看看如何是实现的。
利用JaCoCo统计接口测试中代码覆盖率
|
Java jenkins 测试技术
软件测试|代码覆盖率
软件测试|代码覆盖率
161 0
软件测试|代码覆盖率
|
敏捷开发 开发框架 前端开发
来聊聊我们为什么要写单测
哈喽,大家好,我是海怪。 最近在组里我又领了一个新任务:前端单元测试。 关于这个话题在很早的时候就想和大家聊了,奈何一直没机会。对于我个人来说,我是非常喜欢写单测的。最近还买了本《软件测试》的书,算是再次复习一下大学时学过的专业课,平时在捣鼓一些个人项目的时候也会做一些基础的单测。
来聊聊我们为什么要写单测
|
安全 测试技术
如何进行回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的一种测试方法。回归测试是指重复以前的全部或部分的相同功能测试。新加入测试的模块,可能对其他模块产生副作用,因此要进行某些程度的回归测试。回归测试的重心,是以关键性模块为核心。
321 1
|
运维 测试技术 持续交付
单元测试发现是问题不是缺陷
单元测试发现是问题不是缺陷
197 0
单元测试发现是问题不是缺陷
|
Ubuntu 测试技术 Shell
C++语言的单元测试与代码覆盖率
# 前言 测试是软件开发过程中一个必须的环节,测试确保软件的质量符合预期。 对于工程师自己来说,单元测试也是一种提升自信心的方式。 直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团队的时间,在一些原本早期就可以发现的问题上。而单元测试,就是发现问题一个很重要的环节。 本文以C++语言为基础,讲解如何进行单元测试并生成测试报告。 在工具上,我们会使用下面这
4432 0
|
测试技术 Android开发