CN109684226A - Java代码覆盖率统计系统 - Google Patents

Java代码覆盖率统计系统 Download PDF

Info

Publication number
CN109684226A
CN109684226A CN201811647217.6A CN201811647217A CN109684226A CN 109684226 A CN109684226 A CN 109684226A CN 201811647217 A CN201811647217 A CN 201811647217A CN 109684226 A CN109684226 A CN 109684226A
Authority
CN
China
Prior art keywords
coverage rate
code
statistics
coverage
statistical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811647217.6A
Other languages
English (en)
Inventor
王幸福
梅强强
张秋会
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ctrip Computer Technology Shanghai Co Ltd
Original Assignee
Ctrip Computer Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ctrip Computer Technology Shanghai Co Ltd filed Critical Ctrip Computer Technology Shanghai Co Ltd
Priority to CN201811647217.6A priority Critical patent/CN109684226A/zh
Publication of CN109684226A publication Critical patent/CN109684226A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Abstract

本发明公开了一种Java代码覆盖率统计系统。其包括:覆盖率统计服务客户端,是被安装被测应用所在服务器上的Web服务,用于:启停被测应用所在Web容器、加载或卸载Jacoco相应的启动参数到Web容器的启动文件中、下载Jacoco产生的覆盖率统计文件中的至少一种;覆盖率统计服务端,用于:覆盖率统计配置;系统覆盖率统计;单元测试覆盖率统计;支持所述覆盖率统计服务客户端查询覆盖率统计结果。本发明能够提供一站式Java覆盖率统计配置,自动化测试执行以及覆盖率结果查看等服务,为测试人员提供了便利。

Description

