掌桥专利:专业的专利平台
掌桥专利
首页

代码覆盖率数据处理方法、装置、存储介质及计算机设备

文献发布时间:2024-04-18 20:02:18


代码覆盖率数据处理方法、装置、存储介质及计算机设备

技术领域

本申请涉及软件测试技术领域,尤其涉及一种代码覆盖率数据处理方法、装置、存储介质及计算机设备。

背景技术

在软件开发生命周期的各个阶段,往往需要在不同的部署环境上进行不同类型的测试工作,而后再对这些测试结果,特别是代码覆盖率的数据,进行评估。

目前,将不同阶段的测试结果进行合并评估时,都需要大量的人工介入,这样使得测试人员不仅需要关注测试本身,还需要为了得到代码覆盖率报告,脱离流程去进行手工选择数据,手工合并等操作,从而增加了测试操作的步骤和流程,使得测试效率降低。

发明内容

本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中将不同阶段的测试结果进行合并评估时,都需要大量的人工介入,这样不仅增加了测试操作的步骤和流程,还降低了测试效率的技术缺陷。

本申请提供了一种代码覆盖率数据处理方法,所述方法包括:

当目标域结束回归测试时,收集所述目标域的域信息;

通过所述域信息,确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息;

基于所述域信息和所述环境信息,获取所述目标域在至少一个环境中的代码覆盖率数据;

将获取到的代码覆盖率数据进行合并后得到合并数据,并根据所述合并数据对测试流程进行控制。

可选地,所述收集所述目标域的域信息,包括:

通过预先注入到所述目标域的部署环境上的Agent收集所述目标域的域信息。

可选地,所述域信息至少包括所述目标域的分支、域名、commit id;

所述通过所述域信息,确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息,包括:

获取预先记录的所有域的部署信息;

在所述部署信息中查找与所述目标域的分支、域名和commit id对应的至少一个环境名;

根据所述至少一个环境名确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息。

可选地,所述基于所述域信息和所述环境信息,获取所述目标域在至少一个环境中的代码覆盖率数据,包括:

根据所述域信息和所述环境信息,确定所述目标域部署的至少一个环境中注入的Agent;

通过至少一个Agent,获取所述目标域在至少一个环境中的代码覆盖率数据。

可选地,所述获取所述目标域在至少一个环境中的代码覆盖率数据,包括:

确定用户是否设置自定义获取规则;

若是,则根据所述自定义获取规则获取所述目标域在至少一个环境中的代码覆盖率数据;

否则,按照系统默认的获取规则获取所述目标域在至少一个环境中的代码覆盖率数据。

可选地,所述合并数据包括代码覆盖率信息;

所述根据所述合并数据对测试流程进行控制,包括:

根据所述代码覆盖率信息确定本次测试的测试情况;

当所述测试情况低于第一预设测试条件时,则本次测试流程不通过;

当所述测试情况低于第二预设测试条件时,则本次测试流程经上级审批后,根据审批结果确定本次测试流程是否通过;

当所述测试情况不低于所述第二预设测试条件时,则本次测试流程通过。

可选地,所述方法还包括:

将所述合并数据发送至相关测试人员,以使相关测试人员根据所述合并数据确定是否补充测试。

本申请还提供了一种代码覆盖率数据处理装置,包括:

信息收集模块,用于当目标域结束回归测试时,收集所述目标域的域信息;

信息确定模块,用于通过所述域信息,确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息;

数据获取模块,用于基于所述域信息和所述环境信息,获取所述目标域在至少一个环境中的代码覆盖率数据;

流程控制模块,用于将获取到的代码覆盖率数据进行合并后得到合并数据,并根据所述合并数据对测试流程进行控制。

本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述代码覆盖率数据处理方法的步骤。

本申请还提供了一种计算机设备,包括:一个或多个处理器,以及存储器;

