CN113282504A - 一种增量代码覆盖率检测方法及业务开发方法、装置 - Google Patents

一种增量代码覆盖率检测方法及业务开发方法、装置 Download PDF

Info

Publication number
CN113282504A
CN113282504A CN202110645298.1A CN202110645298A CN113282504A CN 113282504 A CN113282504 A CN 113282504A CN 202110645298 A CN202110645298 A CN 202110645298A CN 113282504 A CN113282504 A CN 113282504A
Authority
CN
China
Prior art keywords
code
service
incremental
coverage rate
compiled file
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
Application number
CN202110645298.1A
Other languages
English (en)
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.)
Beijing Ziroom Information Technology Co Ltd
Original Assignee
Beijing Ziroom Information Technology Co Ltd
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 Beijing Ziroom Information Technology Co Ltd filed Critical Beijing Ziroom Information Technology Co Ltd
Priority to CN202110645298.1A priority Critical patent/CN113282504A/zh
Publication of CN113282504A publication Critical patent/CN113282504A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种增量代码覆盖率检测方法及业务开发方法、装置,该增量代码覆盖率检测方法包括:获取待检测代码的第一编译文件及待检测代码对应原始代码的第二编译文件;对第一编译文件和第二编译文件进行分析对比,得到增量方法列表;基于增量方法列表对第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;对测试安装包进行测试,得到测试结果;基于测试结果中包含的标记信息与增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。通过测试结果的标记信息得到代码方法维度的增量代码覆盖率,使得修改的代码可以直接定位到方法的维度,相比定位到文件维度,差异对比更加精准,相比定位到行维度,覆盖率逻辑更加完整。

Description

