CN113485908A - 一种覆盖率的获取方法、装置及电子设备 - Google Patents

一种覆盖率的获取方法、装置及电子设备 Download PDF

Info

Publication number
CN113485908A
CN113485908A CN202110570074.9A CN202110570074A CN113485908A CN 113485908 A CN113485908 A CN 113485908A CN 202110570074 A CN202110570074 A CN 202110570074A CN 113485908 A CN113485908 A CN 113485908A
Authority
CN
China
Prior art keywords
file
coverage rate
coverage
target service
node
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.)
Granted
Application number
CN202110570074.9A
Other languages
English (en)
Other versions
CN113485908B (zh
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.)
Peoples Insurance Company of China
Original Assignee
Peoples Insurance Company of China
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 Peoples Insurance Company of China filed Critical Peoples Insurance Company of China
Priority to CN202110570074.9A priority Critical patent/CN113485908B/zh
Publication of CN113485908A publication Critical patent/CN113485908A/zh
Application granted granted Critical
Publication of CN113485908B publication Critical patent/CN113485908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了一种覆盖率的获取方法、装置及电子设备。所述方法应用于分布式服务的部署节点,所述方法包括:从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件;将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。

Description

一种覆盖率的获取方法、装置及电子设备
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种覆盖率的获取方法、装置及电子设备。
背景技术
覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。目前,覆盖率的获取方案往往是基于开源的覆盖率工具Jacoco。该方案在默认情况下仅支持一种类型覆盖率的输出和多种类型覆盖率的累加,但是当服务重启或者发版后本地覆盖率的输出文件就会被删除。
因此,如何实现覆盖率的一种和多种的合并输出,避免覆盖率的输出文件在服务重启或发版时被删除,仍然需要提供进一步的解决方案。
发明内容
本发明实施例提供一种覆盖率的获取方法、装置及电子设备,用于实现覆盖率的一种和多种的合并输出,避免覆盖率的输出文件在服务重启或发版时被删除的问题。
本发明实施例采用下述技术方案:
第一方面,提供了一种覆盖率的获取方法,所述方法应用于分布式服务的部署节点,所述方法包括:
从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
第二方面,提供了一种分布式服务的部署节点,包括:
覆盖率同步单元,用于从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
覆盖率合并单元,用于将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
覆盖率转换单元,用于将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
覆盖率获取单元,用于基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
第三方面,提供了一种电子设备,包括:
存储器,存储有计算机程序指令;
处理器,当所述计算机程序指令被所述处理器执行时实现如第一方面所述的覆盖率的获取方法。
第四方面,提供了一种计算机可读存储介质,
所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如第一方面所述的覆盖率的获取方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本说明书实施例在获取目标服务的覆盖率时,能够通过各分布式服务的部署节点从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,该第一覆盖率文件由分布式服务的部署节点每隔预设时间段上传至分布式对象存储服务器;再将第一覆盖率文件与节点本地存储的目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,第二覆盖率文件与第一覆盖率文件中的覆盖率的类型一致;然后将节点内存中与第一覆盖率文件中的覆盖率类型一致的目标服务的覆盖率数据转换为第四覆盖率文件,存储到节点本地;最后基于第三覆盖率文件和第四覆盖率文件,获取目标服务的覆盖率。由于目标服务的覆盖率文件每隔预设时间段都会被同步至分布式对象存储服务器中,同时开放本地存储的覆盖率文件和分布式对象存储服务器中的覆盖率文件的获取接口,可实现目标服务的多种类型的覆盖率文件中的一种或多种合并输出,有效避免了覆盖率的输出文件在服务重启或发版时被删除。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书的一个实施例提供的一种覆盖率的获取方法的实现流程示意图;
图2为本说明书的一个实施例提供的覆盖率的获取方法应用在实际场景中的示意图;
图3为本说明书的一个实施例提供的一种分布式服务的部署节点的结构示意图;
图4为本说明书的另一个实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为实现覆盖率的一种和多种的合并输出,避免覆盖率的输出文件在服务重启或发版时被删除的问题,本说明书实施例提供一种覆盖率的获取方法。本说明书实施例提供的方法的执行主体可以是分布式服务中的各部署节点。
具体地,本说明书一个或多个实施例提供的一种覆盖率的获取方法的实现流程示意图如图1所示,包括:
步骤110,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,该第一覆盖率文件由分布式服务的部署节点每隔预设时间段上传至分布式对象存储服务器。
其中,分布式对象存储服务器用于对目标服务的第一覆盖率文件进行备份存储,避免分布式服务中的各部署节点在重启时丢失内存中目标服务的覆盖率数据,从而影响目标服务的覆盖率的输出。
可选地,目标服务的第一覆盖率文件包括下述至少一种:
目标服务的单元测试的覆盖率文件;
目标服务的功能测试的覆盖率文件;
目标服务的接口和用例测试的覆盖率文件;
目标服务的全量测试的覆盖率文件,其中,目标服务的全量测试的覆盖率文件为基于目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件和接口和用例测试的覆盖率文件合并得到的。
可选地,目标服务的单元测试的覆盖率文件可在分布式服务中的部署节点被部署时获取,并存储到节点本地,同时同步到分布式对象存储服务器中对应的存储空间中。具体地,当目标服务的第一覆盖率文件包括目标服务的单元测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在部署节点被部署时,获取部署节点中所述目标服务的单元测试覆盖率的文件;
将目标服务的单元测试的覆盖率文件分别存储到节点本地和分布式对象存储服务器中。
可选地,目标服务的功能测试的覆盖率文件可在目标服务进行功能测试时触发产生对应的覆盖率数据,该覆盖率数据可每隔第一预设时间段从部署节点的内存中获取,再将获取的目标服务的功能测试的覆盖率文件同时存储到节点本地和分布式对象存储服务器中对应的存储空间中。具体地,当目标服务的第一覆盖率文件包括目标服务的功能测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在部署节点上进行目标服务的功能测试时,每隔第一预设时间段从部署节点的内存中获取目标服务的功能测试的覆盖率文件;
将目标服务的功能测试的覆盖率文件分别存储到节点本地和分布式对象存储服务器中。
其中,由于部署节点的内存中目标服务的功能测试的覆盖率数据为动态的数据,要将部署节点的内存中动态的数据转换为静态的覆盖率文件,可使用dump命令从部署节点的内存中获取目标服务的功能测试的覆盖率文件。
可选地,目标服务的接口和用例测试的覆盖率文件可在目标服务进行接口或用例测试时触发产生对应的覆盖率数据,该覆盖率数据可每隔第二预设时间段从部署节点的内存中获取,再将获取的目标服务的接口和用例测试的覆盖率文件同时存储到节点本地和分布式对象存储服务器中对应的存储空间中。具体地,当目标服务的第一覆盖率文件包括目标服务的接口和用例测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在部署节点上进行目标服务的接口和用例测试时,每隔第二预设时间段从部署节点的内存中获取目标服务的接口和用例测试的覆盖率文件;
将目标服务的接口和用例测试的覆盖率文件分别存储到节点本地和分布式对象存储服务器中。
其中,由于部署节点的内存中目标服务的接口和用例测试的覆盖率数据为动态的数据,要将部署节点的内存中动态的数据转换为静态的覆盖率文件,可使用dump命令从部署节点的内存中获取目标服务的功能测试的覆盖率文件。
应理解,为避免分布式服务中的同一部署节点在一个时间段执行两种任务,上述第一时间段和第二时间段的时长可以是不同的。该第一时间段和第二时间段在实际应用中可采用固定时间段+随机时间段的规则来确定,其中固定时间段原则上是固定的,比如固定时间段可以是5s,随机时间段可取(0,1]秒范围内的任意数值,比如第一时间段可以是5s+0.2s,第二时间段可以是5s+0.3s,这样使得从部署节点的内存中获取目标服务的功能测试的覆盖率文件、与从部署节点的内存中获取目标服务的接口和用例测试的覆盖率文件这两个任务之间在时间上是错开的,避免任务执行上出现冲突。
可选地,当目标服务的第一覆盖率文件包括目标服务的全量测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
基于目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件,获取目标服务的全量测试的覆盖率文件。
其中,基于目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件,获取目标服务的全量测试的覆盖率文件,具体可每隔设定的时间段来对目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件进行合并,以获取目标服务的全量测试的覆盖率文件。其中,将目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件进行合并的方式,可以将目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件这三个文件合并为一个覆盖率文件,即全量测试的覆盖率文件。
可选地,由于分布式服务的部署节点有多个,为避免同一时间段仅有一个部署节点执行获取目标服务的覆盖率的步骤,可采用Redis分布式锁,对正在执行获取目标服务的覆盖率的步骤的部署节点进行加锁处理。具体地,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
分布式服务的部署节点与分布式服务的其它部署节点竞争Redis分布式锁;
如果分布式服务的部署节点竞争得到Redis分布式锁,则进行加锁处理,以使得分布式服务的部署节点在执行获取目标服务的覆盖率的步骤时,分布式服务的其它部署节点处于等待执行的状态。
当分布式服务的部署节点竞争得到Redis分布式锁之后,便进行加锁处理,此时分布式服务中只有该部署节点在执行获取目标服务的覆盖率的步骤,分布式服务的其它部署节点处于等待执行的状态。在对该部署节点进行加锁处理之后的预设时间段之后,如果该部署节点仍然持有Redis分布式锁,则延长该部署节点的加锁时长,而如果该部署节点已执行完获取目标服务的覆盖率的步骤或者其它异常情况释放Redis分布式锁时,分布式服务中的其它部署节点便可以重新竞争Redis分布式锁,竞争得到Redis分布式锁的部署节点便可以执行获取目标服务的覆盖率的步骤。
图2为本说明书的一个实施例提供的覆盖率的获取方法应用在实际场景中的示意图。在图2中,可在基于Java开发语言的微服务框架SpringBoot中集成开源的覆盖率工具Jacoco来实现分布式服务中部署节点的实时覆盖率的获取。首先,在SpringBoot微服务工程中配置插件Jacoco-Maven-Plugin,并引入Jar包:org.jacoco.core、org.jacoco.report、redisson、cos_api等,以及在工程resources/lib下添加jacocoagent.jar.jacocoant.jar、jacococli.jar包。然后,编译打包和流水线产出,以及将产出物推送到各个Docker容器中部署各个部署节点,最后进行容器启动。
其中,容器启动后分布式服务的各部署节点获取实时覆盖率的过程包括:1、加载jacocoagent,该jacocoagent用于提供获取分布式服务的各部署节点中的覆盖率文件的访问接口;2、初始化jacoco参数和目录;3、对classes分类及进行exclude排除动作,即对目标服务中一些与业务无关的且会产生覆盖率的程序进行排除处理;4、copy单元测试覆盖率文件;5、启动时同步远端COS中最新的覆盖率文件到本地,其中,远端COS即为分布式对象存储服务器。
由于覆盖率数据可包括单元测试的覆盖率、功能测试的覆盖率、接口和用例测试的覆盖率和全量测试的覆盖率,上述分布式服务的各部署节点获取实时覆盖率的更具体的过程可包括:
对于单元测试的覆盖率,可在部署节点被部署时获取得到对应的单元测试覆盖率文件即Jacoco_junit_微服务名.exec,再将获取的单元测试覆盖率文件即Jacoco_junit_微服务名.exec同时保存在节点本地和远端COS。
对于功能测试的覆盖率,可在目标服务进行功能测试时触发实时的覆盖率数据,该实时触发的覆盖率数据在节点内存中,可通过dump命令转换为静态的功能测试的覆盖率文件即Jacoco_gn_微服务名.yyyyMMdd.exec,再将获取的功能测试的覆盖率文件即Jacoco_gn_微服务名.yyyyMMdd.exec同时保存在节点本地和远端COS。其中,yyyyMMdd为覆盖率数据的获取日期。
对于接口和用例测试的覆盖率,可在目标服务进行功能测试时触发实时的覆盖率数据,该实时触发的覆盖率数据在节点内存中,可通过dump命令转换为静态的接口和用例测试的覆盖率文件即Jacoco_yapi_微服务名.yyyyMMdd.exec,再将获取的接口和用例测试的覆盖率文件即Jacoco_yapi_微服务名.yyyyMMdd.exec同时保存在节点本地和远端COS。其中,yyyyMMdd为覆盖率数据的获取日期。
对于全量测试的覆盖率,可将目标服务的单元测试的覆盖率、功能测试的覆盖率以及接口和用例测试的覆盖率进行合并得到全量测试的覆盖率文件,即Jacoco_all_微服务名.yyyyMMdd.exec。其中,yyyyMMdd为覆盖率数据的获取日期。
步骤120,将第一覆盖率文件与节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,该第二覆盖率文件与第一覆盖率文件中的覆盖率的类型一致。
其中,将第一覆盖率文件与节点本地存储的所述目标服务的第二覆盖率文件进行合并,具体是将第一覆盖率文件与节点本地存储的目标服务的第二覆盖率文件进行拼接,得到第三覆盖率文件。当第一覆盖率文件为目标服务的单元测试的覆盖率文件时,第二覆盖率文件也为目标服务的单元测试的覆盖率文件;当第一覆盖率文件为目标服务的功能测试的覆盖率文件时,第二覆盖率文件也为目标服务的功能测试的覆盖率文件;当第一覆盖率文件为目标服务的接口和用例测试的覆盖率文件时,第二覆盖率文件也为目标服务的接口和用例测试的覆盖率文件;当第一覆盖率文件为目标服务的全量测试的覆盖率文件时,第二覆盖率文件也为目标服务的全量测试的覆盖率文件。
步骤130,将节点内存中与第一覆盖率文件中的覆盖率类型一致的目标服务的覆盖率数据转换为第四覆盖率文件,存储到节点本地。
可选地,将节点内存中与第一覆盖率文件中的覆盖率类型一致的目标服务的覆盖率数据转换为第四覆盖率文件具体可通过dump命令将内存中动态的覆盖率数据转换为静态的第四覆盖率文件。
步骤140,基于第三覆盖率文件和第四覆盖率文件,获取目标服务的覆盖率。
可选地,基于第三覆盖率文件和第四覆盖率文件,获取目标服务的覆盖率,具体可将第三覆盖率文件和第四覆盖率文件进行拼接得到一个覆盖率文件,即目标服务的覆盖率。
本说明书实施例在获取目标服务的覆盖率时,能够通过各分布式服务的部署节点从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,该第一覆盖率文件由分布式服务的部署节点每隔预设时间段上传至分布式对象存储服务器;再将第一覆盖率文件与节点本地存储的目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,第二覆盖率文件与第一覆盖率文件中的覆盖率的类型一致;然后将节点内存中与第一覆盖率文件中的覆盖率类型一致的目标服务的覆盖率数据转换为第四覆盖率文件,存储到节点本地;最后基于第三覆盖率文件和第四覆盖率文件,获取目标服务的覆盖率。由于目标服务的覆盖率文件每隔预设时间段都会被同步至分布式对象存储服务器中,同时开放本地存储的覆盖率文件和分布式对象存储服务器中的覆盖率文件的获取接口,可实现目标服务的多种类型的覆盖率文件中的一种或多种合并输出,有效避免了覆盖率的输出文件在服务重启或发版时被删除。
图3是本说明书的一个实施例提供的一种分布式服务的部署节点300的结构示意图。在一种软件实施方式中,该分布式服务的部署节点300可包括覆盖率同步单元301、覆盖率合并单元302、覆盖率转换单元303和覆盖率获取单元304,其中:
覆盖率同步单元301,用于从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
覆盖率合并单元302,用于将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
覆盖率转换单元303,用于将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
覆盖率获取单元304,用于基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
可选地,在一种实施方式中,所述目标服务的第一覆盖率文件包括下述至少一种:
所述目标服务的单元测试的覆盖率文件;
所述目标服务的功能测试的覆盖率文件;
所述目标服务的接口和用例测试的覆盖率文件;
所述目标服务的全量测试的覆盖率文件,其中,所述目标服务的全量测试的覆盖率文件为基于所述目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件和接口和用例测试的覆盖率文件合并得到的。
可选地,在一种实施方式中,当所述目标服务的第一覆盖率文件包括所述目标服务的单元测试的覆盖率文件时,覆盖率同步单元301从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述节点还包括:
第一获取单元,用于在所述部署节点被部署时,获取所述部署节点中所述目标服务的单元测试覆盖率的文件;
第一存储单元,用于将所述目标服务的单元测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
可选地,在一种实施方式中,当所述目标服务的第一覆盖率文件包括所述目标服务的功能测试的覆盖率文件时,覆盖率同步单元301从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述节点还包括:
第二获取单元,用于在所述部署节点上进行所述目标服务的功能测试时,每隔第一预设时间段从所述部署节点的内存中获取所述目标服务的功能测试的覆盖率文件;
第二存储单元,用于将所述目标服务的功能测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
可选地,在一种实施方式中,当所述目标服务的第一覆盖率文件包括所述目标服务的接口和用例测试的覆盖率文件时,覆盖率同步单元301从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述节点还包括:
第三获取单元,用于在所述部署节点上进行所述目标服务的接口和用例测试时,每隔第二预设时间段从所述部署节点的内存中获取所述目标服务的接口和用例测试的覆盖率文件;
第三存储单元,用于将所述目标服务的接口和用例测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
可选地,在一种实施方式中,当所述目标服务的第一覆盖率文件包括所述目标服务的全量测试的覆盖率文件时,覆盖率同步单元301从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述节点还包括:
第四获取单元,用于基于所述目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件,获取所述目标服务的全量测试的覆盖率文件。
可选地,在一种实施方式中,覆盖率同步单元301从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述节点还包括:
分布式锁竞争单元,用于所述分布式服务的部署节点与所述分布式服务的其它部署节点竞争Redis分布式锁;
加锁单元,用于如果所述分布式服务的部署节点竞争得到所述Redis分布式锁,则进行加锁处理,以使得所述分布式服务的部署节点在执行获取所述目标服务的覆盖率的步骤时,所述分布式服务的其它部署节点处于等待执行的状态。
分布式服务的部署节点300能够实现图1~图2的方法实施例的方法,具体可参考图1~图2所示实施例的覆盖率的获取方法,不再赘述。
图4是本说明书的一个实施例提供的电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成分布式服务的部署节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
本说明书实施例在获取目标服务的覆盖率时,能够通过各分布式服务的部署节点从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,该第一覆盖率文件由分布式服务的部署节点每隔预设时间段上传至分布式对象存储服务器;再将第一覆盖率文件与节点本地存储的目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,第二覆盖率文件与第一覆盖率文件中的覆盖率的类型一致;然后将节点内存中与第一覆盖率文件中的覆盖率类型一致的目标服务的覆盖率数据转换为第四覆盖率文件,存储到节点本地;最后基于第三覆盖率文件和第四覆盖率文件,获取目标服务的覆盖率。由于目标服务的覆盖率文件每隔预设时间段都会被同步至分布式对象存储服务器中,同时开放本地存储的覆盖率文件和分布式对象存储服务器中的覆盖率文件的获取接口,可实现目标服务的多种类型的覆盖率文件中的一种或多种合并输出,有效避免了覆盖率的输出文件在服务重启或发版时被删除。
上述如本说明书图1~图2所示实施例揭示的覆盖率的获取方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1~图2的覆盖率的获取方法,本说明书在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1~图2所示实施例的方法,并具体用于执行以下操作:
从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