所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如上述实施例中任一项所述代码覆盖率数据处理方法的步骤。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请提供的代码覆盖率数据处理方法、装置、存储介质及计算机设备,当目标域结束回归测试时,可以收集该目标域的域信息,并通过域信息来确定目标域部署并执行测试用例的至少一个环境对应的环境信息,接着,本申请可以基于域信息和环境信息来获取目标域在至少一个环境中的代码覆盖率数据,然后将获取到的代码覆盖率数据进行合并后得到合并数据,这样便可以根据合并数据对测试流程进行控制。该过程中,测试人员只需要关注测试本身,不再需要为了得到代码覆盖率报告,而脱离流程去进行手工选择数据,手工合并等操作,从而简化了操作步骤和流程,使测试效率得到提升。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种代码覆盖率数据处理方法的流程示意图;

图2为本申请实施例提供的相关测试人员根据合并数据确定是否补充测试的流程示意图;

图3为本申请实施例提供的一种代码覆盖率数据处理装置的结构示意图;

图4为本申请实施例提供的一种计算机设备的内部结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,将不同阶段的测试结果进行合并评估时,都需要大量的人工介入,这样使得测试人员不仅需要关注测试本身,还需要为了得到代码覆盖率报告,脱离流程去进行手工选择数据,手工合并等操作,从而增加了测试操作的步骤和流程,使得测试效率降低。基于此,本申请提出如下技术方案,具体参见下文:

在一个实施例中,如图1所示,图1为本申请实施例提供的一种代码覆盖率数据处理方法的流程示意图;本申请提供了一种代码覆盖率数据处理方法,所述方法可以包括:

S110:当目标域结束回归测试时,收集目标域的域信息。

本步骤中,由于在软件开发生命周期的各个阶段,往往需要在不同的部署环境上进行不同类型的测试工作,而后再对这些测试结果,特别是对代码覆盖率数据进行评估,这样便可以根据评估结果来确定是否进入下一测试流程。

基于此,本申请在进行域测试时,可以在目标域结束回归测试时,自动收集目标域的域信息,并利用目标域的域信息来获取与目标域相关的代码覆盖率数据,以此来对目标域的代码覆盖率数据进行评估。

其中,本申请获取的目标域的域信息包括但不限于目标域的分支、域名、commitId等。可以理解的是,域测试的域指的是程序的输入空间,测试的理想结果就是检验输入空间中的每一个输入元素是否都产生正确的结果。而输入空间又可以划分为不同的子空间,子空间的划分是由程序中分支语句的谓语决定的,每一子空间对应一种不同的计算。因此,本申请可以获取目标域的分支、域名、commit Id等,并通过获取到的域信息来确定目标域部署的,或曾经部署的环境对应的环境信息。

另外,由于本申请的代码覆盖率平台默认在回归测试通过后,进行代码覆盖率的自动合并。但该行为并不是强制性的,代码覆盖率平台提供了在域维度关闭该功能的开关供用户操作。因此,本申请可以根据用户需求检测开启自动合并功能的域,并将该域作为目标域后执行本申请的代码覆盖率数据处理方法。

S120:通过域信息,确定目标域部署并执行测试用例的至少一个环境对应的环境信息。

本步骤中,通过S110收集目标域的域信息后,本申请可以通过域信息来确定目标域部署并执行测试用例的至少一个环境对应的环境信息。

可以理解的是,本申请的代码覆盖率平台会记录所有域的部署信息,包括当前部署的和过去曾经部署过的环境。当本申请获取到目标域的域信息后,即可根据该域信息,如根据域名和分支,找到曾部署过的环境名,进而通过该环境名来获取相应的环境信息。

S130:基于域信息和环境信息,获取目标域在至少一个环境中的代码覆盖率数据。

本步骤中,通过S120确定目标域部署并执行测试用例的至少一个环境对应的环境信息后,本申请可以根据目标域的域信息以及部署并执行测试用例的至少一个环境对应的环境信息,来获取目标域在至少一个环境中的代码覆盖率数据,这样便可以对目标域的代码覆盖率数据进行评估,并根据评估结果来确定是否进入下一测试流程。