一种增量代码覆盖率检测方法及业务开发方法、装置
技术领域
本发明涉及计算机应用技术领域,具体涉及一种增量代码覆盖率检测方法及业务开发方法、装置。
背景技术
在客户端项目开发过程中,需要对对开发代码进行修改,并对修改后的代码进行自测和测试。但是自测和测试的完整度:是否覆盖了所有新增或修改的代码简称增量代码,并不能进行有效的确认;当一个迭代包含多个需求的时候,未经确认的代码合并到代码库当前迭代的分支,将会导致当前迭代的线上崩溃等风险增加。
目前,已有的增量代码覆盖率检测方法检测颗粒度较粗通常是从全量或者文件维度进行检测,无法精准定位到代码块。
发明内容
有鉴于此,本发明实施例提供了一种增量代码覆盖率检测方法及业务开发方法、装置,以克服现有技术中增量代码覆盖率检测方法检测颗粒度较粗无法精准定位到代码块的问题。
本发明实施例提供了一种增量代码覆盖率检测方法,包括:
获取待检测代码的第一编译文件及所述待检测代码对应原始代码的第二编译文件,所述待检测代码为所述原始代码修改后的代码;
对所述第一编译文件和所述第二编译文件进行分析对比,得到增量方法列表,所述增量方法列表为引起编译文件变化的方法集合;
基于所述增量方法列表对所述第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;
对所述测试安装包进行测试,得到测试结果;
基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。
可选地,所述基于所述增量方法列表对所述第一编译文件进行标记,包括:
依次对所述第一编译文件中所述增量方法列表中各个方法所对应的编译内容进行标记。
可选地,所述基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果,包括:
比较所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,确定所述增量方法列表中已测试的方法;
获取所述已测试的方法对应第一编译文件的第一编译内容以及所述增量方法列表中所有方法对应第一编译文件的第二编译内容;
从所述待检测代码中提取所述第一编译内容对应的第一源代码行以及所述第二编译内容对应的第二源代码行;
基于所述第一源代码行与所述第二源代码行的行数关系,生成所述增量代码覆盖率检测结果。
本发明实施例还提供了一种业务开发方法,包括:
获取业务代码并进行编译,所述业务代码为基于待开发业务的预设业务需求开发的业务代码;
采用如本发明另一实施例所述的增量代码覆盖率检测方法对所述业务代码进行检测,生成对应的增量代码覆盖率检测结果;
判断所述增量代码覆盖率检测结果是否满足预设检测要求;
当所述增量代码覆盖率检测结果满足预设检测要求时,得到满足所述预设业务需求的业务代码。
可选地,所述方法还包括:
将满足所述预设业务需求的业务代码与所述待开发业务的主干代码合并后进行集成测试;
在集成测试通过后,生成所述待开发业务对应的产品。
可选地,当所述增量代码覆盖率检测结果不满足预设检测要求时,将所述增量代码覆盖率检测结果发送至代码研发端,以使研发人员进行业务代码确认;
接收确认后的业务代码,并返回所述采用本发明另一实施例所述的增量代码覆盖率检测方法对所述业务代码进行检测,生成对应的增量代码覆盖率的检测结果的步骤。
本发明实施例还提供了一种增量代码覆盖率检测装置,包括:
第一获取模块,用于获取待检测代码的第一编译文件及所述待检测代码对应原始代码的第二编译文件,所述待检测代码为所述原始代码修改后的代码;
第一处理模块,用于对所述第一编译文件和所述第二编译文件进行分析对比,得到增量方法列表,所述增量方法列表为引起编译文件变化的方法集合;
第二处理模块,用于基于所述增量方法列表对所述第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;
第三处理模块,用于对所述测试安装包进行测试,得到测试结果;
第四处理模块,用于基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。
本发明实施例还提供了一种业务开发装置,包括:
第二获取模块,用于获取业务代码并进行编译,所述业务代码为基于待开发业务的预设业务需求开发的业务代码;
第五处理模块,用于采用如本发明另一实施例所述的增量代码覆盖率检测装置对所述业务代码进行检测,生成对应的增量代码覆盖率检测结果;
第六处理模块,用于判断所述增量代码覆盖率检测结果是否满足预设检测要求;
第七处理模块,用于当所述增量代码覆盖率检测结果满足预设检测要求时,得到满足所述预设业务需求的业务代码。
本发明实施例还提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行本发明实施例提供方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明实施例提供的方法。
本发明技术方案,具有如下优点:
本发明实施例提供了一种增量代码覆盖率检测方法及装置,通过获取待检测代码的第一编译文件及待检测代码对应原始代码的第二编译文件;对第一编译文件和第二编译文件进行分析对比,得到增量方法列表;基于增量方法列表对第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;对测试安装包进行测试,得到测试结果;基于测试结果中包含的标记信息与增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。从而通过分析代码修改前后的编译文件,得到发生更改的方法集合,然后通过对编译文件中更改的方法进行标记,利用标记后的编译文件制作测试安装包进行测试,从而通过测试结果的标记信息得到代码方法维度的增量代码覆盖率,使得修改的代码可以直接定位到方法的维度,相比于定位到文件的维度,差异对比更加精准,相比于定位到行的维度,覆盖率的逻辑更加完整。
本发明实施例提供了一种业务开发方法及装置,包括:获取业务代码并进行编译,业务代码为基于待开发业务的预设业务需求开发的业务代码;采用如本发明另一实施例的增量代码覆盖率检测方法对业务代码进行检测,生成对应的增量代码覆盖率检测结果;判断增量代码覆盖率检测结果是否满足预设检测要求;当增量代码覆盖率检测结果满足预设检测要求时,得到满足预设业务需求的业务代码。从而在开发过程中利用本发明另一实施例的增量代码覆盖率检测方法进行检测,并对覆盖率的信息进行评价,具备了流程卡口功能,使得需求开发和测试的流程更加客观,大大降低了问题代码(未经测试的代码)因人为问题上线的风险,并且无需开发测试人员进行更多手动操作,实现了业务全周期自动化开发。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中的增量代码覆盖率检测方法的流程图;
图2为本发明实施例中的增量方法生成过程示意图;
图3为本发明实施例中的增量代码覆盖率检测的具体应用示例图;
图4为本发明实施例中的业务开发方法的流程图;
图5为本发明实施例中的业务开发的过程示例图;
图6为本发明实施例中的增量代码覆盖率检测装置的结构示意图;
图7为本发明实施例中的业务开发装置的结构示意图;
图8为本发明实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
在客户端项目开发过程中,需要对对开发代码进行修改,并对修改后的代码进行自测和测试。但是自测和测试的完整度:是否覆盖了所有新增或修改的代码简称增量代码,并不能进行有效的确认;当一个迭代包含多个需求的时候,未经确认的代码合并到代码库当前迭代的分支,将会导致当前迭代的线上崩溃等风险增加。
目前,已有的增量代码覆盖率检测方法检测颗粒度较粗通常是从全量或者文件维度进行检测,无法精准定位到代码块。
基于上述问题,本发明实施例提供了一种增量代码覆盖率检测方法,如图1所示,该方法具体包括如下步骤:
步骤S101:获取待检测代码的第一编译文件及待检测代码对应原始代码的第二编译文件。
其中,待检测代码为原始代码修改后的代码。具体地,原始代码可以是开发人员针对某一业务开发需求所开发的初始代码,也可以是基于初始代码进行完善修改后的代码,而待检测代码为原始代码基础上对代码进行增加或者修改后的代码。需要说明的是,在本发明实施例中,以使用APS系统即高级计划与排程(Advanced Planning and Scheduling)进行业务开发为例,即开发人员通过APS系统进行业务开发,其可以对APP的开发全流程进行管理,集成了分支管理,开发流程管理,持续集成等功能。在实际应用中也可以采用其他开发管理系统进行开发管理,本发明并不以此为限。
步骤S102:对第一编译文件和第二编译文件进行分析对比,得到增量方法列表,增量方法列表为引起编译文件变化的方法集合。
其中,对于利用APS系统进行应用开发,可以使用git命令,获取git diff产生的class文件,具体包括初始构建的class文件即第二编译文件和修改后构建的class文件即第一编译文件,然后使用例如:asm等具备class文件分析功能的工具,对两次的class文件进行分析,获取增量方法列表,本发明实施例所使用的asm为ASM库是一款基于Java字节码层面的代码分析和修改工具。ASM可以直接生产二进制的class文件,也可以在类被加载入JVM之前动态修改类行为。
示例性地,如图2所示,上述的步骤S102的具体实现过程如下:
1.通过git diff命令,先初步对比出来有变化的class文件(初始构建的class文件会被push到分支:业务分支名_base,最新构建的class文件会被push到分支:业务分支名);
2.将两个分支的差异class文件拉取到本地工作空间的两个目录(业务分支名_base和业务分支名),将两个文件夹的所有class文件加载到asm,对class的方法进行分析;
3.通过asm的MethodVisitor,将每个类的方法的关键信息拼接起来,包括不限于方法的方法局部变量的当前状态以及操作栈成员信息,数值类型指令,本地变量类型指令,类型指令,域操作指令,方法操作指令,动态类型指令,比较跳转指令,ldc指令,本地变量索引增加指令,跳转指令,查询跳转指令,多维数组指令,方法try-catch块,本地变量描述,操作数栈最大值和本地变量表最大值等(注意:在执行ldc指令时,该指令表示int、float或String型常量从常量池推送至栈顶,由于资源id信息也属于int常量,所以在对ldc指令关键信息进行拼接时,需要对资源id进行忽略),对拼接的关键信息字符串执行信息摘要算法(Message-Digest Algorithm)简称MD5,需要说明的是,在本发明实施例中是以MD5为例进行的说明,在实际应用中也可以采用其他算法进行方法的对比,只要能够实现方法差异化比对即可,本发明并不以此为限;
4.对比两个分支对应类所有方法的MD5结果,对比的差异结果即为增量方法集合。
综上,本发明实施例的增量判断会落到代码方法的维度,对于修改的方法和新增的方法均认定为增量方法,在执行增量覆盖率的过程中,会对此增量部分进行覆盖记录,从而实现了方法维度增量代码覆盖率的检测。
步骤S103:基于增量方法列表对第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包。
具体地,通过依次对第一编译文件中增量方法列表中各个方法所对应的编译内容进行标记。示例性地,可以使用jacoco(开源覆盖率检测工具)进行插针,并产生插针后的客户端安装包,从而当执行到对应的标记代码后,可以在设备本地存储对应执行信息,以此来确定标记代码在检测过程中执行与否。这种增量插针的方式也比原始全量插针的方式打包速度更快,提高了整体业务开发效率。需要说明的是,在实际应用中,也可以采用其他覆盖率检测工具如EMMA等进行标记,只要能够检测方法代码实际执行情况即可,本发明并不以此为限。
步骤S104:对测试安装包进行测试,得到测试结果。
具体地,由于安装包是以标记后的编译文件生成的,因此对其进行相应的软件开发流程所必须的自测或测试,在相应地测试结果中会包含有相应标记结果的执行信息。
步骤S105:基于测试结果中包含的标记信息与增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。
具体地,在一实施例中,上述的步骤S105,具体包括如下步骤:
步骤S201:比较测试结果中包含的标记信息与增量方法列表对应的标记信息,确定增量方法列表中已测试的方法。
其中,由于带有标记的方法在测试后,在相应地测试结果中会包含有相应标记结果的执行信息,因此,可以根据测试结果中对应的执行信息确定对应的标记信息,进而确定增量方法列表中已经进行测试的方法。
步骤S202:获取已测试的方法对应第一编译文件的第一编译内容以及增量方法列表中所有方法对应第一编译文件的第二编译内容。
其中,在编译文件中,不同的方法对应不同的编译内容,第一编译内容是已经经过测试的修改代码所对应的编译内容,第二编译内容为所有修改代码对应的编译内容。
步骤S203:从待检测代码中提取第一编译内容对应的第一源代码行以及第二编译内容对应的第二源代码行。
其中,每个方法对应的编译内容均由一行或多行源代码编译得到,因此,可以反过来通过编译内容确定进行编译的源代码的行数。
步骤S204:基于第一源代码行与第二源代码行的行数关系,生成增量代码覆盖率检测结果。
其中,增量代码覆盖率=执行代码行/总代码行,其中,总代码行为增量(新增或修改)方法对应的代码行数总和,已执行代码行为总代码行中已执行的代码行。
下面将结合具体应用示例,对本发明实施例提供的增量代码覆盖率检测方法进行详细的说明。具体执行过程如图3所示。
1.开发人员通过APS创建业务开发分支。
2.APS调用jenkins服务,进行初始构建。
3.初始构建过程中,上传初始构建的class文件到git仓库。
4.开发人员在自己电脑上面进行业务开发。
5.开发人员提交开发后的代码到git仓库。
6.提交代码后,开发人员从APS或者jenkins发起对应分支的构建。
7.构建过程中,将编译后的class文件上传到git仓库。
8.使用git命令,获取git diff产生的class文件(初始构建&修改后构建),在本地使用asm对两次的class文件进一步分析,获取增量方法列表。
9.根据步骤8中产生的增量方法列表,使用jacoco进行插针,并产生插针后的客户端安装包。
10.开发人员使用该客户端安装包进行自测或者测试。
11.在手机端,会根据测试流程生成执行数据ec文件,在手机端可以自动上传或者手动上传该文件到ec文件服务。
12.Jenkins执行报告生成任务,从ec文件服务拉取ec文件。
13.Jenkins从git class仓库拉取最新的class文件。
14.Jenkins从git source仓库拉取最新的源码文件。
15.Jenkins根据ec文件,class文件,源码文件生成报告,并将该报告上传到report服务。
16.用户点击对应分支的覆盖率数据按钮,查看覆盖率数据。
17.APS响应用户点击,从report服务或者相应的覆盖率报告,展现给用户查看。
由上述应用示例可知,本发明实施例的增量代码覆盖率检测方法,通过的修改的代码可以直接定位到方法的维度,相比于定位的文件的维度,差异对比更加精准,相比于定位到行的维度,覆盖率的逻辑更加完整;并且整体交互的流程对于开发测试人员无感知,深入嵌入到开发测试流程中,开发测试人员不需要进行更多手动操作,在各个流程的关键节点均可以查看对应的代码覆盖率信息。
通过执行上述步骤,本发明实施例提供的增量代码覆盖率检测方法,通过分析代码修改前后的编译文件,得到发生更改的方法集合,然后通过对编译文件中更改的方法进行标记,利用标记后的编译文件制作测试安装包进行测试,从而通过测试结果的标记信息得到代码方法维度的增量代码覆盖率,使得修改的代码可以直接定位到方法的维度,相比于定位到文件的维度,差异对比更加精准,相比于定位到行的维度,覆盖率的逻辑更加完整。
本发明实施例还提供了一种业务开发方法,如图4所示,该业务开发方法具体包括如下步骤:
步骤S301:获取业务代码并进行编译。
其中,该业务代码为基于待开发业务的预设业务需求开发的业务代码,该业务代码可以是初始源代码,也可以是在初始源代码基础上进行增加或修改的源代码等,本发明并不以此为限。
步骤S302:采用如本发明另一实施例的增量代码覆盖率检测方法对业务代码进行检测,生成对应的增量代码覆盖率检测结果。
其中,当该业务代码为初始源代码时,其对应的原始代码空,即需要对原始代码中所有的代码进行覆盖率检测,以确定所有代码是否均检测到。
步骤S303:判断增量代码覆盖率检测结果是否满足预设检测要求。
其中,该预设检测要求为预设覆盖率阈值,在软件开发过程中,通常要求所有修改代码均需要进行检测,即要求最终的覆盖率为100%,如果其达到了覆盖率为100%,则说明该业务代码满足预设检测要求,当然,在实际应用中,该预设覆盖率阈值也可以根据实际项目研发要求进行灵活的设置,本发明并不以此为限。
步骤S304:当增量代码覆盖率检测结果满足预设检测要求时,得到满足预设业务需求的业务代码。
其中,如果业务代码满足预设检测要求,则说明该业务代码研发合格,可以满足相应的业务需求,可以使用其进行下一步的项目研发工作,如:与主干代码进行合并生成最终的APP等。
具体地,在一实施例中,上述的业务开发方法还包括如下步骤:
步骤S305:当增量代码覆盖率检测结果不满足预设检测要求时,将增量代码覆盖率检测结果发送至代码研发端,以使研发人员进行业务代码确认。
其中,如果增量代码覆盖率检测结果中的覆盖率值小于预设阈值,则通过将该结果发送给研发人员进行代码确认,协助研发人员精准对未检测到的代码块进行确认,以推动加快研发进程,确保业务代码的安全性和有效性。
步骤S306:接收确认后的业务代码,并返回步骤S302。
具体地,如果研发人员对没有检测到的代码块进行确认后,可以重新对确认后的业务代码进行检测,在实际应用中,还可以根据实际情况不断地完善测试流程,以便可以正常进入下一个开发测试流程。
步骤S307:将满足预设业务需求的业务代码与待开发业务的主干代码合并后进行集成测试。其中,业务代码与主干代码合并后进行集成测试位产品上线前的综合测试,只有通过集成测试软件产品才具备上线条件。
步骤S308:在集成测试通过后,生成待开发业务对应的产品。
下面将结合具体应用示例,对本发明实施例提供的业务开发方法进行详细的说明。具体执行过程如图5所示。
1.开发测试人员从需求开始到结束(提审上线),可以通过APS系统,对需求的生命周期进行管理,在此基础上,结合现实的覆盖率报告生成流程,建立相关业务流程卡口。
2.每个业务卡口节点,APS系统根据生成的覆盖率数据去判断是否可以进入下一个开发流程,提高人效的同时,减少了开发测试人员对业务开发流程的介入。
3.在APS系统判定不通过之后,开发人员可以对特殊场景进行确认或者开发测试人员完善自测、测试流程,以便可以正常进入下一个开发测试流程。
从而通过asm对编译后的class进行分析,增量覆盖率可以直接定位到修改的方法的维度;并且将覆盖率和业务开发测试流程管理系统相结合,开发测试人员无需进行其他额外操作即可查看各个开发测试节点的覆盖率信息;业务开发测试流程管理系统基于覆盖率数据,具备了流程卡口功能,客观上降低了问题代码上线的风险。
通过执行上述步骤,本发明实施例提供的业务开发方法,通过在开发过程中利用本发明另一实施例的增量代码覆盖率检测方法进行检测,并对覆盖率的信息进行评价,具备了流程卡口功能,使得需求开发和测试的流程更加客观,大大降低了问题代码(未经测试的代码)因人为问题上线的风险,并且无需开发测试人员进行更多手动操作,实现了业务全周期自动化开发。
本发明实施例还提供了一种增量代码覆盖率检测装置,如图6所示,该增量代码覆盖率检测装置包括:
第一获取模块101,用于获取待检测代码的第一编译文件及待检测代码对应原始代码的第二编译文件,待检测代码为原始代码修改后的代码。详细内容参见上述方法实施例中步骤S101的相关描述,在此不再进行赘述。
第一处理模块102,用于对第一编译文件和第二编译文件进行分析对比,得到增量方法列表,增量方法列表为引起编译文件变化的方法集合。详细内容参见上述方法实施例中步骤S102的相关描述,在此不再进行赘述。
第二处理模块103,用于基于增量方法列表对第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包。详细内容参见上述方法实施例中步骤S103的相关描述,在此不再进行赘述。
第三处理模块104,用于对测试安装包进行测试,得到测试结果。详细内容参见上述方法实施例中步骤S104的相关描述,在此不再进行赘述。
第四处理模块105,用于基于测试结果中包含的标记信息与增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。详细内容参见上述方法实施例中步骤S105的相关描述,在此不再进行赘述。
通过上述各个组成部分的协同合作,本发明实施例提供的增量代码覆盖率检测装置,通过分析代码修改前后的编译文件,得到发生更改的方法集合,然后通过对编译文件中更改的方法进行标记,利用标记后的编译文件制作测试安装包进行测试,从而通过测试结果的标记信息得到代码方法维度的增量代码覆盖率,使得修改的代码可以直接定位到方法的维度,相比于定位到文件的维度,差异对比更加精准,相比于定位到行的维度,覆盖率的逻辑更加完整。
本发明实施例还提供了一种业务开发装置,如图7所示,该业务开发装置包括:
第二获取模块301,用于获取业务代码并进行编译,业务代码为基于待开发业务的预设业务需求开发的业务代码。详细内容参见上述方法实施例中步骤S301的相关描述,在此不再进行赘述。
第五处理模块302,用于采用如本发明另一实施例的增量代码覆盖率检测装置对业务代码进行检测,生成对应的增量代码覆盖率检测结果。详细内容参见上述方法实施例中步骤S302的相关描述,在此不再进行赘述。
第六处理模块303,用于判断增量代码覆盖率检测结果是否满足预设检测要求。详细内容参见上述方法实施例中步骤S303的相关描述,在此不再进行赘述。
第七处理模块304,用于当增量代码覆盖率检测结果满足预设检测要求时,得到满足预设业务需求的业务代码。详细内容参见上述方法实施例中步骤S304的相关描述,在此不再进行赘述。
通过上述各个组成部分的协同合作,本发明实施例提供的业务开发装置通过在开发过程中利用本发明另一实施例的增量代码覆盖率检测方法进行检测,并对覆盖率的信息进行评价,具备了流程卡口功能,使得需求开发和测试的流程更加客观,大大降低了问题代码(未经测试的代码)因人为问题上线的风险,并且无需开发测试人员进行更多手动操作,实现了业务全周期自动化开发。
根据本发明实施例还提供了一种电子设备,如图8所示,该电子设备可以包括处理器901和存储器902,其中处理器901和存储器902可以通过总线或者其他方式连接,图8中以通过总线连接为例。
处理器901可以为中央处理器(Central Processing Unit,CPU)。处理器901还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明方法实施例中的方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
上述电子设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-StateDrive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种增量代码覆盖率检测方法,其特征在于,包括:
获取待检测代码的第一编译文件及所述待检测代码对应原始代码的第二编译文件,所述待检测代码为所述原始代码修改后的代码;
对所述第一编译文件和所述第二编译文件进行分析对比,得到增量方法列表,所述增量方法列表为引起编译文件变化的方法集合;
基于所述增量方法列表对所述第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;
对所述测试安装包进行测试,得到测试结果;
基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述增量方法列表对所述第一编译文件进行标记,包括:
依次对所述第一编译文件中所述增量方法列表中各个方法所对应的编译内容进行标记。
3.根据权利要求1所述的方法,其特征在于,所述基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果,包括:
比较所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,确定所述增量方法列表中已测试的方法;
获取所述已测试的方法对应第一编译文件的第一编译内容以及所述增量方法列表中所有方法对应第一编译文件的第二编译内容;
从所述待检测代码中提取所述第一编译内容对应的第一源代码行以及所述第二编译内容对应的第二源代码行;
基于所述第一源代码行与所述第二源代码行的行数关系,生成所述增量代码覆盖率检测结果。
4.一种业务开发方法,其特征在于,包括:
获取业务代码并进行编译,所述业务代码为基于待开发业务的预设业务需求开发的业务代码;
采用如权利要求1-3任一项所述的增量代码覆盖率检测方法对所述业务代码进行检测,生成对应的增量代码覆盖率检测结果;
判断所述增量代码覆盖率检测结果是否满足预设检测要求;
当所述增量代码覆盖率检测结果满足预设检测要求时,得到满足所述预设业务需求的业务代码。
5.根据权利要求4所述的方法,其特征在于,还包括:
将满足所述预设业务需求的业务代码与所述待开发业务的主干代码合并后进行集成测试;
在集成测试通过后,生成所述待开发业务对应的产品。
6.根据权利要求4所述的方法,其特征在于,
当所述增量代码覆盖率检测结果不满足预设检测要求时,将所述增量代码覆盖率检测结果发送至代码研发端,以使研发人员进行业务代码确认;
接收确认后的业务代码,并返回所述采用如权利要求1-3任一项所述的增量代码覆盖率检测方法对所述业务代码进行检测,生成对应的增量代码覆盖率的检测结果的步骤。
7.一种增量代码覆盖率检测装置,其特征在于,包括:
第一获取模块,用于获取待检测代码的第一编译文件及所述待检测代码对应原始代码的第二编译文件,所述待检测代码为所述原始代码修改后的代码;
第一处理模块,用于对所述第一编译文件和所述第二编译文件进行分析对比,得到增量方法列表,所述增量方法列表为引起编译文件变化的方法集合;
第二处理模块,用于基于所述增量方法列表对所述第一编译文件进行标记,并基于标记后的第一编译文件生成测试安装包;
第三处理模块,用于对所述测试安装包进行测试,得到测试结果;
第四处理模块,用于基于所述测试结果中包含的标记信息与所述增量方法列表对应的标记信息,生成增量代码覆盖率检测结果。
8.一种业务开发装置,其特征在于,包括:
第二获取模块,用于获取业务代码并进行编译,所述业务代码为基于待开发业务的预设业务需求开发的业务代码;
第五处理模块,用于采用如权利要求7所述的增量代码覆盖率检测装置对所述业务代码进行检测,生成对应的增量代码覆盖率检测结果;
第六处理模块,用于判断所述增量代码覆盖率检测结果是否满足预设检测要求;
第七处理模块,用于当所述增量代码覆盖率检测结果满足预设检测要求时,得到满足所述预设业务需求的业务代码。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-6任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机从而执行权利要求1-6任一项所述的方法。
CN202110645298.1A 2021-06-09 2021-06-09 一种增量代码覆盖率检测方法及业务开发方法、装置 Pending CN113282504A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110645298.1A CN113282504A (zh) 2021-06-09 2021-06-09 一种增量代码覆盖率检测方法及业务开发方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110645298.1A CN113282504A (zh) 2021-06-09 2021-06-09 一种增量代码覆盖率检测方法及业务开发方法、装置

