首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 软件包 / 软件组件 / 插件 / 一种代码覆盖率的测试方法及系统

一种代码覆盖率的测试方法及系统

阅读:0发布:2021-03-05

专利汇可以提供一种代码覆盖率的测试方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种代码 覆盖 率的测试方法及系统,包括:根据测试代码覆盖率的任务,获取执行参数;根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;在所述动态构建的测试环境中执行测试 用例 模 块 ,得到代码覆盖率的测试结果。本发明可根据不同的测试任务,获取对应的执行参数,并通过动态构建测试环境,可以满足多场景多业务的应用场景,适应测试环境部署的多样性,从而可提高 软件 测试的自动化程度。,下面是一种代码覆盖率的测试方法及系统专利的具体信息内容。

1.一种代码覆盖率的测试方法,其特征在于,包括以下步骤:
根据测试代码覆盖率任务,获取执行参数;
根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
2.根据权利要求1所述的代码覆盖率的测试方法,其特征在于,所述执行参数包括测试环境参数、镜像版本号参数及测试用例模参数;以及,
所述启动容器引擎工具包括:
根据所述镜像版本号参数构造环境镜像;具体为:根据所述镜像版本号参数拉取对应的镜像,判断所述镜像对应的测试环境和测试用例模块与所述测试环境参数和测试用例模块参数是否分别对应,当判断结果为不对应时,对所述镜像进行重新配置以生成环境镜像;
当判断结果为对应时,以所述镜像作为环境镜像;
根据所述环境镜像启动容器引擎工具。
3.根据权利要求2所述的代码覆盖率的测试方法,其特征在于,所述对所述镜像进行重新配置以生成环境镜像,包括:
为所述镜像配置构建工具Ant;
在所述镜像中加入Java代码覆盖率工具JaCoCo文件的插件工具;
配置所述镜像启动脚本中的JaCoCo文件的代理参数。
4.根据权利要求1-3之一所述的代码覆盖率的测试方法,其特征在于,所述与生成代码覆盖率相关的文件包括:代码覆盖率生成工具的配置文件、源代码目录以及代码覆盖率报告目录;
以及所述动态构建测试环境还包括:在容器引擎工具启动后,下载源代码并将所述源代码放入所述宿主机中的源代码目录,修改宿主机中的代码覆盖率生成工具的配置文件,重启容器引擎工具。
5.根据权利要求4所述的代码覆盖率的测试方法,其特征在于,所述修改宿主机中的代码覆盖率生成工具的配置文件,包括:
在代码覆盖率生成工具的配置文件中配置源代码目录和被测代码目录的地址;
在代码覆盖率生成工具的配置文件中修改源文件和类文件配置;其中,所述源文件为源代码文件,所述类文件为源代码在被测代码中对应的jar文件或class文件。
6.一种代码覆盖率的测试系统,其特征在于,包括:
执行参数获取单元,用于根据测试代码覆盖率的任务,获取执行参数;
测试环境构建单元,根据所述执行参数动态构建测试环境,所述测试环境构建单元包括容器启动模块,所述容器启动模块用于启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
执行测试单元,在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
7.根据权利要求6所述的代码覆盖率的测试系统,其特征在于,所述执行参数包括测试环境参数、镜像版本号参数及测试用例模块参数;以及,
所述容器启动模块具体用于根据所述镜像版本号参数构造环境镜像;具体为:根据所述镜像版本号参数拉取对应的镜像,判断所述镜像对应的测试环境和测试用例模块与所述测试环境参数和测试用例模块参数是否分别对应,当判断结果为不对应时,对所述镜像进行重新配置以生成环境镜像;当判断结果为对应时,以所述镜像作为环境镜像;并根据所述环境镜像启动容器引擎工具。
8.根据权利要求7所述的代码覆盖率的测试系统,其特征在于,所述容器启动模块,具体用于:
为所述镜像配置构建工具Ant;
在所述镜像中加入Java代码覆盖率工具JaCoCo文件的插件工具;
配置所述镜像启动脚本中的JaCoCo文件的代理参数。
9.根据权利要求6-8之一所述的代码覆盖率的测试系统,其特征在于,所述与生成代码覆盖率相关的文件包括:代码覆盖率生成工具的配置文件、源代码目录以及代码覆盖率报告目录;以及,
所述测试环境构建单元还包括下载源码模块,所述下载源码模块用于在容器引擎工具启动后,下载源代码并将所述源代码放入所述宿主机中的源代码目录,修改宿主机中的代码覆盖率生成工具的配置文件,重启容器引擎工具。
10.根据权利要求9所述的代码覆盖率的测试系统,其特征在于,所述下载源码模块,具体用于:
在代码覆盖率生成工具的配置文件中配置源代码目录和被测代码目录的地址;
在代码覆盖率生成工具的配置文件中修改源文件和类文件配置;其中,所述源文件为源代码文件,所述类文件为源代码在被测代码中对应的jar文件或class文件。
11.一种代码覆盖率的测试系统,其特征在于,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
根据测试代码覆盖率任务,获取执行参数;
根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
根据测试代码覆盖率任务,获取执行参数;
根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。