进一步地,本申请在获取目标域在至少一个环境中的代码覆盖率数据时,可以根据代码覆盖率平台默认的获取规则来获取,也可以根据用户自定义的获取规则来获取,具体可视实际情况进行设置,在此不做限制。

S140:将获取到的代码覆盖率数据进行合并后得到合并数据,并根据合并数据对测试流程进行控制。

本步骤中,通过S130获取到目标域在至少一个环境中的代码覆盖率数据后,本申请可以将获取到的代码覆盖率数据进行合并后得到合并数据,这样便可以根据合并数据来对测试流程进行控制。

具体地,通过本申请的上述步骤获取到至少一份代码覆盖率数据后,本申请可以对这些代码覆盖率数据进行交叉对比。通常情况下,本身可以根据代码覆盖率数据的并集得出最终的代码覆盖数据。例如,在A环境覆盖了A1代码块,B环境覆盖了B1代码块,那么合并的结果就是该域的A1、B1代码块都被覆盖了。当然,本申请还可以通过其他方式来将获取到的代码覆盖率数据进行合并,具体可视实际情况进行设置,在此不做限制。

当本申请获取到合并数据后,可以将合并数据反馈到持续部署流程(CD),作为流程结果的判断依据。同时,本申请也可以将合并数据,以消息、邮件等形式,实时反馈给相关测试人员。

上述实施例中,当目标域结束回归测试时,可以收集该目标域的域信息,并通过域信息来确定目标域部署并执行测试用例的至少一个环境对应的环境信息,接着,本申请可以基于域信息和环境信息来获取目标域在至少一个环境中的代码覆盖率数据,然后将获取到的代码覆盖率数据进行合并后得到合并数据,这样便可以根据合并数据对测试流程进行控制。该过程中,测试人员只需要关注测试本身,不再需要为了得到代码覆盖率报告,而脱离流程去进行手工选择数据,手工合并等操作,从而简化了操作步骤和流程,使测试效率得到提升。

在一个实施例中,S110中收集所述目标域的域信息,可以包括:

S111:通过预先注入到所述目标域的部署环境上的Agent收集所述目标域的域信息。

本实施例中,代码覆盖率平台在收集目标域的域信息时,可以通过过预先注入到目标域的部署环境上的Agent收集目标域的域信息,这样便可以根据收集到的目标域的域信息来获取目标域的代码覆盖率数据。

可以理解的是,本申请代码覆盖率平台会预先在每一个部署环境上注入一个Agent,每一个部署环境上的Agent负责收集域的相关信息。因此,当本申请检测到目标域结束回归测试时,可以通过该目标域的部署环境上注入的Agent来收集目标域的域信息。

在一个实施例中,所述域信息至少包括所述目标域的分支、域名、commit id。

S120中通过所述域信息,确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息,可以包括:

S121:获取预先记录的所有域的部署信息。

S122:在所述部署信息中查找与所述目标域的分支、域名和commit id对应的至少一个环境名。

S123:根据所述至少一个环境名确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息。

本实施例中,由于本申请的代码覆盖率平台会记录所有域的部署信息,包括当前部署的和过去曾经部署过的环境。当本申请获取到目标域的域信息后,即可根据该域信息,如根据域名和分支,找到曾部署过的环境名,进而通过该环境名来获取相应的环境信息。

基于此,本申请在确定目标域部署并执行测试用例的至少一个环境对应的环境信息时,可以先获取预先记录的所有域的部署信息,然后在部署信息中查找与目标域的分支、域名和commit id对应的至少一个环境名,接着根据该至少一个环境名确定目标域部署并执行测试用例的至少一个环境对应的环境信息,如部署时的域名、分支、commit Id、环境名、IP等。这样便可以通过该环境信息以及域信息来获取目标域的代码覆盖率数据。