Java代码覆盖率统计系统
技术领域
本发明属于互联网领域,尤其涉及一种Java(一种面向对象编程语言)代码覆盖率统计系统。
背景技术
目前Java代码覆盖率统计解决方案要么是嵌入Ant,Maven等构件工具进行,要么是与jenkins等持续集成工具整合进行。但是多是进行单元测试的代码覆盖率统计,且测试人无法很便捷的触发和配置覆盖率统计的执行,也无法直观的查看和统计覆盖率统计的历史情况。亟需为测试人员提供一个简单配置就可以进行代码覆盖率统计,查看覆盖率统计结果的测试方案。
发明内容
本发明针对上述技术问题,提供一种Java代码覆盖率统计系统。
本发明是通过以下技术方案解决上述技术问题的:
一种Java代码覆盖率统计系统,包括:
覆盖率统计服务客户端,是被安装被测应用所在服务器上的Web(互联网总称)服务,用于:启停被测应用所在Web容器、加载或卸载Jacoco(覆盖率统计工具)相应的启动参数到Web容器的启动文件中、下载Jacoco产生的覆盖率统计文件中的至少一种;
覆盖率统计服务端,用于:
覆盖率统计配置,具体包括忽略模块配置、覆盖率包含配置、覆盖率排除配置中的至少一种;
系统覆盖率统计,具体包括:通过所述覆盖率统计服务客户端在被测应用的启动过程中把Jacoco插桩到被测应用的JVM(Java虚拟机)进程中,以捕获应用过程中产生的第一覆盖率数据,通过所述第一覆盖率数据进行系统级别的覆盖率统计;
单元测试覆盖率统计,具体包括:从Git服务器拉取单元测试用例代码到本地服务器,通过执行Jacoco-maven-plugin插件获取单元测试的第二覆盖率数据,将所述第二覆盖率数据交由SonarQube(一种代码质量管理平台)进行单元测试的覆盖率统计;
支持所述覆盖率统计服务客户端查询覆盖率统计结果。
较佳地,所述覆盖率统计服务端还用于:
代码质量静态检查,具体包括从Git服务器拉取代码到本地服务器,通过执行sonar-maven-plugin插件把代码交由SonarQube进行代码静态扫描。
较佳地,所述覆盖率统计服务端还用于:
增量覆盖率统计,具体包括比对两个版本中新增代码的覆盖率。
较佳地,所述覆盖率统计服务端还用于:
一键覆盖率统计,具体包括在开启覆盖率统计后,调用配置的API(应用程序编程接口)或UI(用户界面)自动化测试平台的接口执行自动化测试平台中配置的测试用例,获取所述自动化测试平台执行完毕后的反馈结果,通过所述覆盖率统计服务客户端拉取覆盖率统计文件到服务器进行覆盖率统计分析。
较佳地,所述覆盖率统计服务端还用于:
分布式执行管理,具体包括覆盖率统计任务的分发,处理和结果收集,以及节点服务器的管理和状态监测。
较佳地,覆盖率统计服务端还用于支持覆盖率结果详情查看,所述覆盖率结果详情包括以下内容中的至少一种:
覆盖率数据库,存储有覆盖率、分支覆盖率、行覆盖率和新代码覆盖率中的至少一种;
设置的覆盖率统计包含的各代码目录或文件的覆盖率统计情况列表;
被测应用代码的概况数据展示;
被测应用的覆盖率历史统计趋势图显示;
被测应用的覆盖率历史统计数据列表显示。
较佳地,所述覆盖率统计服务端部署在多个Windows服务器上,其中一个服务器作为主站点,其他服务器作为覆盖率统计的执行站点。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:本发明能够提供一站式Java覆盖率统计配置,自动化测试执行以及覆盖率结果查看等服务,为测试人员提供了便利。
附图说明
图1为本发明实施例1的一种Java代码覆盖率统计系统的系统框图。
图2为本发明实施例1的Java代码覆盖率统计系统的系统架构图。
图3为本发明实施例1的系统实施物理部署图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供了一种Java代码覆盖率统计系统。如图1所示,所述Java代码覆盖率统计系统包括:覆盖率统计服务客户端10和覆盖率统计服务端20。
所述覆盖率统计服务客户端10是被安装被测应用所在服务器上的Web服务,主要用于:启停被测应用所在Web容器(比如Tomcat)、加载或卸载Jacoco相应的启动参数到Web容器的启动文件中、下载Jacoco产生的覆盖率统计文件中的至少一种。
所述覆盖率统计服务端20可以用于提供多种服务,具体包括:覆盖率统计配置,系统覆盖率统计,单元测试覆盖率统计,代码质量静态检查,增量覆盖率统计,一键覆盖率统计,分布式执行管理,覆盖率结果查询,覆盖率结果详情查看。当然,本实施例并不局限于此,测试人员可以根据需求增加或删减部分服务。下面对各服务进行详细说明:
(1)覆盖率统计配置,具体可以包括:
A.忽略模块配置:如在Java的Maven项目中,经常会有多模块的项目,通过该设置,可以在编译以及统计覆盖率时忽略某些模块;
B.覆盖率包含配置:如通过可视化树状代码结构,可以对需要覆盖率统计的目录和代码进行勾选,最后覆盖率统计结果就只包含选择目录和代码的覆盖率;
C.覆盖率排除配置:通过可视化树状代码结构,可以对不需要覆盖率统计的目录和代码进行勾选,最后覆盖率统计结果就会排除掉选择的目录和代码的覆盖率。
(2)系统覆盖率统计,具体包括:
通过所述覆盖率统计服务客户端10在被测应用的启动过程中把Jacoco插桩到被测应用的JVM进程中,以捕获应用过程中产生的第一覆盖率数据,所述覆盖率统计服务端20通过所述第一覆盖率数据进行系统级别的覆盖率统计。
(3)单元测试覆盖率统计,具体包括:
从Git服务器拉取单元测试用例代码到本地服务器,通过执行Jacoco-maven-plugin插件获取单元测试的第二覆盖率数据,将所述第二覆盖率数据交由SonarQube进行单元测试的覆盖率统计。
(4)代码质量静态检查,具体包括:
从Git服务器拉取代码到本地服务器,通过执行sonar-maven-plugin插件把代码交由SonarQube进行代码静态扫描。
(5)增量覆盖率统计,具体包括:
比对两个版本中新增代码的覆盖率,通过增量覆盖率统计,测试人员可以很清晰的了解新版本中新增功能的覆盖情况,进而提高回归测试的质量。
(6)一键覆盖率统计,具体包括:
通过与API,UI自动化测试的整合,在开启覆盖率统计后,调用配置的API或UI自动化测试平台的接口执行自动化测试平台中配置的测试用例,获取所述自动化测试平台执行完毕后的反馈结果,通过所述覆盖率统计服务客户端10拉取覆盖率统计文件到服务器进行覆盖率统计分析,分析完毕后用户就可以查看应用的覆盖率统计情况了。
(7)分布式执行管理,具体包括:
A.覆盖率统计任务的分发,处理和结果收集,实现了任务的并行处理,有效的减少了服务器的负载;
B.节点服务器的管理(包括增删改)和状态监测。
(8)支持所述覆盖率统计服务客户端10查询覆盖率统计结果:
覆盖率结果查询可以便捷的查询本组,本人覆盖率统计的详细信息.同时用户也可以下载覆盖率查询结果。
(9)支持覆盖率结果详情查看
为了使用户可以更清晰,更全面的了解自己应用的覆盖率统计情况,所述覆盖率结果详情主要包括以下内容中的至少一种:
A.覆盖率数据库,存储有覆盖率、分支覆盖率、行覆盖率和新代码覆盖率中的至少一种;
B.设置的覆盖率统计包含的各代码目录或文件的覆盖率统计情况列表;
C.被测应用代码的概况数据展示,比如类,文件,行数,函数,单元测试数等情况;
D.被测应用的覆盖率历史统计趋势图显示;
E.被测应用的覆盖率历史统计数据列表显示。
本实施例使测试人员可以很方便的实现单元测试,集成测试的代码覆盖率的统计和结果查看。通过与API,UI自动化结合,可以对测试用例查漏补缺,完善测试用例对功能的覆盖,提高被测系统的质量。
图2示出了本实施例的Java代码覆盖率统计系统的系统架构图,其中,SpringMVC/MyBatis/Maven/Sonar作为基础架构技术,本实施例的系统构建在这些技术之上。
本实施例的系统覆盖率支持的测试类型可以包括:
A.测试环境:单元测试、API自动化测试前置、UI自动化测试、手动测试;
B.UAT环境:API/UI自动化测试、验证测试。
用户的基本操作流程为:
A.创建覆盖率统计项;
B.部署覆盖率统计服务客户端10;
C.打开覆盖率统计开关;
D.执行手动/自动化测试用例;
E.关闭覆盖率统计开关;
F.等待统计完成后,查看覆盖率统计结果。
用户进行单元测试覆盖率统计的流程为:
A.开启单元测试覆盖率统计;
B.等待统计完成后,查看单元测试覆盖率统计结果。
用户进行静态代码扫描的流程为:
A.开启静态代码扫描;
B.等待扫描完毕后,查看静态代码扫描结果。
用户进行一键覆盖率统计的流程为:
A.开启一键覆盖率统计;
B.等待统计完成后,查看覆盖率统计结果。
用户进行增量覆盖率统计的流程为:
A.开启增量覆盖率统计开关;
B.进行相关的测试(比如API测试,UI自动化测试,手工测试等);
C.完成测试后关闭增量覆盖率统计开关;
D.等待统计完成后,查看增量覆盖率统计结果。
图3示出了本实施例的系统实施物理部署图。所述覆盖率统计服务端20可以部署在多个Windows服务器上,其中一个服务器作为主站点,其他服务器作为覆盖率统计的执行站点。用户通过浏览器访问Java覆盖率统计主站点就可以进行覆盖率统计的各种操作。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (7)