说明书全文

一种代码覆盖率的测试方法及系统

技术领域

[0001] 本发明涉及软件测试技术领域,特别是涉及一种代码覆盖率的测试方法及系统。

背景技术

[0002] 现有技术中测试代码覆盖率主要通过人工进行,工作量较大。测试覆盖率前需要提前根据业务需求搭建测试环境,并且在每次的测试环境中分别配置JaCoCo文件。测试环境搭建完成后,还有一系列准备工作如:根据不同的业务需求测试前需要人工下载源码、更改覆盖率报告的相关配置并且执行对应的测试用例等。这些持续重复性的工作会浪费测试领域较大的人资源,工作量较大,导致覆盖率报告产出效率较低,影响测试质量的提升。
[0003] 此外,在Jenkins中集成tomcat环境部署并采用JaCoCo插件生成覆盖率报告的技术,只是实现了代码覆盖率报告的持续集成。其中测试环境的搭建,源码的下载和测试用例的调用仍是手工执行。并且这种环境单一的覆盖率测试技术不适用于多业务场景,当日常覆盖率测试需要针对不同的测试环境时,原有的持续集成部署不能满足需求。在不同的测试环境中,需要根据需求动态地启动测试环境、下载待测试的源代码和动态地更改构建报告的XML文件。
[0004] 在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
[0005] 目前测试代码覆盖率的方法测试时间长、无法适应测试环境部署的多样性,导致自动化程度低。

发明内容

[0006] 本发明实施例提供一种代码覆盖率的测试方法及系统,提高软件代码测试的自动化程度。
[0007] 一方面,本发明实施例提供了一种代码覆盖率的测试方法,包括:
[0008] 根据测试代码覆盖率任务,获取执行参数;
[0009] 根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0010] 在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
[0011] 另一方面,本发明实施例提供了一种代码覆盖率的测试系统,包括:
[0012] 执行参数获取单元,用于根据测试代码覆盖率的任务,获取执行参数;
[0013] 测试环境构建单元,根据所述执行参数动态构建测试环境,所述测试环境构建单元包括容器启动模,所述容器启动模块用于启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0014] 执行测试单元,在所述动态构建的测试环境中执行测试用例模块,得到代码覆盖率的测试结果。
[0015] 另一方面,本发明实施例提供了一种代码覆盖率的测试系统,包括:
[0016] 处理器;以及
[0017] 被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
[0018] 根据测试代码覆盖率任务,获取执行参数;
[0019] 根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0020] 在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
[0021] 另一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
[0022] 根据测试代码覆盖率任务,获取执行参数;
[0023] 根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并在启动容器引擎工具的同时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0024] 在所述动态构建的测试环境中执行测试用例,得到代码覆盖率的测试结果。
[0025] 上述技术方案具有如下有益效果:
[0026] 本发明可根据不同的测试任务,获取对应的执行参数,并通过动态构建测试环境,可以满足多场景多业务的应用场景,适应测试环境部署的多样性,从而可提高软件测试的自动化程度。附图说明
[0027] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028] 图1是本发明代码覆盖率的测试方法的流程图
[0029] 图2是本发明代码覆盖率的测试系统的模块结构示意图;
[0030] 图3是本发明动态构建测试环境单元的结构示意图。