Claims (10)

1.一种覆盖率的获取方法,其特征在于,所述方法应用于分布式服务的部署节点,所述方法包括:
从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
2.如权利要求1所述的方法,其特征在于,所述目标服务的第一覆盖率文件包括下述至少一种:
所述目标服务的单元测试的覆盖率文件;
所述目标服务的功能测试的覆盖率文件;
所述目标服务的接口和用例测试的覆盖率文件;
所述目标服务的全量测试的覆盖率文件,其中,所述目标服务的全量测试的覆盖率文件为基于所述目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件和接口和用例测试的覆盖率文件合并得到的。
3.如权利要求2所述的方法,其特征在于,当所述目标服务的第一覆盖率文件包括所述目标服务的单元测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在所述部署节点被部署时,获取所述部署节点中所述目标服务的单元测试覆盖率的文件;
将所述目标服务的单元测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
4.如权利要求2所述的方法,其特征在于,当所述目标服务的第一覆盖率文件包括所述目标服务的功能测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在所述部署节点上进行所述目标服务的功能测试时,每隔第一预设时间段从所述部署节点的内存中获取所述目标服务的功能测试的覆盖率文件;
将所述目标服务的功能测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
5.如权利要求2所述的方法,其特征在于,当所述目标服务的第一覆盖率文件包括所述目标服务的接口和用例测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
在所述部署节点上进行所述目标服务的接口和用例测试时,每隔第二预设时间段从所述部署节点的内存中获取所述目标服务的接口和用例测试的覆盖率文件;
将所述目标服务的接口和用例测试的覆盖率文件分别存储到所述节点本地和所述分布式对象存储服务器中。
6.如权利要求2所述的方法,其特征在于,当所述目标服务的第一覆盖率文件包括所述目标服务的全量测试的覆盖率文件时,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
基于所述目标服务的单元测试的覆盖率文件、功能测试的覆盖率文件、接口和用例测试的覆盖率文件,获取所述目标服务的全量测试的覆盖率文件。
7.如权利要求1~6中任一所述的方法,其特征在于,从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地之前,所述方法还包括:
所述分布式服务的部署节点与所述分布式服务的其它部署节点竞争Redis分布式锁;
如果所述分布式服务的部署节点竞争得到所述Redis分布式锁,则进行加锁处理,以使得所述分布式服务的部署节点在执行获取所述目标服务的覆盖率的步骤时,所述分布式服务的其它部署节点处于等待执行的状态。
8.一种分布式服务的部署节点,其特征在于,包括:
覆盖率同步单元,用于从分布式对象存储服务器中同步目标服务的第一覆盖率文件到节点本地,所述第一覆盖率文件由所述分布式服务的部署节点每隔预设时间段上传至所述分布式对象存储服务器;
覆盖率合并单元,用于将所述第一覆盖率文件与所述节点本地存储的所述目标服务的第二覆盖率文件进行合并,得到第三覆盖率文件,所述第二覆盖率文件与所述第一覆盖率文件中的覆盖率的类型一致;
覆盖率转换单元,用于将所述节点内存中与所述第一覆盖率文件中的覆盖率类型一致的所述目标服务的覆盖率数据转换为第四覆盖率文件,存储到所述节点本地;
覆盖率获取单元,用于基于所述第三覆盖率文件和所述第四覆盖率文件,获取所述目标服务的覆盖率。
9.一种电子设备,其特征在于,包括:
存储器,存储有计算机程序指令;
处理器,当所述计算机程序指令被所述处理器执行时实现如权利要求1-7任一项所述的覆盖率的获取方法。
10.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-7任一项所述的覆盖率的获取方法。
CN202110570074.9A 2021-05-25 2021-05-25 一种覆盖率的获取方法、装置及电子设备 Active CN113485908B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110570074.9A CN113485908B (zh) 2021-05-25 2021-05-25 一种覆盖率的获取方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110570074.9A CN113485908B (zh) 2021-05-25 2021-05-25 一种覆盖率的获取方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN113485908A true CN113485908A (zh) 2021-10-08
CN113485908B CN113485908B (zh) 2024-06-18