Publications (1)

Publication Number Publication Date
CN113282504A true CN113282504A (zh) 2021-08-20

Family

ID=77284065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110645298.1A Pending CN113282504A (zh) 2021-06-09 2021-06-09 一种增量代码覆盖率检测方法及业务开发方法、装置

Country Status (1)

Country Link
CN (1) CN113282504A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116701182A (zh) * 2023-05-10 2023-09-05 合芯科技有限公司 一种覆盖率标记文件更新方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116701182A (zh) * 2023-05-10 2023-09-05 合芯科技有限公司 一种覆盖率标记文件更新方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN108959059B (zh) 一种测试方法以及测试平台
CN106776338B (zh) 一种测试方法、装置及服务器
CN109522228B (zh) 接口自动化测试数据构造方法、装置、平台及存储介质
CN103186463B (zh) 确定软件的测试范围的方法和系统
CN107608873B (zh) 软件测试方法和系统及测试平台
Ell Identifying failure inducing developer pairs within developer networks
CN115658452A (zh) 埋点校验方法、埋点校验装置、可读存储介质、电子设备
US20210286706A1 (en) Graph-based method for inductive bug localization
CN112559343B (zh) 测试路径生成方法及相关设备
CN113282504A (zh) 一种增量代码覆盖率检测方法及业务开发方法、装置
CN117493188A (zh) 接口测试方法及装置、电子设备及存储介质
CN112685316A (zh) 代码执行路径的获取方法、装置、计算机设备及存储介质
CN110716859A (zh) 自动为修改的代码推送测试用例的方法及相关装置
CN116016270A (zh) 一种交换机测试管理方法、装置、电子设备和存储介质
CN113805861B (zh) 基于机器学习的代码生成方法、代码编辑系统及存储介质
CN112148590B (zh) 一种代码覆盖率的确定方法、装置及设备
CN114490413A (zh) 测试数据的准备方法及装置、存储介质和电子设备
CN113806231A (zh) 一种代码覆盖率分析方法、装置、设备和介质
CN111444093B (zh) 项目开发过程质量的确定方法、装置、计算机设备
CN113791980A (zh) 测试用例的转化分析方法、装置、设备及存储介质
CN113886262A (zh) 软件自动化测试方法、装置、计算机设备和存储介质
CN110968518A (zh) 自动化测试日志文件的分析方法及装置
CN112612882B (zh) 检阅报告生成方法、装置、设备和存储介质
CN116541305B (zh) 一种异常检测的方法、装置、电子设备及存储介质
CN111124901B (zh) 一种基于Android资源表的资源泄露检测方法

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