1.一种Java代码覆盖率统计系统,其特征在于,包括:
覆盖率统计服务客户端,是被安装被测应用所在服务器上的Web服务,用于:启停被测应用所在Web容器、加载或卸载Jacoco相应的启动参数到Web容器的启动文件中、下载Jacoco产生的覆盖率统计文件中的至少一种;
覆盖率统计服务端,用于:
覆盖率统计配置,具体包括忽略模块配置、覆盖率包含配置、覆盖率排除配置中的至少一种;
系统覆盖率统计,具体包括:通过所述覆盖率统计服务客户端在被测应用的启动过程中把Jacoco插桩到被测应用的JVM进程中,以捕获应用过程中产生的第一覆盖率数据,通过所述第一覆盖率数据进行系统级别的覆盖率统计;
单元测试覆盖率统计,具体包括:从Git服务器拉取单元测试用例代码到本地服务器,通过执行Jacoco-maven-plugin插件获取单元测试的第二覆盖率数据,将所述第二覆盖率数据交由SonarQube进行单元测试的覆盖率统计;
支持所述覆盖率统计服务客户端查询覆盖率统计结果。
2.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,所述覆盖率统计服务端还用于:
代码质量静态检查,具体包括从Git服务器拉取代码到本地服务器,通过执行sonar-maven-plugin插件把代码交由SonarQube进行代码静态扫描。
3.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,所述覆盖率统计服务端还用于:
增量覆盖率统计,具体包括比对两个版本中新增代码的覆盖率。
4.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,所述覆盖率统计服务端还用于:
一键覆盖率统计,具体包括在开启覆盖率统计后,调用配置的API或UI自动化测试平台的接口执行自动化测试平台中配置的测试用例,获取所述自动化测试平台执行完毕后的反馈结果,通过所述覆盖率统计服务客户端拉取覆盖率统计文件到服务器进行覆盖率统计分析。
5.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,所述覆盖率统计服务端还用于:
分布式执行管理,具体包括覆盖率统计任务的分发,处理和结果收集,以及节点服务器的管理和状态监测。
6.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,覆盖率统计服务端还用于支持覆盖率结果详情查看,所述覆盖率结果详情包括以下内容中的至少一种:
覆盖率数据库,存储有覆盖率、分支覆盖率、行覆盖率和新代码覆盖率中的至少一种;
设置的覆盖率统计包含的各代码目录或文件的覆盖率统计情况列表;
被测应用代码的概况数据展示;
被测应用的覆盖率历史统计趋势图显示;
被测应用的覆盖率历史统计数据列表显示。
7.如权利要求1所述的Java代码覆盖率统计系统,其特征在于,所述覆盖率统计服务端部署在多个Windows服务器上,其中一个服务器作为主站点,其他服务器作为覆盖率统计的执行站点。
CN201811647217.6A 2018-12-29 2018-12-29 Java代码覆盖率统计系统 Pending CN109684226A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811647217.6A CN109684226A (zh) 2018-12-29 2018-12-29 Java代码覆盖率统计系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811647217.6A CN109684226A (zh) 2018-12-29 2018-12-29 Java代码覆盖率统计系统

