一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

字节码获取方法、计算机设备、存储介质和程序产品与流程

2022-07-30 19:03:39 来源:中国专利 TAG:


1.本技术涉及软件开发技术领域,特别是涉及一种字节码获取方法、计算机设备、存储介质和程序产品。


背景技术:

2.在软件开发中,软件测试工作的首要目标是保证软件的质量。而在软件测试中代码覆盖率是衡量测试完整性的重要指标,覆盖率是由测试需求和测试用例的覆盖或已执行代码的覆盖结果表示。代码覆盖率一方面可以衡量测试工作本身的有效性提升测试效率,同时有助于提升代码的质量,从而提升产品的可靠性和稳定性。
3.容器开发模式是如今常用的软件开发模式,其具有结合容器编排的快速部署以及动态扩展等优势,可极大提升软件的交付效率。通常,覆盖率采集工作需要获取所测试软件的代码覆盖率以及源代码,然而,传统的采集方法不适用于如今容器开发模式下的覆盖率采集以及源代码的获取。因此,容器开发模式下获取被测试软件的源代码的问题亟需解决。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够在容器开发模式下获取被测试软件的源代码的字节码获取方法、计算机设备、存储介质和程序产品。
5.第一方面,本技术提供了一种字节码获取方法。该方法包括:
6.代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器;该代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径;该代码抽取服务器对该容器的运行信息进行解析,得到该容器运行时对应的程序代码在该代码抽取服务器中的第二存储路径;该代码抽取服务器根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件。
7.在其中一个实施例中,该代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径,包括:该代码抽取服务器对该镜像文件进行初解析,得到该镜像文件中的数据存储路径;该代码抽取服务器在该数据存储路径中搜索得到该第一存储路径。
8.在其中一个实施例中,该代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器之前,该方法还包括:该代码抽取服务器从制品仓库中拉取目标制品,该目标制品包含该镜像文件。
9.在其中一个实施例中,该方法还包括:容器编排服务器从制品仓库中拉取目标制品,并运行该目标制品中包含的该镜像文件,以生成该容器;该容器中的程序读取预先设置于该容器编排服务器中的配置信息,并根据该配置信息获取覆盖率采集工具,并将该覆盖率采集工具部署至该容器中运行;其中,该覆盖率采集工具,用于对该容器中的程序进行覆盖率采集。
10.在其中一个实施例中,该配置信息包括下载地址,该根据该配置信息获取覆盖率
采集工具,包括:根据该下载地址,下载该覆盖率采集工具。
11.在其中一个实施例中,该方法还包括:代码打包服务器向该容器编排服务器发送部署请求,该部署请求用于指示该容器编排平台从该制品仓库中拉取该目标制品。
12.在其中一个实施例中,该方法还包括:该代码打包服务器获取与该程序字节码对应的程序源代码;该代码打包服务器将该程序源代码打包,形成该镜像文件;该代码打包服务器根据该镜像文件,制作该目标制品,并将该目标制品推送至该制品仓库存储。
13.在其中一个实施例中,该代码打包服务器获取与该程序字节码对应的程序源代码,包括:该代码打包服务器获取代码指示信息;该代码打包服务器根据该代码指示信息从代码仓库中获取该程序源代码。
14.在其中一个实施例中,该方法还包括:覆盖率分析服务器获取该覆盖率采集工具采集到的该容器中的程序对应的覆盖率数据;该覆盖率分析服务器获取该程序字节码文件;该覆盖率分析服务器根据该覆盖率数据以及该程序字节码文件生成分析报告。
15.第二方面,本技术还提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现上述第一方面任一项所述的方法的步骤。
16.第三方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
17.第四方面,本技术还提供了一种计算机程序产品,该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
18.上述字节码获取方法、计算机设备、存储介质和程序产品,通过代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器;为获取字节码文件,该代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径,进一步的,该代码抽取服务器对该容器的运行信息进行解析,得到该容器运行时对应的程序代码在该代码抽取服务器中的第二存储路径,从而该代码抽取服务器可根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件,实现在容器开发模式下,灵活获取所运行的镜像文件中对应的程序字节码文件,从而可以使测试人员在获取到代码覆盖率后,结合该程序字节码文件进行查看。同时,通过集中抽取程序字节码文件,大大提升了获取程序字节码文件的效率。
附图说明
19.图1为一个实施例中字节码获取方法的流程示意图;
20.图2为一个实施例中获取第一存储路径的流程示意图;
21.图3为一个实施例中获取程序源代码的流程示意图;
22.图4为一个实施例中制作目标制品的流程示意图;
23.图5为一个实施例中生成分析报告的流程示意图;
24.图6为一个实施例中容器中覆盖率数据采集和字节码抽取的流程示意图;
25.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
26.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
27.在软件开发中,软件测试工作的首要目标是保证软件的质量。而在软件测试中代码覆盖率是衡量测试完整性的重要指标,覆盖率是由测试需求和测试用例的覆盖或已执行代码的覆盖结果表示。代码覆盖率一方面可以衡量测试工作本身的有效性提升测试效率,同时可以提升代码的质量减少缺陷,从而提升产品的可靠性和稳定性。
28.传统模式下的软件开发与部署一般将业务程序部署在相对固定的服务器中,这中场景下服务器的网络、存储配置信息变化较小或几乎不变。覆盖率采集与分析工具直接部署在业务程序部署的主机就能实现对业务代码的覆盖率进行采集,并将对应的覆盖率数据与源代码上送。但是上述简单且相对固定的配置采集方式不适用于现如今容器模式下的采集工作。镜像,是一种特殊的文件系统,提供了容器运行时需要的程序及依赖程序的库,其是一个只读文件系统,作为容器的模板。容器,是镜像运行的实体,镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,即镜像运行后成为容器。
29.其中,容器开发模式是如今常用的软件开发模式,其具有结合容器编排的快速部署以及动态扩展等优势,可极大提升软件的交付效率。微服务的低耦合、快速启动、可扩展性使得越来越多的软件开发使用此架构。对于java源代码而言,其在容器开发模式下运行后形成扩展名为.class的字节码文件,在软件测试过程中,则需获取字节码文件。
30.然而,如今容器模式下的软件开发带来效率提升的同时也使代码覆盖率采集不像传统那样简单化的配置就可以完成。主要面临的问题有:1、传统服务器下只需将覆盖率采集工具与输出数据配置到指定目录即可实现覆盖率的采集,而对于容器来说覆盖率采集的相关代码程序并不属于软件中的代码本身,若将其打包至镜像文件将导致镜像文件过大。2、传统服务器部署模式下采集的覆盖率数据和程序源代码都存储在所部署的服务器下,且存储路径基本固定,因此传统部署模式下覆盖率数据和程序字节码获取相对容易。而在容器部署模式下,软件中被测试的代码程序为非持久化内容,容器重启后在容器内的代码程序将被清理,因此,无法获取到容器中的程序字节码,从而无法使运维人员根据覆盖率数据对代码程序进行相应更改。因此,软件测试过程中,获取容器部署模式下容器中的程序字节码文件为当前亟需解决的问题。
31.有鉴于此,本技术提供了一种字节码获取方法,以解决上述无法获取容器开发模式下程序字节码文件的问题。
32.在一个实施例中,如图1所示,提供了一种字节码获取方法,本技术实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。该方法包括以下步骤:
33.步骤101,代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器。
34.其中,对于进行测试的软件程序而言,该镜像文件中包含该软件程序的源代码、依赖程序的库以及源代码的运行环境等信息。镜像文件为容器的模板,容器为镜像文件运行
后的实体。镜像文件被在代码抽取服务器中运行后生成对应的容器,因此可以从容器中获取源代码,其中,docker镜像为常用的镜像。代码抽取服务器用于运行镜像文件以生成容器。可选的,代码抽取服务器中可预置有容器程序抽取工具,该工具运行于代码抽取服务器中,以使代码抽取服务器实现获取并运行镜像文件而生成容器,以及后续获取源代码的功能。
35.步骤102,代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径。
36.其中,对于java源代码而言,其经过编译后生成字节码文件,因此,可获取字节码文件,实现对源代码的获取。同时,源代码的编写还依赖相关的库,因此,应获取源代码依赖的库以及源代码对应的字节码,实现对源代码的获取。
37.可选的,该代码抽取服务器中预置有镜像打包命令工具,代码抽取服务器可通过该镜像打包命令工具解析镜像文件,以获取镜像文件中库和字节码的存储路径,得到第一存储路径。
38.步骤103,代码抽取服务器对该容器的运行信息进行解析,得到该容器运行时对应的程序代码在该代码抽取服务器中的第二存储路径。
39.其中,代码抽取服务器会在一定的路径下运行该镜像文件,该路径即容器的运行信息。通过对该运行信息进行解析,得到容器运行时映射在代码服务器中的路径,即为该容器运行时的程序代码在抽取服务器中的第二存储路径。其中,该程序代码即包含库和字节码。
40.步骤104,代码抽取服务器根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件。
41.其中,镜像文件代码抽取服务器中的第二存储路径下运行生成容器,具体地,镜像文件中库和字节码存储于第一存储路径,因此,镜像文件被运行生成容器后,首先根据第一存储路径确定容器在代码服务器中运行的路径,进一步的,在该第一存储路径下,继续根据第二存储路径查找库和字节码,从而得到容器中库和字节码,根据该库和字节码生成程序字节码文件,即得到镜像文件对应的程序字节码文件,该程序字节码文件中包含有被测试软件的程序的字节码。在对被测软件的覆盖率进行分析时,可结合该程序字节码文件,进行具体的查看和分析。
42.上述字节码获取方法,通过代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器;为获取字节码文件,该代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径,进一步的,该代码抽取服务器对该容器的运行信息进行解析,得到该容器运行时对应的程序代码在该代码抽取服务器中的第二存储路径,从而该代码抽取服务器可根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件,实现在容器开发模式下,灵活获取所运行的镜像文件中对应的程序字节码文件,从而可以使测试人员在获取到代码覆盖率后,结合该程序字节码文件进行查看。同时,通过集中抽取程序字节码文件,大大提升了获取程序字节码文件的效率。
43.在一个实施例中,如图2所示,其示出了本技术实施例提供的一种获取第一存储路径的流程示意图。代码抽取服务器对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径,包括:
44.步骤201,代码抽取服务器对该镜像文件进行初解析,得到该镜像文件中的数据存储路径。
45.具体地,通常,镜像文件制作过程中,源代码相关的数据存储于copy或add相关的目录中,因此,可基于该存储规则,获取镜像文件中源代码相关数据的数据存储路径。该源代码相关的数据即包含库和源代码。
46.步骤202,代码抽取服务器在该数据存储路径中搜索得到该第一存储路径。
47.其中,在该数据存储路径下,存储有库和字节码,因此,需要进一步获取库和字节码的路径,以得到第一存储路径。通常,库的存储路径命名为lib_path,字节码的存储路径为classes_path,因此,代码抽取服务器在数据存储路径中搜索lib_path得到库的第一存储路径,在数据存储路径中搜索classes_path得到字节码的第一存储路径。可选的,可将得到库和字节码的第一存储路径保存于info文件下,其中,info文件指普通文本文件。在基于第二存储路径搜索第一存储路径获取库和字节码的过程中,可直接从该info文件中获取第一存储路径。
48.本技术实施例中,通过获取镜像文件中的数据存储路径,并基于该数据存储路径搜索得到库和字节码的第一存储路径,准确得到第一存储路径,提升获取第一存储路径的效率以及精准度,有效减小服务器运行时间。
49.在一个实施例中,该代码抽取服务器获取并运行镜像文件,以在该代码抽取服务器中生成容器之前,该方法还包括:该代码抽取服务器从制品仓库中拉取目标制品,该目标制品包含该镜像文件。
50.其中,制品存储于制品仓库中,制品中包含镜像文件,一个制品与一个软件程序对应。对于被测试的软件程序来说,其对应的源代码可以根据实际情况打包生成多个镜像文件,相应的,该程序代码对应的制品中则包含多个镜像文件、各镜像文件运行时的运行顺序、各镜像文件的名称以及版本号等信息。代码抽取服务器可从制品仓库中获取被测试软件对应的目标制品,从而根据该制品中各镜像文件的运行顺序运行各镜像文件以生成容器,并进一步获取容器中的字节码。
51.制品中的镜像文件通过打包源代码得到,因此,下文为获取被测试软件程序的源代码过程。
52.请参考图3,其示出了本技术实施例提供的一种获取程序源代码的流程示意图,代码打包服务器获取与该程序字节码对应的程序源代码,包括:
53.步骤301,代码打包服务器获取代码指示信息。
54.其中,代码打包服务器用于根据代码指示信息对目标源代码进行打包以生成镜像文件。其中,代码指示信息用于指示代码打包服务器对哪些源代码进行打包生成镜像文件,并进一步得到目标制品。可选的,可将ci/cd平台集成于该代码打包服务器中,以实现获取代码指示信息以及打包源代码等工作。其中,ci/cd平台为持续集成和持续交付平台,其可以提供软件程序的源代码打包与部署交付等功能。测试人员可在该ci/cd平台中建立流水线任务,该流水线任务中即包含代码指示信息,用于ci/cd平台根据代码指示信息获取相应的目标源代码并对其进行打包。通常,一个流水线任务对应一个软件程序,例如,对于目标软件程序,测试人员建立该目标软件程序对应的流水线任务,该流水线任务表名对该目标软件程序相关的源代码进行测试,以及获取测试过程中的覆盖率和源代码对应的字节码。
55.步骤302,代码打包服务器根据该代码指示信息从代码仓库中获取该程序源代码。
56.其中,代码仓库为软件程序开发过程中源代码存储和管理的服务器,其存储有多个软件程序的源代码。因此,代码打包服务器可根据该代码指示信息从代码仓库中获取被测试软件程序的程序源代码,用于生成镜像文件,并进一步得到对应的目标制品。
57.请参考图4,其示出了本技术实施例提供的一种制作目标制品的流程示意图。制品仓库用于存储制品,包括:
58.步骤401,代码打包服务器获取与该程序字节码对应的程序源代码。
59.其中,代码打包服务器根据代码指示信息从代码仓库中可获取程序源代码,其中,该程序源代码为java源代码,被运行后为程序字节码,因此获取到与程序字节码对应的程序源代码,并进一步根据代码指示信息生成镜像文件。
60.步骤402,代码打包服务器将该程序源代码打包,形成该镜像文件。
61.其中,代码打包服务器将该程序源代码打包后形成镜像文件,可选的,若代码指示信息指示将获取待的程序源代码打包成多个镜像文件,则代码打包服务器根据代码指示信息将程序源代码打包形成多个镜像文件以及同步生成各镜像文件的名称和版本号等信息,并进一步得到目标制品。
62.步骤403,代码打包服务器根据该镜像文件,制作该目标制品,并将该目标制品推送至该制品仓库存储。
63.其中,代码打包服务器根据形成的镜像文件,制作目标制品,并同步生成该目标制品的版本号。在形成多个镜像文件的情况下,该目标制品中包含多个镜像文件、各镜像文件的运行顺序以及各镜像文件的名称和版本号。生成的目标制品与被测试软件对应。并且,代码打包服务器将目标制品以及目标制品的版本号推送至制品仓库存储,该制品仓库可将目标制品与版本号对应存储。其中,制品仓库为各软件程序对应的制品存储和管理的服务器。
64.相应的,ci/cd平台可集成于该代码打包服务器上,因此,可通过ci/cd平台实现上述获取与该程序字节码对应的程序源代码,将该程序源代码打包,形成该镜像文件,并根据该镜像文件,制作目标制品,并将该目标制品推送至该制品仓库存储的步骤。
65.在一个实施例中,该方法还包括:代码打包服务器向该容器编排服务器发送部署请求,该部署请求用于指示该容器编排平台从该制品仓库中拉取该目标制品。
66.其中,容器编排服务器中可预置有容器编排工具,该容器编排工具是一种提供自动化容器部署、管理以及扩展的工具,常见的容器编排工具有kubernetes。生成目标制品后,需要运行目标制品中的镜像文件以生成容器,并对源代码进行测试。具体的,可该在容器编排服务器中实现容器的运行。因此,代码打包服务器在生成目标制品后,向容器编排服务器发送部署请求,以指示容器编排平台从制品仓库中拉取目标制品并运行。其中,该部署请求中即包含目标制品的版本号,以使容器编排服务器可从制品仓库中根据版本号拉取到对应的目标制品。
67.软件程序测试过程中,在容器编排服务器运行容器的过程中,即可获取源代码测试过程中的覆盖率数据,以使测试人员明确源代码的质量。下文即为源代码测试过程中获取覆盖率数据的过程。
68.在一个实施例中,该方法还包括:容器编排服务器从制品仓库中拉取目标制品,并运行该目标制品中包含的该镜像文件,以生成该容器;容器中的程序读取预先设置于该容
器编排服务器中的配置信息,并根据该配置信息获取覆盖率采集工具,并将该覆盖率采集工具部署至该容器中运行;其中,该覆盖率采集工具,用于对该容器中的程序进行覆盖率采集。
69.该配置信息包括下载地址,该根据该配置信息获取覆盖率采集工具,包括:根据该下载地址,下载该覆盖率采集工具。
70.其中,容器编排服务器根据部署请求拉取目标制品并运行其中的镜像文件生成容器。在容器运行过程中,即可获取源代码的覆盖率。因此,容器编排服务器中预设有配置信息,以使容器中的程序根据配置信息拉取覆盖率采集工具,并将其部署于容器中运行,从而通过该覆盖率采集工具获取源代码的覆盖率数据。具体地,该配置信息中包含有覆盖率采集工具的下载地址,容器中的程序根据该下载地址下载覆盖率采集工具并部署于容器中。可选的,该下载地址可为文件路径,通过该路径可获取覆盖率采集工具。
71.可选的,该覆盖率采集工具可以为jacoco。jacoco为一种代码覆盖率检测工具,可以对源代码插入探针,并检测探针是否被执行,从而得到源代码的覆盖率数据,常用于源代码测试结果的分析。
72.本技术实施例中,通过拆分的模块化涉及,将覆盖率工具和制品部署独立运行,减少了覆盖率采集工具对容器本身的影响,也提升了覆盖率数据采集的效率。具体的,覆盖率采集工具的部署由变量控制,实现容器按需下载并部署覆盖率采集工具,灵活控制覆盖率采集工具的采集开关,且镜像文件中不包含覆盖率采集工具,不会出现镜像文件过大的问题。覆盖率采集工具与容器的分离部署,使得覆盖率采集工作对容器本身的影响降到最低,既不抢占容器资源,也降低了采集数据的耦合度。
73.根据代码抽取服务器查找到的程序字节码文件以及上述覆盖率采集工具采集到的覆盖率数据,可形成针对被测试软件的分析报告。
74.请参考图5,其示出了本技术实施例提供的一种生成分析报告的流程示意图。该字节码获取方法还包括:
75.步骤501,覆盖率分析服务器获取该覆盖率采集工具采集到的该容器中的程序对应的覆盖率数据。
76.步骤502,覆盖率分析服务器获取该程序字节码文件。
77.其中,覆盖率分析服务器主要用于获取覆盖率采集工具采集到的覆盖率数据以及获取代码抽取服务器获取到的程序字节码文件。可选的,覆盖率采集工具可与覆盖率分析服务器建立socket(套接字)连接,从而将采集到的容器中程序对应的覆盖率数据发送至覆盖率分析服务器。代码抽取服务器也可在查找到程序字节码文件后,将其发送至覆盖率分析服务器。
78.步骤503,覆盖率分析服务器根据该覆盖率数据以及该程序字节码文件生成分析报告。
79.其中,覆盖率分析服务器根据获取到的覆盖率数据以及程序字节码文件生成分析报告。可选的,可将覆盖率分析平台集成于该覆盖率分析服务器上,该覆盖率分析平台可提供覆盖率数据的聚合、分析、展示以及查询等多种功能。在生成分析报告后,通过覆盖率分析平台将该分析报告展示,以供测试人员查看,对比覆盖率数据,对程序字节码文件的改进。
80.本技术实施例中,通过生成分析报告,使得测试人员对覆盖率数据中涉及的代码缺陷有据可查,及时对源代码进行修改。
81.在一个实施例中,提供了一种程序字节码抽取系统,该程序字节码抽取系统包括ci/cd平台、容器编排平台、覆盖率分析平台、代码仓库、制品仓库以及容器程序字节码抽取工具。其中,ci/cd平台、容器编排平台以及覆盖率分析平台可通过单个服务器或者多个服务器组成的服务器集群来实现,容器程序字节码抽取工具可运行于其中任何一台服务器中;代码仓库和制品仓库也可通过单个服务器或者多个服务器组成的服务器集群来实现。
82.请参考图6,其示出了本技术实施例提供的一种容器中覆盖率数据采集和字节码抽取的流程示意图。
83.代码开发阶段,开发人员开发出代码程序后将其在代码仓库中存储,代码仓库中存储有多个软件分别对应的代码程序。
84.容器部署阶段,测试人员配置流水线任务至ci/cd平台,ci/cd平台根据流水线任务中包含的目标软件的信息,从代码仓库中获取与目标软件对应的代码程序,并根据流水线任务中配置的编译策略执行编译,以将代码程序打包为jar格式的压缩包或者war格式的压缩包,编译完成后根据代码仓库提供的配置文件构建多个docker镜像,并根据多个镜像得到目标制品,同时还生成目标制品对应的版本号。目标制品中包含多个镜像文件、各镜像的名称和版本号以及各镜像文件的运行顺序。
85.ci/cd平台将构建的目标制品推送至制品仓库中存储。制品仓库为提供软件开发过程中制品的存储和管理。而后,ci/cd平台发送部署请求至容器编排平台,该部署请求用于指示容器编排平台从制品仓库拉取目标制品并部署。
86.容器编排平台根据部署请求中包含的版本号,从制品仓库中拉取目标制品到本地,并将其在指定服务器中运行,目标制品中的镜像文件在运行后生成容器。容器启动过程中,容器中的程序会读取容器编排平台中预先配置的覆盖率采集工具的下载地址,并根据该下载地址,下载覆盖率采集工具jacoco,将覆盖率采集工具部署于容器中同步运行。容器内的程序在启动过程中也会同步启动覆盖率采集工具,从而使用覆盖率采集工具采集容器中代码的覆盖率数据。其中,覆盖率采集工具与覆盖率分析平台建立socket连接,从而将采集到的覆盖率数据发送至覆盖率分析平台。
87.覆盖率分析阶段,覆盖率分析平台向容器程序字节码抽取工具发送字节码抽取请求,该字节码抽取请求中包含有目标制品的版本号。因此,容器字节码抽取工具根据字节码抽取请求中的版本号,从制品仓库中拉取目标制品至本地,并运行该目标制品中的镜像文件并生成容器。
88.容器字节码抽取工具还利用镜像打包命令工具解析目标制品中的镜像文件,根据镜像文件制作过程中copy或者add相关的目录,获取需要抽取的代码程序的初路径。然后,在初路径下,搜索lib_path路径,得到代码程序依赖的库的根路径,在初路径下,搜索classes_path路径,得到代码程序对应的字节码的根路径,并将各根路径存储于info文件下。
89.容器字节码抽取工具还根据容器运行信息解析容器运行时映射到服务器中的数据路径,在该数据路径下,结合根路径,得到代码程序对应的库和字节码,并根据得到的库和字节码生成程序字节码文件,并将该程序字节码文件发送至覆盖率分析平台。
90.覆盖率分析人员可在该覆盖率分析平台查看与测试人员配置的流水线任务对应的覆盖率数据以及程序字节码文件。
91.本技术实施例提供的程序字节码抽取系统,解决了传统覆盖率采集方式在容器模式下不可用的问题。通过拆分的模块化设计将采集、分析工作独立部署运行,即减少了覆盖率采集对容器的影响,也提升了覆盖率采集分析的效率。
92.其中,覆盖率采集工具部署由变量控制,实现容器启动按需下载部署覆盖率采集工具,灵活控制覆盖率的采集开关,且镜像不包含覆盖率采集工具程序,因此不影响镜像大小。覆盖率采集与分析工具分离部署设计,使得覆盖率采集工作对业务容器的影响降到最低,既不会抢占业务容器资源也降低了采集分析的耦合度。容器字节码抽取工具单独部署运行,而非直接在业务容器内运行,即减少了对业务容器的侵入,也实现了集中抽取程序字节码,大大提升了抽取效率。
93.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
94.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储字节码获取数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种字节码获取方法。
95.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
96.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
97.获取并运行镜像文件,以生成容器;对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径;对该容器的运行信息进行解析,得到该容器运行时对应的程序代码的第二存储路径;根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件。
98.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
99.对该镜像文件进行初解析,得到该镜像文件中的数据存储路径;在该数据存储路径中搜索得到该第一存储路径。
100.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
101.从制品仓库中拉取目标制品,该目标制品包含该镜像文件。
102.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
103.获取代码指示信息;根据该代码指示信息从代码仓库中获取该程序源代码。
104.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
105.获取与该程序字节码对应的程序源代码;将该程序源代码打包,形成该镜像文件;根据该镜像文件,制作该目标制品,并将该目标制品推送至该制品仓库存储。
106.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
107.发送部署请求,该部署请求用于指示从制品仓库中拉取目标制品。
108.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
109.从制品仓库中拉取目标制品,并运行该目标制品中包含的该镜像文件,以生成该容器;容器中的程序读取配置信息,并根据该配置信息获取覆盖率采集工具,并将该覆盖率采集工具部署至该容器中运行;其中,该覆盖率采集工具,用于对该容器中的程序进行覆盖率采集。该配置信息包括下载地址,该根据该配置信息获取覆盖率采集工具,包括:根据该下载地址,下载该覆盖率采集工具。
110.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
111.获取该覆盖率采集工具采集到的该容器中的程序对应的覆盖率数据;获取该程序字节码文件;根据该覆盖率数据以及该程序字节码文件生成分析报告。
112.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
113.获取并运行镜像文件,以生成容器;对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径;对该容器的运行信息进行解析,得到该容器运行时对应的程序代码的第二存储路径;根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件。
114.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
115.对该镜像文件进行初解析,得到该镜像文件中的数据存储路径;在该数据存储路径中搜索得到该第一存储路径。
116.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
117.从制品仓库中拉取目标制品,该目标制品包含该镜像文件。
118.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
119.获取代码指示信息;根据该代码指示信息从代码仓库中获取该程序源代码。
120.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
121.获取与该程序字节码对应的程序源代码;将该程序源代码打包,形成该镜像文件;根据该镜像文件,制作该目标制品,并将该目标制品推送至该制品仓库存储。
122.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
123.发送部署请求,该部署请求用于指示从制品仓库中拉取目标制品。
124.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
125.从制品仓库中拉取目标制品,并运行该目标制品中包含的该镜像文件,以生成该容器;容器中的程序读取配置信息,并根据该配置信息获取覆盖率采集工具,并将该覆盖率采集工具部署至该容器中运行;其中,该覆盖率采集工具,用于对该容器中的程序进行覆盖率采集。该配置信息包括下载地址,该根据该配置信息获取覆盖率采集工具,包括:根据该
下载地址,下载该覆盖率采集工具。
126.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
127.获取该覆盖率采集工具采集到的该容器中的程序对应的覆盖率数据;获取该程序字节码文件;根据该覆盖率数据以及该程序字节码文件生成分析报告。
128.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
129.获取并运行镜像文件,以生成容器;对该镜像文件进行解析,得到该镜像文件中库和字节码的第一存储路径;对该容器的运行信息进行解析,得到该容器运行时对应的程序代码的第二存储路径;根据该第一存储路径在该第二存储路径中查找该镜像文件对应的程序字节码文件。
130.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
131.对该镜像文件进行初解析,得到该镜像文件中的数据存储路径;在该数据存储路径中搜索得到该第一存储路径。
132.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
133.从制品仓库中拉取目标制品,该目标制品包含该镜像文件。
134.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
135.获取代码指示信息;根据该代码指示信息从代码仓库中获取该程序源代码。
136.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
137.获取与该程序字节码对应的程序源代码;将该程序源代码打包,形成该镜像文件;根据该镜像文件,制作该目标制品,并将该目标制品推送至该制品仓库存储。
138.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
139.发送部署请求,该部署请求用于指示从制品仓库中拉取目标制品。
140.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
141.从制品仓库中拉取目标制品,并运行该目标制品中包含的该镜像文件,以生成该容器;容器中的程序读取配置信息,并根据该配置信息获取覆盖率采集工具,并将该覆盖率采集工具部署至该容器中运行;其中,该覆盖率采集工具,用于对该容器中的程序进行覆盖率采集。该配置信息包括下载地址,该根据该配置信息获取覆盖率采集工具,包括:根据该下载地址,下载该覆盖率采集工具。
142.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
143.获取该覆盖率采集工具采集到的该容器中的程序对应的覆盖率数据;获取该程序字节码文件;根据该覆盖率数据以及该程序字节码文件生成分析报告。
144.需要说明的是,本技术提供的字节码获取方法、计算机设备、存储介质和程序产品可用于金融领域的软件测试开发过程中,也可用于除金融领域之外的任意领域的软件测试开发过程中,本技术提供的字节码获取方法、计算机设备、存储介质和程序产品的应用领域不做限定。
145.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括
非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
146.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
147.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献