本发明属于互联网领域,尤其涉及一种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代码覆盖率统计系统的系统架构图,其中,Spring MVC/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覆盖率统计主站点就可以进行覆盖率统计的各种操作。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。