Publications (1)

Publication Number Publication Date
CN109684226A true CN109684226A (zh) 2019-04-26

Family

ID=66191571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811647217.6A Pending CN109684226A (zh) 2018-12-29 2018-12-29 Java代码覆盖率统计系统

Country Status (1)

Country Link
CN (1) CN109684226A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990286A (zh) * 2019-12-12 2020-04-10 携程计算机技术(上海)有限公司 基于bdd的单元测试系统
CN111061639A (zh) * 2019-12-18 2020-04-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN111538660A (zh) * 2020-04-24 2020-08-14 中国工商银行股份有限公司 云上容器内程序代码覆盖率统计方法及装置
CN112069066A (zh) * 2020-09-01 2020-12-11 招商银行股份有限公司 代码覆盖率统计方法、装置、设备及计算机可读存储介质
CN112241254A (zh) * 2019-07-16 2021-01-19 北京车和家信息技术有限公司 一种车联网多端系统的代码统计方法及装置
CN112559348A (zh) * 2020-12-15 2021-03-26 广州云从鼎望科技有限公司 基于jacoco的测试分析方法、系统、设备以及介质
CN113032286A (zh) * 2021-05-24 2021-06-25 连连(杭州)信息技术有限公司 一种代码质量的扫描方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706751A (zh) * 2009-11-23 2010-05-12 中兴通讯股份有限公司 软件业务功能覆盖率的统计方法及系统
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
CN106681912A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 用于Android系统的代码覆盖率的自动化测试方法及装置
CN107480066A (zh) * 2017-08-18 2017-12-15 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN108153675A (zh) * 2017-12-26 2018-06-12 江苏润和软件股份有限公司 一种面向移动云计算的Android应用自动化测试方法
CN109002395A (zh) * 2018-07-06 2018-12-14 北京京东金融科技控股有限公司 一种代码覆盖率管理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706751A (zh) * 2009-11-23 2010-05-12 中兴通讯股份有限公司 软件业务功能覆盖率的统计方法及系统
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
CN106681912A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 用于Android系统的代码覆盖率的自动化测试方法及装置
CN107480066A (zh) * 2017-08-18 2017-12-15 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN108153675A (zh) * 2017-12-26 2018-06-12 江苏润和软件股份有限公司 一种面向移动云计算的Android应用自动化测试方法
CN109002395A (zh) * 2018-07-06 2018-12-14 北京京东金融科技控股有限公司 一种代码覆盖率管理方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ZPP____1988_: "Java代码覆盖率工具(Sonar+Jacoco)部署", 《HTTPS://BLOG.CSDN.NET/WANGXINYAO318/ARTICLE/DETAILS/54019977》 *
双木玉: "jacoco统计自动化代码覆盖率", 《HTTPS://BLOG.CSDN.NET/FJ119900121/ARTICLE/DETAILS/80984632》 *
王孟军: "Maven工程配置代码覆盖工具Jacoco", 《HTTPS://MY.OSCHINA.NET/WANGMENGJUN/BLOG/974067》 *
王铁军等: "《软件测试技术实战》", 31 August 2018, 西安电子科技大学出版 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241254A (zh) * 2019-07-16 2021-01-19 北京车和家信息技术有限公司 一种车联网多端系统的代码统计方法及装置
CN112241254B (zh) * 2019-07-16 2024-02-02 北京车和家信息技术有限公司 一种车联网多端系统的代码统计方法及装置
CN110990286A (zh) * 2019-12-12 2020-04-10 携程计算机技术(上海)有限公司 基于bdd的单元测试系统
CN111061639A (zh) * 2019-12-18 2020-04-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN111061639B (zh) * 2019-12-18 2023-03-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN111538660A (zh) * 2020-04-24 2020-08-14 中国工商银行股份有限公司 云上容器内程序代码覆盖率统计方法及装置
CN111538660B (zh) * 2020-04-24 2023-09-26 中国工商银行股份有限公司 云上容器内程序代码覆盖率统计方法及装置
CN112069066A (zh) * 2020-09-01 2020-12-11 招商银行股份有限公司 代码覆盖率统计方法、装置、设备及计算机可读存储介质
CN112559348A (zh) * 2020-12-15 2021-03-26 广州云从鼎望科技有限公司 基于jacoco的测试分析方法、系统、设备以及介质
CN113032286A (zh) * 2021-05-24 2021-06-25 连连(杭州)信息技术有限公司 一种代码质量的扫描方法、装置及存储介质