具体实施方式

[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 在介绍本发明的技术方案之前,先介绍以下本发明中涉及到的一些专有名词:
[0033] 代码覆盖率:表示测试用例对已执行源代码的覆盖,作为软件测试中的一种度量被广泛使用。代码覆盖率可以体现出源代码被测试的程度和比例,可以清楚的知道源代码被覆盖到和没有被覆盖到的分支、行、类等。当覆盖率比值越高时,表示源代码被测试用例执行到的比例就越高。测试人员通过代码覆盖率结果,可以为覆盖不充分的源代码添加测试用例,从而进一步完善测试保障工作,完善开发的软件功能。
[0034] JaCoCo:是市场上广泛应用的一种Java代码覆盖率工具。JaCoCo采用修改字节码的方法,来修改被测代码的jar文件或class文件。将统计代码插入其中,然后测试覆盖率分析可以在执行测试代码的过程中完成。
[0035] Ant:是一种基于Java的构建工具,运行时需要一个基于XML的配置文件。每个配置文件中设置了一系列任务(target),Ant通过调用target,就可以执行各种任务。在本申请中Ant主要应用于测试用例的执行和最后的代码覆盖率报告的构建。
[0036] Docker:是一个开源的容器引擎工具,可以为软件应用、web服务等创建一个可移植的、轻量级的容器,用于软件测试和软件开发等。镜像、容器和仓库是Docker的三个重要组件:1)一个镜像可以包含一个完整的系统环境和应用程序,镜像可以用来创建Docker容器。2)容器是镜像创建的实例,Docker通过利用容器来完成应用的开发和运行。3)仓库是集中存放镜像文件的场所。仓库可以是公开仓库,公司内部的线上仓库和本地网络创建的私有仓库等。
[0037] 宿主机:是指承载整个Docker服务的主机,即用来启动Docker容器的服务器。Docker容器启动时通过挂载宿主机目录可以在容器中自动创建和复制该目录。
[0038] 持续集成:将多项任务周期性的进行集成测试的过程。随着软件测试需求越来越复杂,测试任务不能够简单的通过划分模块的方式来进行,各个模块之间需要相互合作,因此持续集成变得越来越重要。持续集成可以用于完成一些周期、繁琐、复杂的任务,可以实现整个测试过程的完全自动化。
[0039] Jenkins:是一个开源软件工具,在持续集成领域广泛应用。其中Jenkins Pipeline是运行在Jenkins上的工作流程框架,将多个节点的任务连接起来,实现单个任务完成复杂流程的目的。
[0040] Shell:是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell脚本是一种为Shell编写的脚本程序,用于完成用户编写的各种执行任务。
[0041] WeTest:是处理API(Application Programming Interface,应用程序编程接口)接口测试的轻量级自动化测试框架,利用Java语言实现,拓展了JUnit4开源框架,支持Ant/Maven的执行方式。根据JUnit4测试类名进行正则匹配后可以聚合相同模块的测试用例,然后以Shell脚本进行调度,Ant执行对应的XML文件后会构建指定的聚合类,从而实现运行某个模块的所有测试用例。
[0042] 本发明的目的是提供代码覆盖率的测试方法,可根据不同的测试任务,获取对应的执行参数,并通过动态构建测试环境,可以满足多场景多业务的应用场景,适应测试环境部署的多样性,从而可提高软件测试的自动化程度。
[0043] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0044] 如图1所示,本发明代码覆盖率的测试方法包括:
[0045] 步骤101:根据测试代码覆盖率的任务,获取执行参数;
[0046] 步骤102:根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0047] 步骤103:在所述动态构建的测试环境中执行测试用例模块,得到代码覆盖率的测试结果。
[0048] 其中对于步骤101中,测试环境参数:根据不同的覆盖率业务需要,测试人员会对接不同类型的测试任务,因此会有多种要执行代码覆盖率的测试环境。在执行测试前,需要选择一种要执行代码覆盖率的测试环境。例如:以微博业务举例,分为web前端、对象库前端等前端测试环境和对象库rpc、短链rpc、card rpc等rpc测试环境。
[0049] 镜像版本号参数:在选定了一种测试环境后,在执行测试前,需要获取到该测试环境业务代码的镜像版本号。由于定期的上线迭代等,公司的线上镜像仓库中有不同版本的环境代码,此处可以选择最新的或者需要的镜像版本号。例如:微博业务中,web前端的一个镜像版本号为web_v4_deploy:1.0.100。
[0050] 测试用例模块参数:代码覆盖率是度量源代码被测试用例覆盖的程度和比例。因此在最后配置好测试环境后,需要执行测试用例。根据测试任务的不同和要测试的源代码不同,需要执行不同的测试用例模块,因此Jenkins还需要动态的获取对应测试用例的模块编号。例如:以微博业务举例,执行评论模块则选择评论测试用例,执行赞模块则选择赞测试用例。
[0051] 对于步骤102,进一步优选为,所述执行参数包括测试环境参数、镜像版本号参数及测试用例模块参数;以及,
[0052] 所述启动容器引擎工具包括:
[0053] 根据所述镜像版本号参数构造环境镜像;具体为:根据所述镜像版本号参数拉取对应的镜像,判断所述镜像对应的测试环境和测试用例模块与所述测试环境参数和测试用例模块参数是否分别对应,当判断结果为不对应时,对所述镜像进行重新配置以生成环境镜像;当判断结果为对应时,以所述镜像作为环境镜像;
[0054] 根据所述环境镜像启动容器引擎工具。
[0055] 进一步优选地,所述对所述镜像进行重新配置以生成环境镜像,包括:
[0056] 为所述镜像配置构建工具Ant;
[0057] 在所述镜像中加入Java代码覆盖率工具JaCoCo文件的插件工具;
[0058] 配置所述镜像启动脚本中的JaCoCo文件的代理参数。
[0059] 对于构造环境镜像:在执行覆盖率测试过程中,从公司的线上仓库拉取的测试环境的镜像不能直接使用,需要配置执行代码覆盖率的环境变量等进行重新构建。这一步在自动化执行过程中非必需,例如:在执行代码覆盖率时选择了相同的测试环境相同的测试用例模块,可以执行之前已构建好的镜像,其他情况需在自动化执行过程中重新构建。此模块的实现是在Jenkins Pipeline中完成,操作步骤如下
[0060] 1)因为最后的覆盖率测试报告采用了Ant进行构建,所以在拉取指定版本号的镜像后,还需要配置Ant环境。
[0061] 2)在新镜像中加入JaCoCo文件的插件工具。
[0062] 3)配置新镜像中启动脚本中JaCoCo的Java Agent代理参数,用于覆盖率数据收集。
[0063] 4)配置完成后重新构造成一个新的镜像,新的镜像编译完成后再push到私有仓库。
[0064] 对于步骤102,进一步优选为,所述与生成代码覆盖率相关的文件包括:代码覆盖率生成工具的配置文件、源代码目录以及代码覆盖率报告目录;
[0065] 以及所述动态构建测试环境还包括:在容器引擎工具启动后,下载源代码并将所述源代码放入所述宿主机中的源代码目录,修改宿主机中的代码覆盖率生成工具的配置文件,重启容器引擎工具。
[0066] 其中,启动Docker模块:此模块的实现是在Jenkins Pipeline中完成,主要包括以下步骤
[0067] 1)查看容器列表,将之前启动的旧的Docker容器进行删除。例如:微博业务中想测试web_v4_deploy:1.0.100的代码覆盖率,将之前存在的web_v4_deploy其他版本的不必要的容器进行删除,减少机器负载。
[0068] 2)使用上一步中新生成的镜像启动Docker容器。启动容器时需要挂载宿主机中生成代码覆盖率的XML文件、源代码目录和代码覆盖率报告目录到Docker容器中,用于之后覆盖率报告的生成。
[0069] 进一步优选为,所述修改宿主机中的代码覆盖率生成工具的配置文件,包括:
[0070] 在代码覆盖率生成工具的配置文件中配置源代码目录和被测代码目录的地址;
[0071] 在代码覆盖率生成工具的配置文件中修改源文件和类文件配置;其中,所述源文件为源代码文件,所述类文件为源代码在被测代码中对应的jar文件或class文件。
[0072] 其中,下载源码模块:JaCoCo是以插桩的方式将统计代码插入到被测代码中的,然后根据不同的业务需求,采用Ant导出指定源码的覆盖率数据,因此需要下载对应的源代码。例如:在微博业务中,选择了测试web前端环境的未读池模块的代码覆盖率,此处应该下载web前端代码中的api-sevice和feed-service等jar文件的源代码。同时通过将源代码放入宿主机的源代码目录中可以将其挂载到Docker容器中。下载完源代码模块后还需要对宿主机器中的JaCoCo的XML配置文件进行修改,XML文件修改的内容主要包括如下内容:
[0073] 1)在XML文件中配置源代码目录和被测代码目录的地址,为之后生成和导出覆盖率数据提供地址。
[0074] 2)在XML文件中修改源文件和类文件配置,用于生成覆盖率数据。原文件指的是源代码文件,类文件指的是源代码在被测代码中对应的jar文件或class文件。
[0075] 被测代码是被测环境中的一部分,在测试环境中以jar文件或class文件的形式存在。
[0076] 源代码是该jar文件或class文件的java源码。
[0077] 此模块的下载和修改过程均在Shell脚本中完成。下载完源代码并且修改完XML文件后重启Docker容器。至此,实现了执行代码覆盖率的测试环境的动态构建。
[0078] 对于步骤103,执行测试用例:主要包括以下内容
[0079] 1)执行测试用例前需要监测测试环境启动完成,即测试环境可以调通,此功能在Jenkins的构建步骤Execute Shell中完成,超时没有启动成功时Jenkins会提示构建失败。
[0080] 2)微博的测试用例工程采用了WeTest接口测试自动化框架,每个测试模块构建成了一个对应的XML文件。此过程通过采用Shell脚本调用Ant执行完成。例如:在web前端环境中执行未读池模块的测试用例,即在Shell脚本中执行Ant Unread.xml。
[0081] 测试用例执行完成后,在JaCoCo的XML文件目录下,采用Ant构建方式生成html测试报告,并以邮件形式发送给测试人员。
[0082] 本发明代码覆盖率的测试方法可应用到微博平台的日常测试中,日常测试的环境主要包括web前端环境、card rpc环境、短链rpc环境和对象库rpc环境等。通过使用该技术可极大提高覆盖率测试环境的动态参数化启动,提高了生成代码覆盖率的测试效率,针对未覆盖的源代码可以及时进行测试用例添加,代码覆盖比例明显提高。例如:
[0083] 在web前端测试环境中执行未读池的测试用例模块,下载的源代码模块包括:api-data,api-engine,web_v4,api-mq,api-comment,api-statuses,feed-service和apollo。最后产出的覆盖率的html报告结果。
[0084] 本发明通告采用自动化执行代码覆盖率的测试技术,能够提高测试效率,缩短整个软件开发流程中的测试周期。且由于动态构建测试环境,可以满足多场景多业务的应用场景。通过持续集成可以定期执行生成代码覆盖率报告,从而推动产生测试流程各种必要的预案和改进措施,完善测试系统,提高测试的可靠性。
[0085] 本技术通过持续集成和Shell脚本等实现了动态搭建执行代码覆盖率的测试环境、动态更改配置文件和自动执行测试用例等任务,实现了一键启动和执行。在软件测试领域中,本技术具有独创性。
[0086] 此外,本发明还提供一种代码覆盖率的测试系统,提高软件代码测试的自动化程度。如图2所示,本发明代码覆盖率的测试系统包括:
[0087] 执行参数获取单元21,用于根据测试任务,获取执行参数;
[0088] 测试环境构建单元22,根据所述执行参数动态构建测试环境,所述测试环境构建单元包括容器启动模块,所述容器启动模块用于启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0089] 执行测试单元23,在所述动态构建的测试环境中执行测试用例模块,得到测试结果。
[0090] 进一步地,所述执行参数包括测试环境参数、镜像版本号参数及测试用例模块参数;以及,
[0091] 所述容器启动模块具体用于根据所述镜像版本号参数构造环境镜像;具体为:根据所述镜像版本号参数拉取对应的镜像,判断所述镜像对应的测试环境和测试用例模块与所述测试环境参数和测试用例模块参数是否分别对应,当判断结果为不对应时,对所述镜像进行重新配置以生成环境镜像;当判断结果为对应时,以所述镜像作为环境镜像;并根据所述环境镜像启动容器引擎工具。
[0092] 进一步地所述容器启动模块,具体用于:
[0093] 为所述镜像配置构建工具Ant;
[0094] 在所述镜像中加入Java代码覆盖率工具JaCoCo文件的插件工具;
[0095] 配置所述镜像启动脚本中的JaCoCo文件的代理参数。
[0096] 进一步地,所述与生成代码覆盖率相关的文件包括:代码覆盖率生成工具的配置文件、源代码目录以及代码覆盖率报告目录;以及,
[0097] 所述测试环境构建单元还包括下载源码模块,所述下载源码模块用于在容器引擎工具启动后,下载源代码并将所述源代码放入所述宿主机中的源代码目录,修改宿主机中的代码覆盖率生成工具的配置文件,重启容器引擎工具。
[0098] 进一步地,所述下载源码模块,具体用于:
[0099] 在代码覆盖率生成工具的配置文件中配置源代码目录和被测代码目录的地址;
[0100] 在代码覆盖率生成工具的配置文件中修改源文件和类文件配置;其中,所述源文件为源代码文件,所述类文件为源代码在被测代码中对应的jar文件或class文件。
[0101] 此外,本发明还提供一种代码覆盖率的测试系统,包括:
[0102] 处理器;以及
[0103] 被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
[0104] 根据测试任务,获取执行参数;
[0105] 根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0106] 在所述动态构建的测试环境中执行测试用例模块,得到测试结果。
[0107] 本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
[0108] 根据测试任务,获取执行参数;
[0109] 根据所述执行参数动态构建测试环境,所述动态构建测试环境包括启动容器引擎工具,并设置为在容器引擎工具启动时,将宿主机中与生成代码覆盖率相关的文件挂载到容器引擎工具中;
[0110] 在所述动态构建的测试环境中执行测试用例模块,得到测试结果。
[0111] 对于现有技术,本发明代码覆盖率的测试系统、计算机可读存储介质与上述代码覆盖率的测试方法的有益效果相同,在此不再赘述。
[0112] 应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0113] 在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0114] 为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
[0115] 上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
[0116] 本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0117] 本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
[0118] 本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
[0119] 在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
[0120] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