首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >测试覆盖率 之 Cobertura的使用

测试覆盖率 之 Cobertura的使用

作者头像
软件测试君
发布2022-05-17 10:03:55
发布2022-05-17 10:03:55
2.7K10
代码可运行
举报
文章被收录于专栏:测试人生测试人生
运行总次数:0
代码可运行

什么是代码覆盖率?

代码覆盖率是对整个测试过程中被执行的代码的衡量,它能测量源代码中的哪些语句在测试中被执行,哪些语句尚未被执行。

为什么要测量代码覆盖率?

众所周知,测试可以提高软件版本的质量和可预测性。但是,你知道你的单元测试甚至是你的功能测试实际测试代码的效果如何吗?是否还需要更多的测试?

这些是代码覆盖率可以试图回答的问题。总之,出于以下原因我们需要测量代码覆盖率:

  • 了解我们的测试用例对源代码的测试效果
  • 了解我们是否进行了足够的测试
  • 在软件的整个生命周期内保持测试质量

注:代码覆盖率不是灵丹妙药,覆盖率测量不能替代良好的代码审查和优秀的编程实践。

通常,我们应该采用合理的覆盖目标,力求在代码覆盖率在所有模块中实现均匀覆盖,而不是只看最终数字的是否高到令人满意。

举例:假设代码覆盖率只在某一些模块代码覆盖率很高,但在一些关键模块并没有足够的测试用例覆盖,那样虽然代码覆盖率很高,但并不能说明产品质量就很高。

关于Cobertura

Cobertura可以理解为一种测试覆盖率报告方案,通过Cobertura + Maven + Jenkins来实现测试覆盖率的展示。

如何使用Cobertura

1、pom中添加依赖
代码语言:javascript
代码运行次数:0
运行
复制
           <!-- 在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、通过命令行生成报告文件

输入如下命令:

代码语言:javascript
代码运行次数:0
运行
复制
mvn cobertura:cobertura

它会在每个模块以及根目录的target下分别产生.ser文件以及相应覆盖率报告文件。

3、覆盖率报告

覆盖率的html报告如下:

4、其他定制需要

因实际场景需要,排除某些方法,需要调整如下配置:

代码语言:javascript
代码运行次数:0
运行
复制
<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>

如果要对测试覆盖率进行控制,一定要达到指定标准呢,做如下配置:

代码语言:javascript
代码运行次数:0
运行
复制
<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
添加构建后操作
生成覆盖率报告

所有的配置都好了,点击立即构建,即可生成相应的测试覆盖率报告

到此,关于Cobertura的使用介绍完毕,有兴趣的同学,请自行尝试!

[参考文章]

https://blog.csdn.net/guzhangyu12345/article/details/90542976 https://blog.csdn.net/weixin_40785472/article/details/115961328。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是代码覆盖率?
  • 为什么要测量代码覆盖率?
  • 关于Cobertura
  • 如何使用Cobertura
    • 1、pom中添加依赖
    • 2、通过命令行生成报告文件
    • 3、覆盖率报告
    • 4、其他定制需要
  • 与Jenkins集成
    • 安装Cobertura插件
    • 设置 Pre Steps
    • 添加构建后操作
    • 生成覆盖率报告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档