Similar Documents

Publication Publication Date Title
CN109684226A (zh) Java代码覆盖率统计系统
US11860821B2 (en) Generating target application packages for groups of computing devices
CA2468644C (en) Method and apparatus for managing components in an it system
US7318092B2 (en) Method and apparatus for remote discovery of software applications in a networked environment
CN110928774A (zh) 一种基于节点式的自动化测试系统
US8161149B2 (en) Pseudo-agent
EP2572294B1 (en) System and method for sql performance assurance services
CN105487977A (zh) 一种面向敏捷的自动化测试管理系统和方法
US20070157192A1 (en) Software maintenance management
Harrer et al. BPEL conformance in open source engines
US7996730B2 (en) Customizable system for the automatic gathering of software service information
US20020194320A1 (en) Remote support system
US20200117587A1 (en) Log File Analysis
Valetto et al. A case study in software adaptation
US20060161387A1 (en) Framework for collecting, storing, and analyzing system metrics
CN107911410A (zh) 分布式服务进程资源耗用统计方法和装置
Huang et al. PDA: A Tool for Automated Problem Determination.
CN107678965A (zh) 自动集成测试方法及系统、服务终端、存储器
WO2022256832A1 (en) Event management updates for tenants based on deployment needs
Denaro et al. Performance testing of distributed component architectures
Sokolowski Deployment coordination for cross-functional DevOps teams
KR101758127B1 (ko) 모바일 애플리케이션 서비스품질 측정을 통한 실시간 컨텐츠 가이드 시스템을 이용한 실시간 컨텐츠 가이드 방법
Ochei et al. Evaluating degrees of tenant isolation in multitenancy patterns: A case study of cloud-hosted Version Control System (VCS)
EP3757841A1 (en) Methods and devices for context-based string analysis for vulneratbility detection
Cajas Parra Implementation of a NFV monitoring system for reactive environments

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190426