在一个实施例中,S130中基于所述域信息和所述环境信息,获取所述目标域在至少一个环境中的代码覆盖率数据,可以包括:

S131:根据所述域信息和所述环境信息,确定所述目标域部署的至少一个环境中注入的Agent。

S132:通过至少一个Agent,获取所述目标域在至少一个环境中的代码覆盖率数据。

本实施例中,在基于域信息和环境信息获取目标域在至少一个环境中的代码覆盖率数据时,本申请可以先根据域信息和环境信息来确定目标域部署的至少一个环境中注入的Agent,这其中包括当前部署的环境中注入的Agent,也包括曾经部署过的环境中注入的Agent。接着,本申请可以通过至少一个Agent来获取目标域在至少一个环境中的代码覆盖率数据。

举例来说,本申请在目标域部署时同步注入Agent,该Agent会一直监听并记录目标域的代码执行情况。当代码覆盖平台获取到目标域的域信息和环境信息后,可以根据获取到的域名、分支和环境名,找到唯一的Agent,并连接该Agent,从而通过Agent获取到目标域的代码执行数据(代码覆盖率数据)。代码覆盖平台每连接一个Agent,都会获取到一份代码覆盖率数据,当连接所有的Agent后,便会获取到目标域在所有环境中的代码覆盖率数据。

在一个实施例中,S130或S132中获取所述目标域在至少一个环境中的代码覆盖率数据,可以包括:

S1321:确定用户是否设置自定义获取规则;若是,则执行S1322,否则,执行S1323。

S1322:根据所述自定义获取规则获取所述目标域在至少一个环境中的代码覆盖率数据。

S1323:按照系统默认的获取规则获取所述目标域在至少一个环境中的代码覆盖率数据。

本实施例中,在获取目标域在至少一个环境中的代码覆盖率数据时,可以根据代码覆盖率平台默认的获取规则来获取,也可以根据用户自定义的获取规则来获取。本申请可以设置用户自定义获取规则优先。因此,当本申请在获取目标域在至少一个环境中的代码覆盖率数据时,可以先判断用户是否设置自定义获取规则,若是,则根据自定义获取规则获取目标域在至少一个环境中的代码覆盖率数据,否则,按照系统默认的获取规则获取目标域在至少一个环境中的代码覆盖率数据。

具体而言,本申请中代码覆盖率数据的获取规则包括两部分,第一部分是系统默认的获取规则,第二部分为用户自定义获取规则。并且,由于后续在出具代码覆盖率报告等步骤的时候,需要根据源代码来进行。因此,在系统默认的获取规则下,只需要统计系统能够获取到源代码的代码覆盖情况,而将第三方依赖包及无法获取到源代码的那些代码块忽略掉;而在用户自定义获取规则下,则可以根据用户自定义想要包含哪些代码、排除哪些代码的规则来获取相应的代码覆盖率数据即可。

在一个实施例中,所述合并数据可以包括代码覆盖率信息。

S140中根据所述合并数据对测试流程进行控制,可以包括:

S141:根据所述代码覆盖率信息确定本次测试的测试情况。

S142:当所述测试情况低于第一预设测试条件时,则本次测试流程不通过。

S143:当所述测试情况低于第二预设测试条件时,则本次测试流程经上级审批后,根据审批结果确定本次测试流程是否通过。

S144:当所述测试情况不低于所述第二预设测试条件时,则本次测试流程通过。

本实施例中,在根据合并数据对测试流程进行控制时,本申请可以根据合并数据中的代码覆盖率信息来确定本次测试的测试情况,若测试情况低于第一预设测试条件时,则表示本次测试流程不通过,需要再次进行测试,若测试情况低于第二预设测试条件时,则表示本次测试流程需要经上级审批后,根据审批结果确定是否通过测试,而当测试情况不低于第二预设测试条件时,则表示本次测试流程通过。

