CN113204350A - 代码增量覆盖率统计方法、装置、电子设备及存储介质 - Google Patents
代码增量覆盖率统计方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113204350A CN113204350A CN202110633131.3A CN202110633131A CN113204350A CN 113204350 A CN113204350 A CN 113204350A CN 202110633131 A CN202110633131 A CN 202110633131A CN 113204350 A CN113204350 A CN 113204350A
- Authority
- CN
- China
- Prior art keywords
- current version
- file
- increment
- baseline
- version
- 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
Links
- 238000007619 statistical method Methods 0.000 title abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims description 33
- 230000004048 modification Effects 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 27
- 238000012360 testing method Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 230000007613 environmental effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 241001178520 Stomatepia mongo Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种代码增量覆盖率统计方法、装置、电子设备及存储介质,基于从获取的待测产品的配置任务信息中获取的当前版本class文件路径获取当前版本class文件;根据当前版本class文件与获取的运行时信息进行全局覆盖率分析,得到行覆盖状态信息;对当前版本class文件进行反编译得到当前版本byte文件;对将当前版本byte文件与对获取的基线包进行反编译得到的当前版本的基线版本byte文件进行比对得到的报告进行分析,得到待测产品的增量代码行;根据行覆盖状态信息和增量代码行,计算待测产品的代码增量覆盖率。本发明,能够提高代码增量覆盖率的统计效率,以及降低统计代码增量覆盖率的成本。
Description
技术领域
本发明涉及计算机技术领域,更具地说,涉及代码增量覆盖率统计方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的不断发展,计算机行业的产品迭代越来越快,为了保证产品的质量,需要不断的对产品进行软件测试,而在软件测试过程中,代码覆盖率是度量测试完整性的一个重要手段。
现有的代码覆盖率统计方法,主要是基于版本管理系统Git,反复读取git diff文件,并将读取到的git diff文件中的代码与源代码进行比对,得到增量代码行的数据结构,最后根据得到的增量代码行的数据结构计算增量代码覆盖率。但是这种方式存在一定的局限性,将读取到的gitdiff文件中的代码与源代码进行比对的过程中需要在本地维护一个代码库的副本,稳定性较差,导致代码覆盖率统计效率低,并且版本管理系统Git的集成依赖于JenKins,集成版本管理系统Git的成本高。
发明内容
有鉴于此,本发明提供一种代码增量覆盖率统计方法、装置、电子设备及存储介质,以提高代码增量覆盖率的统计效率,以及降低统计代码增量覆盖率的成本。
本发明第一方面公开一种代码增量覆盖率统计方法,所述方法包括:
从获取的待测产品的配置任务信息中当前版本class文件路径,并基于所述当前版本class文件路径获取当前版本class文件;
获取所述待测产品的运行时信息,并根据所述当前版本class文件与所述运行时信息进行全局覆盖率分析,得到行覆盖状态信息;
获取基线包,并对所述基线包进行反编译,得到当前版本的基线版本byte文件;
对所述当前版本class文件进行反编译得到当前版本byte文件;
对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到所述待测产品的增量代码行;
根据所述行覆盖状态信息和所述增量代码行,计算所述待测产品的代码增量覆盖率,所述待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
可选的,所述从获取的待测系统的配置任务信息中当前版本class文件路径,包括:
获取待测系统的配置任务信息;
根据用户选取的产品参数和环境参数从所述配置任务信息中,获取ftp配置信息;
从所述ftp配置信息中获取当前版本class文件路径。
可选的,所述获取基线包,并对所述基线包进行反编译,得到基线版本byte文件,包括:
基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获取基线包;
将根据用户选取的产品参数和环境参数进行拼接,得到当前版本的基线版本路径,并将所述基线包存储至所述当前版本的基线版本路径指示的文件夹中;
基于所述当前版本的基线版本路径指示的文件夹中存储的所述基线包,确定当前版本的基线版本byte文件。
可选的,所述对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到增量代码行,包括:
将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对,得到对比报告,所述比对报告包括增量类,所述增量类为新增文件或者修改文件;
对所述新增文件进行编译并记录所述新增文件对应的增量类的行修改信息;
对所述修改文件进行编译并记录所述修改文件对应的增量类的行修改信息;
其中,所述所述新增文件对应的增量类的行修改信息和所述修改文件对应的增量类的行修改信息构成所述待测产品的增量代码行。
可选的,所述根据所述行覆盖状态信息和所述增量代码行,计算所述待测系统的代码增量覆盖率,包括:
从所述增量代码行中获取每个所述增量类的行修改信息,其中,每个所述增量类的行修改信息包括所述增量类的行状态;
根据每个增量类的行状态和所述行覆盖状态信息,计算所述待测产品的每个增量类对应的覆盖率和全局增量总覆盖信息。
本发明第二方面公开一种代码增量覆盖率统计装置,所述装置包括:
第一获取单元,用于从获取的待测产品的配置任务信息中当前版本class文件路径,并基于所述当前版本class文件路径获取当前版本class文件;
全局覆盖率分析单元,用于获取所述待测产品的运行时信息,并将所述当前版本class文件与所述运行时信息进行全局覆盖率分析,得到行覆盖状态信息;
第一反编译单元,用于获取基线包,并对所述基线包进行反编译,得到当前版本的基线版本byte文件;
第二反编译单元,用于对所述当前版本class文件进行反编译得到当前版本byte文件;
分析单元,用于对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到所述待测产品的增量代码行;
第一计算单元,用于根据所述行覆盖状态信息和所述增量代码行,计算所述待测产品的代码增量覆盖率,所述待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
可选的,所述第一获取单元,包括:
第二获取单元,用于获取待测系统的配置任务信息;
第三获取单元,用于根据用户选取的参数和环境参数从所述配置任务信息中,获取ftp配置信息;
第四获取单元,用于从所述ftp配置信息中当前版本class文件路径。
可选的,所述第一反编译单元,包括:
第五获取单元,用于基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获取基线包;
拼接单元,用于将根据用户选取的产品参数和环境参数进行拼接,得到基线版本路径,并将所述基线包存储至所述当前版本的基线版本路径指示的文件夹中;
反编译子单元,用于基于所述当前版本的基线版本路径指示的文件夹中存储的所述基线包,确定当前版本的基线版本byte文件。
本申请第三方面提供了一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任意一项所述的方法。
本发明提供一种代码增量覆盖率统计方法、装置、电子设备及存储介质,通过从获取的待测产品的配置任务信息获取当前版本class文本路径,并基于所获取的当前版本class文件路径获取当前版本class文件;获取待测产品的运行时信息,以便将当前版本class文件与所获取的运行时信息进行全局覆盖率分析,得到待测产品的行覆盖状态信息;获取基线包,并对所获取的基线包进行返编译,得到当前版本的基线版本byte文件,对当前版本class文件进行反编译得到当前版本byte文件,以便将当前版本byte文件与当前版本的基线版本byte文件进行比对得到比对报告,并对比对报告进行分析,得到待测产品的增量代码行,最后根据行覆盖信息和增量代码行,计算待测产品的代码增量覆盖率。本发明提供的技术方案,通过根据将当前版本class文件与所获取的运行时信息进行全局覆盖率分析得到的行覆盖状态信息,和对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析得到的待测产品的增量代码行,计算待测产品的代码增量覆盖率,无需比对源代码,避免在本地维护一个代码库的副本,从而提高代码增量覆盖率的统计效率,也无需依赖于JenKins,从而降低了统计代码增量覆盖率的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种代码增量覆盖率统计方法的流程示意图;
图2为本发明实施例提供的一种代码增量覆盖率统计系统的结构示意图;
图3为本发明实施例提供的一种代码增量覆盖率统计装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
为了便于理解本发明的技术方案,对本发明中出现的技术术语进行说明:
Jacoco:代码覆盖率分析工具,可以通过在JVM层进行字节码插桩,收集待测产品的运行时信息,还提供了分析运行时信息的接口。
全局覆盖率:一个产品或产品模块在运行时的整体覆盖率情况。
增量覆盖率:通过当前运行中的版本的byte文件与基线版本byte文件进行对比,得到的增量代码的覆盖率情况。
ASM库:Java class被存储在严格格式定义的.class文件里,有足够的元数据来解析类中的所有元素:类名称、方法、属性以及Java字节码(指令)。ASM从类文件中读入这些信息,并且提供了访问和修改这些信息的接口,进而改变类的行为。
由上述背景技术可知,现有的代码覆盖率统计方法,主要是基于版本管理系统Git来统计待测产品的代码增量覆盖率,但是这种方式存在一定的局限性,将读取到的gitdiff文件中的代码与源代码进行比对的过程中需要在本地维护一个代码库的副本,稳定性较差,导致代码覆盖率统计效率低,并且版本管理系统Git的集成依赖于JenKins,集成版本管理系统Git的成本高。
因此,本发明提供一种代码增量覆盖率统计方法、装置、电子设备及存储介质,通过根据将当前版本class文件与所获取的运行时信息进行全局覆盖率分析得到的行覆盖信息,和对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析得到的待测产品的增量代码行,计算待测产品的代码增量覆盖率,无需比对源代码,避免在本地维护一个代码库的副本,从而提高代码增量覆盖率的统计效率,也无需依赖于JenKins,从而降低了统计代码增量覆盖率的成本。
参见图1,示出了本发明实施例提供的一种代码增量覆盖率统计方法的流程示意图,该代码增量覆盖率统计方法应用于代码增量覆盖率统计系统,该代码增量覆盖率统计系统包括前端、中台、mongodb数据库和后端,如图2所示,该代码增量覆盖率统计方法具体包括以下步骤:
S101:从获取的待测产品的配置任务信息中获取当前版本class文件路径,并基于当前版本class文件路径获取当前版本class文件。
在具体执行步骤S101的过程中,后端通过加载mianJob类去调用run()方法来获取待测产品的配置任务信息,获取用户选择的产品参数和环境参数,并根据用户选取的产品参数和环境参数从所获取的配置任务信息中,获取待测产品对应的ftp配置信息,以便从获取的ftp配置信息中获取当前版本class文件路径,在获取到当前版本class文件路径后,可以根据当前版本class文件路径获取当前版本class文件。
需要说明的是,用户可以通过前端选择产品参数和环境参数,并将选择产品参数和环境参数通过前端提交至后端,以便后端根据用户选择的产品参数和环境参数,从获取的配置任务信息中,获取待测产品对应的ftp配置信息。
需要说明的是,在获取到当前版本class文件路径和当前版本class文件后,还可以将获取到的当前版本class文件路径和当前版本class文件存储至mongodb数据库中。
S102:获取待测产品的运行时信息,并根据当前版本class文件与运行时信息进行全局覆盖率分析,得到行覆盖状态信息。
在具体执行步骤S102的过程中,后端在获取待测产品的运行时信息之前,可以先对待测产品的常用参数进行初始化,在初始化待测产品的常用参数后,利用代码覆盖率分析工具Jacoco,在Java虚拟机(JavaVirtual Machine,JVM)层进行字节码插桩,调用预先设置的API来获取待测产品的运行时信息。
在获取到待测产品的运行时信息后,可以利用预先设置的分析器Analyzer对获取到的运行时信息和当前版本class文件进行分析,并将分析结果输入预先设置的报告器CoverageBulider中,利用VisitClassCoverage计算方法对预先设置的报告器CoverageBulider中的分析结果进行统计计算,得到待测产品的行覆盖信息,并将得到的待测产品的行覆盖信息存储至预先设置的全量覆盖状态表dws_cc_linecoverage_ful中。
具体的,通过调用预先设置的API来获取待测产品的运行时信息的过程可以为:调用预先设置的API判断待测产品的每个类是否进行了重新编译,针对没有进行重新编译的类而言,获取该类的当前exe信息和该类的历史exe信息,将该类的当前exe信息和该类的历史exe信息进行合并;
针对进行了重新编译的类而言,获取该类重新编译后的exe信息,并从0开始计时,待计时时间达到预设时间时,获取预设时间段内该类的exe信息,并将该类重新编译后的exe信息和预设时间段内该类的exe信息进行合并,获取每个类进行了合并的exe信息,得到待测产品的运行时信息。
需要说明的是,在将得到的待测产品的行覆盖信息存储预先设置的全量覆盖状态表dws_cc_linecoverage_ful后,可以将存储了待测产品的行覆盖信息的全量覆盖状态表dws_cc_linecoverage_ful存储至mongodb数据库中。
S103:获取基线包,并对基线包进行反编译,得到当前版本的基线版本byte文件。
在具体执行步骤S103的过程中,后端基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获当前版本的取基线包,获取用户选择的产品参数和环境参数,将获取的产品参数和环境参数进行拼接,得到当前版本的基线版本路径,并将所获取当前版本的基线包存储至当前版本的基线版本路径指示的文件夹中,调用analyzeAl对当前版本的基线版本路径指示的文件夹中当前版本的基线包进行分析,得到目标基线包;并利用AMS对目标基线包进行反编译,得到当前版本的基线版本byte文件。
需要说明的是,对当前版本的基线版本路径指示的文件夹中基线包进行分析得到目标基线包仅包括.class文件。
还需要说明的是,若基于基线版本的远程地址获取的当前版本基线包中不存在编译好的byte码,则通过调用BaseVersionLoadServiceImpl的load()方法获取当前版本的基线包。
S104:对所当前版本class文件进行反编译得到当前版本byte文件。
在具体执行步骤S104的过程中,后端在基于当前版本的class文件路径获取到当前版本class文件后,利用ASM对当前版本的class文件进行反编译,得到当前版本byte文件。
需要说明的是,步骤S103和步骤S104的执行顺序并不局限于步骤S104在步骤S103之后执行,步骤S103可以在步骤S104之后执行,可以根据实际用进行设置,本申请实施例不加以限定。
S105:对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析,得到待测产品的增量代码行。
在具体执行步骤S105的过程中,后端在得到当前版本byte文件和当前版本的基线版本byte文件后,将当前版本byte文件与当前版本的基线版本byte文件进行比对,得到对比报告;对比对报告中的新增文件进行编译并记录新增文件对应的增量类的行修改信,以及对比对报告中的修改文件进行编译并记录修改文件对应的增量类的行修改信息。其中,所述新增文件对应的增量类的行修改信息和修改文件对应的增量类的行修改信息构成待测产品的增量代码行。
需要说明的是,在得到待测产品的增量代码行后,将得到的待测产品的增量代码行存储至预先设置的ods_cc_linechange_ful表;在将待测产品的增量代码行存储至预先设置的ods_cc_linechange_ful表后,还可以将存储了待测产品的增量代码行的ods_cc_linechange_ful表存储至mongodb数据库中。
S106:根据行覆盖信息和增量代码行,计算待测产品的代码增量覆盖率,待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
在具体执行步骤S106的过程中,后端在将待测产品的增量代码行存储至预先设置的ods_cc_linechange_ful表后,可以从ods_cc_linechange_ful表中存储的待测产品的增量代码行中获取每个所述增量类的行修改信息,以及从全量覆盖状态表dws_cc_linecoverage_ful中获取待测产品的行覆盖状态信息,以便根据增量代码行中的每个增量类的行状态和行覆盖状态信息,计算待测产品的每个增量类对应的覆盖率和待测产品的全局增量总覆盖率。
需要说明的是,后端在得到待测产品的每个增量类对应的覆盖率和待测产品的全局增量总覆盖率后,将得到的待测产品的每个增量类对应的覆盖率存储预先设置的增量类的覆盖率表dws_cc_insclasscoverage_ful中,将待测产品的全局增量总覆盖率存储至预先设置的全局增量总覆盖率信息表dws_cc_instotalcoverage_ful,并将存储了待测产品的全局增量总覆盖率的全局增量总覆盖率信息表dws_cc_instotalcoverage_ful和存储了待测产品的每个增量类的覆盖率的增量类的覆盖率表dws_cc_insclasscoverage_ful存储至mongodb数据库中。
在本申请实施例中,前端可以通过中台从mongodb数据库中查询存储了待测产品的全局增量总覆盖率的全局增量总覆盖率信息表dws_cc_instotalcoverage_ful和存储了待测产品的每个增量类的覆盖率的增量类的覆盖率表dws_cc_insclasscoverage_ful,并进行展示。
本发明提供一种代码增量覆盖率统计方法,通过从获取的待测产品的配置任务信息获取当前版本class文本路径,并基于所获取的当前版本class文件路径获取当前版本class文件;获取待测产品的运行时信息,以便将当前版本class文件与所获取的运行时信息进行全局覆盖率分析,得到待测产品的行覆盖信息;获取基线包,并对所获取的基线包进行返编译,得到当前版本的基线版本byte文件,对当前版本class文件进行反编译得到当前版本byte文件,以便将当前版本byte文件与当前版本的基线版本byte文件进行比对得到比对报告,并对比对报告进行分析,得到待测产品的增量代码行,最后根据行覆盖状态信息和增量代码行,计算待测产品的代码增量覆盖率。本发明提供的技术方案,通过根据将当前版本class文件与所获取的运行时信息进行全局覆盖率分析得到的行覆盖状态信息,和对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析得到的待测产品的增量代码行,计算待测产品的代码增量覆盖率,无需比对源代码,避免在本地维护一个代码库的副本,从而提高代码增量覆盖率的统计效率,也无需依赖于JenKins,从而降低了统计代码增量覆盖率的成本。
基于上述本发明实施例提供的一种代码增量覆盖率统计方法,相应的,本发明实施例还提供一种代码增量覆盖率统计装置,参见图3,示出了本发明实施例提供的一种代码增量覆盖率统计装置的结构示意图,该代码增量覆盖率统计装置,包括:
第一获取单元31,用于从获取的待测产品的配置任务信息中当前版本class文件路径,并基于当前版本class文件路径获取当前版本class文件;
全局覆盖率分析单元32,用于获取待测产品的运行时信息,并将当前版本class文件与运行时信息进行全局覆盖率分析,得到行覆盖状态信息;
第一反编译单元33,用于获取基线包,并对基线包进行反编译,得到当前版本的基线版本byte文件;
第二反编译单元34,用于对当前版本class文件进行反编译得到当前版本byte文件;
分析单元35,用于对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析,得到待测产品的增量代码行;
第一计算单元36,用于根据行覆盖状态信息和增量代码行,计算待测产品的代码增量覆盖率,待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
上述本发明实施例公开的代码增量覆盖率统计装置中各个单元具体的原理和执行过程,与上述本发明实施例公开的代码增量覆盖率统计方法相同,可参见上述本发明实施例公开的代码增量覆盖率统计方法中相应的部分,这里不再进行赘述。
本发明提供一种代码增量覆盖率统计方法,通过从获取的待测产品的配置任务信息获取当前版本class文本路径,并基于所获取的当前版本class文件路径获取当前版本class文件;获取待测产品的运行时信息,以便将当前版本class文件与所获取的运行时信息进行全局覆盖率分析,得到待测产品的行覆盖信息;获取基线包,并对所获取的基线包进行返编译,得到当前版本的基线版本byte文件,对当前版本class文件进行反编译得到当前版本byte文件,以便将当前版本byte文件与当前版本的基线版本byte文件进行比对得到比对报告,并对比对报告进行分析,得到待测产品的增量代码行,最后根据行覆盖状态信息和增量代码行,计算待测产品的代码增量覆盖率。本发明提供的技术方案,通过根据将当前版本class文件与所获取的运行时信息进行全局覆盖率分析得到的行覆盖状态信息,和对将当前版本byte文件与当前版本的基线版本byte文件进行比对得到的报告进行分析得到的待测产品的增量代码行,计算待测产品的代码增量覆盖率,无需比对源代码,避免在本地维护一个代码库的副本,从而提高代码增量覆盖率的统计效率,也无需依赖于JenKins,从而降低了统计代码增量覆盖率的成本。
可选的,第一获取单元,包括:
第二获取单元,用于获取待测系统的配置任务信息;
第三获取单元,用于根据用户选取的参数和环境参数从配置任务信息中,获取ftp配置信息;
第四获取单元,用于从ftp配置信息中当前版本class文件路径。
可选的,第一反编译单元,包括:
第五获取单元,用于基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获取基线包;
拼接单元,用于将根据用户选取的产品参数和环境参数进行拼接,得到基线版本路径,并将基线包存储至当前版本的基线版本路径指示的文件夹中;
反编译子单元,用于基于当前版本的基线版本路径指示的文件夹中存储的基线包,确定当前版本的基线版本byte文件。
可选的,分析单元,包括:
第一比对单元,用于将当前版本byte文件与当前版本的基线版本byte文件进行比对,得到对比报告,比对报告包括增量类,增量类为新增文件或者修改文件;
编译单元,用于对新增文件进行编译并记录新增文件对应的增量类的行修改信息;
第二比对单元,用于对修改文件进行编译并记录修改文件对应的增量类的行修改信息;
其中,新增文件对应的增量类的行修改信息和修改文件对应的增量类的行修改信息构成待测产品的增量代码行。
可选的,第一计算单元,包括:
第七获取单元,用于从增量代码行中获取每个增量类的行修改信息,其中,每个增量类的行修改信息包括增量类的行状态;
第二计算单元,用于根据每个增量类的行状态和行覆盖状态信息,计算待测产品的每个增量类对应的覆盖率和全局增量总覆盖信息。
本申请另一实施例提供了一种电子设备,如图4所示,包括:
一个或多个处理器401。
存储装置402,其上存储有一个或多个程序。
当所述一个或多个程序被所述一个或多个处理器401执行时,使得所述一个或多个处理器401实现如上述实施例中任意一项所述的方法。
本申请另一实施例提供了一种计算机存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现如上述实施例中任意一项所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种代码增量覆盖率统计方法,其特征在于,所述方法包括:
从获取的待测产品的配置任务信息中当前版本class文件路径,并基于所述当前版本class文件路径获取当前版本class文件;
获取所述待测产品的运行时信息,并根据所述当前版本class文件与所述运行时信息进行全局覆盖率分析,得到行覆盖状态信息;
获取基线包,并对所述基线包进行反编译,得到当前版本的基线版本byte文件;
对所述当前版本class文件进行反编译得到当前版本byte文件;
对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到所述待测产品的增量代码行;
根据所述行覆盖状态信息和所述增量代码行,计算所述待测产品的代码增量覆盖率,所述待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
2.根据权利要求1所述的方法,其特征在于,所述从获取的待测系统的配置任务信息中当前版本class文件路径,包括:
获取待测系统的配置任务信息;
根据用户选取的产品参数和环境参数从所述配置任务信息中,获取ftp配置信息;
从所述ftp配置信息中获取当前版本class文件路径。
3.根据权利要求1所述的方法,其特征在于,所述获取基线包,并对所述基线包进行反编译,得到基线版本byte文件,包括:
基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获取基线包;
将根据用户选取的产品参数和环境参数进行拼接,得到当前版本的基线版本路径,并将所述基线包存储至所述当前版本的基线版本路径指示的文件夹中;
基于所述当前版本的基线版本路径指示的文件夹中存储的所述基线包,确定当前版本的基线版本byte文件。
4.根据权利要求1所述的方法,其特征在于,所述对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到增量代码行,包括:
将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对,得到对比报告,所述比对报告包括增量类,所述增量类为新增文件或者修改文件;
对所述新增文件进行编译并记录所述新增文件对应的增量类的行修改信息;
对所述修改文件进行编译并记录所述修改文件对应的增量类的行修改信息;
其中,所述所述新增文件对应的增量类的行修改信息和所述修改文件对应的增量类的行修改信息构成所述待测产品的增量代码行。
5.根据权利要求4所述的方法,其特征在于,所述根据所述行覆盖状态信息和所述增量代码行,计算所述待测系统的代码增量覆盖率,包括:
从所述增量代码行中获取每个所述增量类的行修改信息,其中,每个所述增量类的行修改信息包括所述增量类的行状态;
根据每个增量类的行状态和所述行覆盖状态信息,计算所述待测产品的每个增量类对应的覆盖率和全局增量总覆盖信息。
6.一种代码增量覆盖率统计装置,其特征在于,所述装置包括:
第一获取单元,用于从获取的待测产品的配置任务信息中当前版本class文件路径,并基于所述当前版本class文件路径获取当前版本class文件;
全局覆盖率分析单元,用于获取所述待测产品的运行时信息,并将所述当前版本class文件与所述运行时信息进行全局覆盖率分析,得到行覆盖状态信息;
第一反编译单元,用于获取基线包,并对所述基线包进行反编译,得到当前版本的基线版本byte文件;
第二反编译单元,用于对所述当前版本class文件进行反编译得到当前版本byte文件;
分析单元,用于对将所述当前版本byte文件与所述当前版本的基线版本byte文件进行比对得到的报告进行分析,得到所述待测产品的增量代码行;
第一计算单元,用于根据所述行覆盖状态信息和所述增量代码行,计算所述待测产品的代码增量覆盖率,所述待测产品的代码增量覆盖率包括增量类的覆盖率和全局增量总覆盖率。
7.根据权利要求6所述的装置,其特征在于,所述第一获取单元,包括:
第二获取单元,用于获取待测系统的配置任务信息;
第三获取单元,用于根据用户选取的参数和环境参数从所述配置任务信息中,获取ftp配置信息;
第四获取单元,用于从所述ftp配置信息中当前版本class文件路径。
8.根据权利要求6所述的装置,其特征在于,所述第一反编译单元,包括:
第五获取单元,用于基于从预先设置的ods_cc_codecersion表中获取基线版本的远程地址获取基线包;
拼接单元,用于将根据用户选取的产品参数和环境参数进行拼接,得到基线版本路径,并将所述基线包存储至所述当前版本的基线版本路径指示的文件夹中;
反编译子单元,用于基于所述当前版本的基线版本路径指示的文件夹中存储的所述基线包,确定当前版本的基线版本byte文件。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至4中任一所述的方法。
10.一种计算机存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110633131.3A CN113204350A (zh) | 2021-06-07 | 2021-06-07 | 代码增量覆盖率统计方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110633131.3A CN113204350A (zh) | 2021-06-07 | 2021-06-07 | 代码增量覆盖率统计方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113204350A true CN113204350A (zh) | 2021-08-03 |
Family
ID=77024175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110633131.3A Pending CN113204350A (zh) | 2021-06-07 | 2021-06-07 | 代码增量覆盖率统计方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113204350A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722436A (zh) * | 2012-05-29 | 2012-10-10 | 百度在线网络技术(北京)有限公司 | 一种增量覆盖信息的统计方法和装置 |
CN108197036A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于确定增量代码的覆盖率信息的方法和装置 |
CN110716739A (zh) * | 2019-09-19 | 2020-01-21 | 平安科技(深圳)有限公司 | 一种代码变更信息统计方法、系统和可读存储介质 |
US10949172B1 (en) * | 2017-11-14 | 2021-03-16 | Amdocs Development Limited | System, method, and computer program for determining incremental code coverage of a software project |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
-
2021
- 2021-06-07 CN CN202110633131.3A patent/CN113204350A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722436A (zh) * | 2012-05-29 | 2012-10-10 | 百度在线网络技术(北京)有限公司 | 一种增量覆盖信息的统计方法和装置 |
US10949172B1 (en) * | 2017-11-14 | 2021-03-16 | Amdocs Development Limited | System, method, and computer program for determining incremental code coverage of a software project |
CN108197036A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于确定增量代码的覆盖率信息的方法和装置 |
CN110716739A (zh) * | 2019-09-19 | 2020-01-21 | 平安科技(深圳)有限公司 | 一种代码变更信息统计方法、系统和可读存储介质 |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9064041B1 (en) | Simple method optimization | |
Carette et al. | Investigating the energy impact of android smells | |
US7818721B2 (en) | Dynamic application tracing in virtual machine environments | |
Costa et al. | What's wrong with my benchmark results? Studying bad practices in JMH benchmarks | |
US20110258609A1 (en) | Method and system for software defect reporting | |
US7069474B2 (en) | System and method for assessing compatibility risk | |
US20050223357A1 (en) | System and method for using an automated process to identify bugs in software source code | |
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
KR20090017598A (ko) | 소프트웨어를 분석하기 위한 방법 및 시스템 | |
Sahar et al. | Towards energy aware object-oriented development of android applications | |
Dongarra et al. | Experiences and lessons learned with a portable interface to hardware performance counters | |
CN110554965A (zh) | 自动化模糊测试方法及相关设备、计算机可读存储介质 | |
CN113568839A (zh) | 软件测试和统计测试覆盖率的方法、装置、设备及介质 | |
Bangash et al. | A methodology for relating software structure with energy consumption | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
CN110704303B (zh) | 一种测试覆盖度信息的获取方法及装置 | |
CN103823665A (zh) | 一种sdk活跃度分析方法、网络服务器及系统 | |
CN102521135B (zh) | 线性系统的测试方法和装置 | |
US20180011778A1 (en) | Static code testing of active code | |
CN108829575B (zh) | 测试案例推荐方法、电子装置及可读存储介质 | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
Sarimbekov et al. | Complete and platform-independent calling context profiling for the Java virtual machine | |
CN113204350A (zh) | 代码增量覆盖率统计方法、装置、电子设备及存储介质 | |
CN115080426A (zh) | 程序文件的检测方法及装置、存储介质和电子设备 | |
CN113986749A (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 |