Family

ID=77933619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110570074.9A Active CN113485908B (zh) 2021-05-25 2021-05-25 一种覆盖率的获取方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN113485908B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416545A (zh) * 2022-01-06 2022-04-29 马上消费金融股份有限公司 确定测试代码覆盖率的方法、装置和电子设备

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
US8560985B1 (en) * 2007-06-07 2013-10-15 Cadence Design Systems, Inc. Configuration-based merging of coverage data results for functional verification of integrated circuits
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
CN105630671A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 代码覆盖率报告的生成方法及装置
US20160259713A1 (en) * 2015-03-04 2016-09-08 Vmware, Inc. Method and system for determining functional tests to execute based on code coverage
CN106155909A (zh) * 2016-07-26 2016-11-23 网易(杭州)网络有限公司 代码覆盖率测试结果的处理方法及装置
CN106294114A (zh) * 2015-06-08 2017-01-04 阿里巴巴集团控股有限公司 一种代码覆盖率获取方法、服务器及待测应用装置
US20170075794A1 (en) * 2015-09-14 2017-03-16 Salesforce.Com, Inc. Methods and systems for computing code coverage using grouped/filtered source classes during testing of an application
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN108959059A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 一种测试方法以及测试平台
US10402310B1 (en) * 2018-03-30 2019-09-03 Atlassian Pty Ltd Systems and methods for reducing storage required for code coverage results
WO2020024405A1 (zh) * 2018-08-03 2020-02-06 平安科技(深圳)有限公司 基于分布式协调的测试方法、装置、服务器及存储介质
CN111930627A (zh) * 2020-08-12 2020-11-13 中国工商银行股份有限公司 Egl编程语言的代码覆盖率确定方法及装置
CN112559348A (zh) * 2020-12-15 2021-03-26 广州云从鼎望科技有限公司 基于jacoco的测试分析方法、系统、设备以及介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560985B1 (en) * 2007-06-07 2013-10-15 Cadence Design Systems, Inc. Configuration-based merging of coverage data results for functional verification of integrated circuits
CN103095518A (zh) * 2011-11-08 2013-05-08 阿里巴巴集团控股有限公司 覆盖率测试处理方法、装置、覆盖率测试服务器及系统
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
US20160259713A1 (en) * 2015-03-04 2016-09-08 Vmware, Inc. Method and system for determining functional tests to execute based on code coverage
CN106294114A (zh) * 2015-06-08 2017-01-04 阿里巴巴集团控股有限公司 一种代码覆盖率获取方法、服务器及待测应用装置
US20170075794A1 (en) * 2015-09-14 2017-03-16 Salesforce.Com, Inc. Methods and systems for computing code coverage using grouped/filtered source classes during testing of an application
CN105630671A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 代码覆盖率报告的生成方法及装置
CN106155909A (zh) * 2016-07-26 2016-11-23 网易(杭州)网络有限公司 代码覆盖率测试结果的处理方法及装置
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN108959059A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 一种测试方法以及测试平台
US10402310B1 (en) * 2018-03-30 2019-09-03 Atlassian Pty Ltd Systems and methods for reducing storage required for code coverage results
WO2020024405A1 (zh) * 2018-08-03 2020-02-06 平安科技(深圳)有限公司 基于分布式协调的测试方法、装置、服务器及存储介质
CN111930627A (zh) * 2020-08-12 2020-11-13 中国工商银行股份有限公司 Egl编程语言的代码覆盖率确定方法及装置
CN112559348A (zh) * 2020-12-15 2021-03-26 广州云从鼎望科技有限公司 基于jacoco的测试分析方法、系统、设备以及介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416545A (zh) * 2022-01-06 2022-04-29 马上消费金融股份有限公司 确定测试代码覆盖率的方法、装置和电子设备