在一种具体的实施方式中,本申请的合并数据主要包括:域名、分支名、环境名、代码差异覆盖率、代码行覆盖率、代码分支覆盖率及代码覆盖详情的报告链接。通常情况下,本申请会根据目标域的代码差异覆盖率和代码行覆盖率来进行流程控制。

例如,当代码差异覆盖率不低于85%时,流程允许通过;当代码差异覆盖率低于85%时,需要上级审批才可以继续流程;当代码差异覆盖率低于70%时,流程不允许通过,并提示用户需要执行更多的测试以提升代码覆盖率。

在一个实施例中,如图2所示,图2为本申请实施例提供的相关测试人员根据合并数据确定是否补充测试的流程示意图;所述方法还可以包括:

S150:将合并数据发送至相关测试人员,以使相关测试人员根据合并数据确定是否补充测试。

本实施例中,在得到合并数据后,本申请还可以将合并数据发送至相关测试人员,以使相关测试人员根据合并数据确定是否补充测试。

具体地,由于本申请的合并数据包含了域名、分支名、环境名、代码差异覆盖率、代码行覆盖率、代码分支覆盖率及代码覆盖详情的报告链接。因此,当本申请将合并数据发送至相关测试人员后,相关测试人员可以通过代码覆盖详情报告,查看哪些代码被覆盖了,哪些没有,这样便可以根据报告及结果数据,决定是否需要补充进行更多的测试。

下面对本申请实施例提供的代码覆盖率数据处理装置进行描述,下文描述的代码覆盖率数据处理装置与上文描述的代码覆盖率数据处理方法可相互对应参照。

在一个实施例中,如图3所示,图3为本申请实施例提供的一种代码覆盖率数据处理装置的结构示意图;本申请还提供了一种代码覆盖率数据处理装置,可以包括信息收集模块210、信息确定模块220、数据获取模块230、流程控制模块240,具体包括如下:

信息收集模块210,用于当目标域结束回归测试时,收集所述目标域的域信息。

信息确定模块220,用于通过所述域信息,确定所述目标域部署并执行测试用例的至少一个环境对应的环境信息。

数据获取模块230,用于基于所述域信息和所述环境信息,获取所述目标域在至少一个环境中的代码覆盖率数据。

流程控制模块240,用于将获取到的代码覆盖率数据进行合并后得到合并数据,并根据所述合并数据对测试流程进行控制。

上述实施例中,当目标域结束回归测试时,可以收集该目标域的域信息,并通过域信息来确定目标域部署并执行测试用例的至少一个环境对应的环境信息,接着,本申请可以基于域信息和环境信息来获取目标域在至少一个环境中的代码覆盖率数据,然后将获取到的代码覆盖率数据进行合并后得到合并数据,这样便可以根据合并数据对测试流程进行控制。该过程中,测试人员只需要关注测试本身,不再需要为了得到代码覆盖率报告,而脱离流程去进行手工选择数据,手工合并等操作,从而简化了操作步骤和流程,使测试效率得到提升。

在一个实施例中,本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述代码覆盖率数据处理方法的步骤。

在一个实施例中,本申请还提供了一种计算机设备,包括:一个或多个处理器,以及存储器。

所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如上述实施例中任一项所述代码覆盖率数据处理方法的步骤。

示意性地,如图4所示,图4为本申请实施例提供的一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图4,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的代码覆盖率数据处理方法。

计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如WindowsServer TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 数据处理方法、装置、计算机设备及计算机可读存储介质
  • 数据仓库内数据处理方法、装置、计算机设备和存储介质
  • 一种数据处理方法、数据处理装置、计算机设备及可读存储介质
  • 财报数据处理方法、装置、计算机设备和存储介质
  • 测试数据表的处理方法、装置、计算机设备和存储介质
  • 代码覆盖率统计方法、装置、计算机设备和存储介质
  • 代码覆盖率测试方法、装置、计算机设备及存储介质
技术分类

06120116580969