什么是代码覆盖率?
代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。
为什么要测量代码覆盖率?
众所周知,测试可以提高软件版本的质量和可预测性。但是,你知道你的单元测试甚至是你的功能测试实际测试代码的效果如何吗?是否还需要更多的测试?
这些是代码覆盖率可以试图回答的问题。总之,出于以下原因我们需要测量代码覆盖率:
-
了解我们的测试用例对源代码的测试效果
-
了解我们是否进行了足够的测试
-
在软件的整个生命周期内保持测试质量
注:代码覆盖率不是灵丹妙药,覆盖率测量不能替代良好的代码审查和优秀的编程实践。
通常,我们应该采用合理的覆盖目标,力求在代码覆盖率在所有模块中实现均匀覆盖,而不是只看最终数字的是否高到令人满意。
举例:假设代码覆盖率只在某一些模块代码覆盖率很高,但在一些关键模块并没有足够的测试用例覆盖,那样虽然代码覆盖率很高,但并不能说明产品质量就很高。
如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click
关于Cobertura
Cobertura
可以理解为一种测试覆盖率报告方案,通过Cobertura
+ Maven
+ Jenkins
来实现测试覆盖率的展示。
如何使用Cobertura
1、pom中添加依赖
<!-- 在clean时把老的ser文件也清理掉 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<filesets>
<fileset>
<directory>.</directory>
<includes>
<include>**/*.ser</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<aggregate>true</aggregate> <!-- 表示会聚合不同子module下的测试报告 -->
<check/>
</configuration>
</plugin>
2、通过命令行生成报告文件
输入如下命令:
mvn cobertura:cobertura
它会在每个模块以及根目录的target
下分别产生.ser
文件以及相应覆盖率报告文件。
3、覆盖率报告
覆盖率的html
报告如下:
4、其他定制需要
因实际场景需要,排除某些方法,需要调整如下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*TestJMock.java</include>
</includes>
<excludes>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</plugin>
如果要对测试覆盖率进行控制,一定要达到指定标准呢,做如下配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<aggregate>true</aggregate> <!-- 表示会聚合不同子module下的测试报告 -->
<check>
<branchRate>0</branchRate>
<lineRate>0</lineRate>
<haltOnFailure>true</haltOnFailure>
<totalBranchRate>0</totalBranchRate>
<totalLineRate>0</totalLineRate>
<packageLineRate>0</packageLineRate>
<packageBranchRate>0</packageBranchRate>
<regexes>
<regex>
<pattern>com.company.mode.services.*</pattern>
<branchRate>60</branchRate>
<lineRate>80</lineRate>
</regex>
</regexes>
</check>
</configuration>
</plugin>
通过mvn cobertura:check
即可对覆盖率进行校验
这个Maven
插件的一些缺陷:
1、不支持lambda
表达式,在mvn
命令的执行中会报错,即使在通过git
仓库下载最新Cobertura
代码自己打包生成的jar
包,虽然没有报错,但是依然不能正常产生报告
2、根目录下的测试覆盖率文件似乎只是随机选了底下一个module
的覆盖率,没有按照我们的设想来:将所有子module
的测试覆盖率汇总。
与Jenkins集成
安装Cobertura
插件
设置 Pre Steps
添加构建后操作
生成覆盖率报告
所有的配置都好了,点击立即构建,即可生成相应的测试覆盖率报告
文章来源:https://www.toymoban.com/news/detail-804245.html
到此,关于Cobertura
的使用介绍完毕,有兴趣的同学,请自行尝试!文章来源地址https://www.toymoban.com/news/detail-804245.html
到了这里,关于测试覆盖率 之 Cobertura的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!