Also Published As

Publication number Publication date
CN113485908B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN110187914B (zh) 应用开发方法、系统及装置
CN108964968B (zh) 一种容器云环境下的服务接入管理方法和系统
CN109684036B (zh) 一种容器集群管理方法、存储介质、电子设备及系统
CN106886434B (zh) 一种分布式应用安装方法与装置
CN110879781B (zh) 程序调试方法、装置、电子设备及计算机可读存储介质
CN110362547B (zh) 日志文件的编码、解析、存储方法和装置
CN111831757B (zh) 分布式全局唯一标识信息的生成和管理方法及装置
CN108108126B (zh) 一种数据处理方法、装置及设备
CN107368330B (zh) 客户端补丁修复方法、装置和系统
CN113485908B (zh) 一种覆盖率的获取方法、装置及电子设备
CN111694639A (zh) 进程容器地址的更新方法、装置和电子设备
CN112181724B (zh) 大数据容灾方法、装置和电子设备
CN107301097B (zh) 一种调用java对象、java对象的引用地址信息的存储方法及装置
CN111026502B (zh) 一种业务调试架构创建方法、装置及电子设备、存储介质
CN112907198B (zh) 业务状态流转维护方法、装置及电子设备
CN115203050A (zh) 一种服务的依赖关系的确定方法及装置
CN110688430B (zh) 一种获得数据旁路的方法、装置及电子设备
CN115048083A (zh) 组件的可视化方法、装置、存储介质及电子设备
CN110389811B (zh) 一种基于分布式系统的测试方法、装置
CN114115982A (zh) 代码发布方法、装置、设备及存储介质
CN111367796B (zh) 应用程序调试方法及装置
CN112486696A (zh) 一种获取分布式锁的方法及设备
CN114064111A (zh) 一种部署包的版本信息的管理方法及设备
US11036624B2 (en) Self healing software utilizing regression test fingerprints
CN112527685B (zh) 基于混合云的自动化测试方法及设备

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
GR01 Patent grant
GR01 Patent grant