CN117194236A - 一种覆盖率数据的确定方法、装置、电子设备及存储介质 - Google Patents
一种覆盖率数据的确定方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117194236A CN117194236A CN202311118736.4A CN202311118736A CN117194236A CN 117194236 A CN117194236 A CN 117194236A CN 202311118736 A CN202311118736 A CN 202311118736A CN 117194236 A CN117194236 A CN 117194236A
- Authority
- CN
- China
- Prior art keywords
- test
- coverage rate
- file
- application
- target function
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012360 testing method Methods 0.000 claims abstract description 296
- 230000006870 function Effects 0.000 claims abstract description 96
- 230000006835 compression Effects 0.000 claims description 30
- 238000007906 compression Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 6
- 238000011161 development Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 10
- 230000003068 static effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种覆盖率数据的确定方法、装置、电子设备及存储介质,涉及计算机领域,尤其涉及JAVA应用开发技术领域。该方法包括:在接收到输入操作后,获取查询信息,查询测试项目的覆盖率数据,测试项目包括测试标识,测试标识用于标识被测应用的目标功能;然后根据预设对应关系,确定目标功能对应的测试数据,测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,输出被测应用对应的覆盖率数据。由此,可以提高查看报告的灵活性,提高性能,避免查询报告数量多时,加载页面时间过长。
Description
技术领域
本申请涉及计算机技术领域,尤其JAVA开发技术领域,具体涉及一种覆盖率数据的确定方法、装置、电子设备及存储介质。
背景技术
Jacoco是一个开源的代码覆盖统计工具,支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖的代码部分,通过Jacoco可以生成代码的覆盖率数据。
但是,通过Jacoco生成的代码的覆盖率数据一般以静态的超文本标记语言(HyperText Markup Language,html)文件的形式呈现,而静态的超文本标记语言文件格式固定,无法定制化,不能满足用户的需求。
发明内容
本申请提供一种覆盖率数据的确定方法、装置、电子设备及存储介质,以解决无法基于用户需求确定代码的覆盖率数据的技术问题。本申请的技术方案如下:
根据本申请涉及的第一方面,提供一种覆盖率数据的确定方法,应用于覆盖率平台,该方法包括:响应于输入操作,获取查询信息,该查询信息用于查询测试项目的覆盖率数据,该测试项目包括测试标识,测试标识用于标识被测应用的目标功能;根据预设对应关系,确定目标功能对应的测试数据,测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,确定并输出被测应用对应的覆盖率数据。
在一种可能的实施方式中,上述方法还包括:接收来自Jenkins平台上传的目标测试应用的测试文件包,测试文件包包括目标测试应用的源码压缩包、class文件压缩包以及覆盖率exec文件;基于class文件解析覆盖率exec文件,得到目标测试应用对应的测试文件,并对源码压缩包进行解压,得到目标测试应用的源码;测试文件包括测试数据代码包、类、方法、覆盖到的以及未覆盖到的数据;为测试数据配置对应的测试ID,并将测试数据与测试ID之间的对应关系以及源码存储至数据库。
在一种可能的实施方式中,上述“根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,得到被测应用对应的覆盖率数据”方法还包括:统计被测应用在执行目标功能时运行的代码的行数以及目标功能对应的源码的行数;根据被测应用在执行目标功能时运行的代码的行数与目标功能对应的源码的行数的比值,确定并输出被测应用对应的覆盖率数据。
根据上述技术手段,当用户选择指定项目、测试记录ID后,后端从数据库查询指定覆盖率数据返回给前端,前端将覆盖率报告数据呈现给用户。如此,用户可以通过标识来查找到覆盖率数据。
根据本申请涉及的第二方面,提供了一种覆盖率数据的确定方法,应用于Jenkins平台,该方法包括:获取被测应用的源码,并分别对源码进行压缩、编译,得到源码对应的源码压缩包及class文件;获取被测应用的覆盖率exec文件,覆盖率exec文件为在测试被测应用的目标功能时生成的文件;向覆盖率平台发送测试文件包,测试文件包包括被测应用的源码压缩包、class文件以及覆盖率exec文件,测试文件包用于确定被测应用对应的覆盖率数据。
在一种可能的实施方式中,上述“获取被测应用的覆盖率exec文件”包括:在手动或自动化测试被测应用的情况下,基于预设的指令从测试平台处获取被测应用的覆盖率exec文件。
在一种可能的实施方式中,上述“获取被测应用的覆盖率exec文件”还包括:在使用单元测试的方式对被测应用进行测试的情况下,测试被测应用的目标功能,生成被测应用的覆盖率exec文件。
根据上述技术手段,Jenkins平台会获得测试功能的源码,并进行编译,生成class文件,并获取exec文件,为覆盖率平台打好数据基础。
根据本申请提供的第三方面,提供一种覆盖率数据的确定装置,应用于测试覆盖率数据,该装置包括:获取单元,用于响应于输入操作,获取查询信息,查询信息用于查询测试项目的覆盖率数据,测试项目包括测试标识,测试标识用于标识被测应用的目标功能。确定单元,用于根据预设对应关系,确定目标功能对应的测试数据,测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;确定单元,还用于根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,确定并输出被测应用对应的覆盖率数据。
在一种可能的实施方式中,该装置还可以包括接收单元,用于接收来自Jenkins平台上传的目标测试应用的测试文件包,该测试文件包包括目标测试应用的源码压缩包、class文件压缩包以及覆盖率exec文件。确定单元,还用于基于clas s文件解析覆盖率exec文件,得到目标测试应用对应的测试文件,并对源码压缩包进行解压,得到目标测试应用的源码。该测试文件包括测试数据代码包、类、方法、覆盖到的以及未覆盖到的数据;配置单元,还用于为测试数据配置对应的测试ID,并将测试数据与测试ID之间的对应关系以及源码存储至数据库。
在一种可能的实施方式中,该确定单元还用于,统计被测应用在执行目标功能时运行的代码的行数以及目标功能对应的源码的行数;根据被测应用在执行目标功能时运行的代码的行数与目标功能对应的源码的行数的比值,确定并输出被测应用对应的覆盖率数据。
根据本申请提供的第四方面,提供一种覆盖率报告查询装置,应用于Jenkins平台,该装置包括:获取单元,用于获取被测应用的源码,并分别对源码进行压缩、编译,得到源码对应的源码压缩包及clas s文件;获取单元,还用于获取被测应用的覆盖率exec文件,覆盖率exec文件为在测试被测应用的目标功能时生成的文件;发送单元,用于向覆盖率平台发送测试文件包,测试文件包包括被测应用的源码压缩包、class文件以及覆盖率exec文件,测试文件包用于确定被测应用对应的覆盖率数据。
在一种可能的实施方式中,发送单元具体用于在手动或自动化测试被测应用的情况下,基于预设的指令从测试平台处获取被测应用的覆盖率exec文件。
在一种可能的实施方式中,发送单元具体用于在使用单元测试的方式对被测应用进行测试的情况下,测试被测应用的目标功能,生成被测应用的覆盖率exec文件。
根据本申请提供的第五方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面及其任一种可能的实施方式的方法。
根据本申请提供的第六方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述第一方面中及其任一种可能的实施方式的方法。
根据本申请提供的第七方面,提供一种计算机程序产品,计算机程序产品包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面及其任一种可能的实施方式的方法。
由此,本申请的上述技术特征具有以下有益效果:
(1)覆盖率平台可以基于用户的查询操作,根据预设对应关系,确定与查询信息相关的测试数据。该测试数据可以包括被测应用在执行目标功能时运行的代码以及该被测应用的源码。如此,基于该测试数据,覆盖率平台可以生成被测应用的覆盖率数据。由于该被测应用是用户查询的应用,那么被测应用的覆盖率数据也即是用户需要的数据。也即本申请中,覆盖率平台可以基于用户的查询,生成相关的覆盖率数据。相较于静态的HTML格式,本申请实施例提供的技术方案,可以基于用户的需求,确定代码的覆盖率,提高了用户的体验。
(2)Jenkins平台在获取到源码及相关测试数据之后,可以上传到覆盖率平台。如此,覆盖率平台可以基于Jenkins平台上传的数据,确定源码与测试标识之间的对应关系,并将该对应关系以及测试数据,存储到数据库,以便于用户可以通过覆盖率平台查询相关测试数据,满足了用户的需求。
(3)由于Jacoco原生的测试报告是静态的超文本标记语言文件,使用静态超文本标记语言文件来做平台化的覆盖率报告系统存在一定局限性,只能通过固定格式来呈现报告,本申请可以通过项目以及测试标识来进行覆盖率报告的查询,提高了查询的灵活性。
(4)报告文件只能存储到磁盘,通过web容器开放目录方式进行在线浏览,当报告文件数量越来越多时,加载出报告页面的时间越来越长,而本申请在前端查看覆盖率报告时,覆盖率平台实时通过后端接口从数据库查询数据,提高了查看报告的灵活性,同时也保证了性能。
需要说明的是,第二方面至第七方面中的任一种实现方式所带来的技术效果可参见第一方面中对应实现方式所带来的技术效果,此处不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是本公开实施例提供的一种覆盖率数据的确定系统的结构示意图;
图2是本公开实施例提供的又一种覆盖率数据的确定方法的流程示意图;
图3是本公开实施例提供的又一种覆盖率数据的确定方法的流程示意图;
图4是本公开实施例提供的手工或自动化测试覆盖率报告生成、展示方法流程图;
图5是本公开实施例提供的单元测试覆盖率报告生成、展示方法流程图;
图6是本公开实施例提供的一种覆盖率数据的确定装置的框图;
图7是本公开实施例提供的又一种覆盖率数据的确定装置的框图;
图8是本公开实施例提供的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,本领域技术人员可由本说明书中所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的情况下进行各种修饰或改变。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
通常情况下,覆盖率是用来度量测试完整性的一种手段,例如:一个项目包含100行代码,在经过测试后,统计发现执行的代码共有70行,未执行到的代码有30行,那么可以简单理解为这个项目的代码行覆盖率为70%,未覆盖的代码行为30%;根据所得到的覆盖率数据,可以很清楚的了解到哪些代码没有被执行过,然后经过不断完善测试,来保证测试的完整性。
Jacoco是一种面向java的开源代码覆盖率工具,Jacoco以java代理模式运行,能够在运行测试时检测字节码。Jacoco可以检测每个指令,并显示每个测试过程中要执行的行代码。Jacoco不仅能对本地的代码进行检查,还可以与持续集成工具Jenkins平台进行集成,这样就可以在代码提交后自动对提交的代码进行覆盖率的验证,保证提交代码的质量。
通过上述方案可知,相关技术在获取代码的覆盖率数据的过程中,可以通过使用Jacoco工具,得到处理结果,然后基于该处理结果,以固定格式通过网页展现出覆盖率报告。然而,Jacoco生成的代码的覆盖率数据一般是以静态的超文本标记语言文件的形式呈现,而静态的超文本标记语言文件的文件格式固定,无法定制化,不能够方便形象的展示出来且不方便查找。
为了解决覆盖率报告格式固定的问题,本申请提供了一种覆盖率数据的确定方法、装置、电子设备及存储介质。响应于输入操作,获取查询信息,查询信息用于查询测试项目的覆盖率数据,测试项目包括测试标识,测试标识用于标识被测应用的目标功能;根据预设对应关系,确定目标功能对应的测试数据,测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,确定并输出被测应用对应的覆盖率数据。
一种示例中,如图1所示,本申请实施例提供的一种覆盖率数据的确定系统,该系统可以包括覆盖率平台、Jenkins平台。覆盖率平台可以与Jenkins平台通信连接。
其中,覆盖率平台可以用于解析数据、保存数据以及处理数据。覆盖率平台可以从Jenkins平台获取到所需要的class文件以及覆盖率exec文件,然后进行解析,得到代码包、类、方法等测试数据,并将所得到的代码包、类、方法、覆盖到的数据和未覆盖到的数据以及源码与测试标识对应关系保存至数据库。注意覆盖率平台在存储源码时,是按照每个类文件来存储,如果存储文件时计算出来的文件MD5值相同,则不进行重复存储,只存储文件与测试标识对应关系的对应关系。如此,用户可以通过覆盖率平台方便、快速查询到代码的覆盖率数据。
本申请实施例中,覆盖率平台可以为服务器、计算机等设备。
其中,Jenkins平台可以用于获取数据源码,得到class文件以及exec文件。其中class文件为编译源码生成的文件,exec文件在手动测试或自动化测试中是从测试平台直接通过预设命令获取的,而在单元测试中是在Jenkins平台下执行单元测试时自动生成的。Jenkins平台可以为具有Jenkins工具的服务器。
又一种示例中,本申请实施例提供的系统还可以包括测试平台。测试平台可以用于配置测试环境,并基于手动或者自动化测试操作,运行测试应用的代码。配置测试环境是指通过选项开启Jacoco代理,并通过Jacoco在class文件被加载之前进行插入预处理,用于收集运行时的代码执行数据。
如图2所示,本申请实施提供的一种覆盖率数据的确定方法,包括下述S201-S203。
S201、响应于输入操作,覆盖率平台获取查询信息。
其中,输入操作可以是指用户在覆盖率平台的查询界面输入需要查询的测试项目的操作。例如,在查询界面输入的信息可以包括测试项目的名称、测试标识等。项目名称可以是指测试功能对应的项目。测试标识用于标识被测应用的目标功能。查询信息可以用于查询测试项目的覆盖率数据。被测应用可以为微服务应用或者能够提供微服务的应用,例如,可以为车联网以及一些在线应用商店。被测应用的目标功能可以是指被测应用能够实现的功能或者具有的功能。例如,可以为对智能交通的监控功能。
S202、覆盖率平台根据预设对应关系,确定目标功能对应的测试数据。
其中,预设对应关系可以包括源码(此处的源码为已经执行过覆盖率测试的源码)与测试标识ID的关系。目标功能对应的测试数据可以包括行覆盖率、方法覆盖率以及类覆盖率。测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识ID以及每个测试标识对应的测试数据。测试标识为测试过程中根据对应配置整合成的数据,例如可以为对应流水线标记号加随机数据。
一种示例中,该预设对应关系可以为覆盖率平台预先配置的,或者,为覆盖率平台基于Jenkins平台上传的测试数据生成的。具体的,可以参照下述实施例的描述。
S203、覆盖率平台根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,确定并输出被测应用对应的覆盖率数据。
其中,覆盖率数据是指被测应用在执行目标功能时运行的代码数量与目标功能对应的源码的数量之间的比值。
一种可能的实现方式中,覆盖率平台可以统计被测应用在执行目标功能时运行的代码的行数以及目标功能对应的源码的行数,并根据被测应用在执行目标功能时运行的代码的行数与目标功能对应的源码的行数的比值,确定并输出被测应用对应的覆盖率数据。
一种示例中,覆盖率平台可以根据上述用户输入的数据(如项目、测试标识),在数据库中查询与该数据匹配的覆盖率数据,并将该覆盖率数据通过网页图表化的形式展现。
例如,在确定被测应用对应的覆盖率数据之后,可以生成覆盖率数据报告,并通过可视化的方式展示该覆盖率数据报告。覆盖率数据包括可以图表化的形式的覆盖率数据。
基于图2所示的技术方案,本申请实施例中,覆盖率平台可以基于用户的查询操作,根据预设对应关系,确定与查询信息相关的测试数据。该测试数据可以包括被测应用在执行目标功能时运行的代码以及该被测应用的源码。如此,基于该测试数据,覆盖率平台可以生成被测应用的覆盖率数据。由于该被测应用是用户查询的应用,那么被测应用的覆盖率数据也即是用户需要的数据。也即,本申请实施例中,覆盖率平台可以基于用户的查询,生成相关的覆盖率数据。相较于静态的HTML格式,本申请实施例提供的技术方案,可以基于用户的需求,确定代码的覆盖率,提高了用户的体验。
一些实施例中,如图3所示,本申请实施例提供的方法还可以包括:
S301、Jenkins平台获取到被测应用的源码,并分别源码进行压缩、编译,得到源码对应的源码压缩包及class文件。
其中,class文件为java源程序在进行编译后生成的字节码文件。
S302、Jenkins平台获取被测应用的覆盖率exec文件,并向覆盖率平台发送测试文件包。相应的,覆盖率平台接收来自Jenkins平台的测试文件包。
其中,覆盖率exec文件为在测试被测应用的目标功能时生成的文件。测试文件包包括被测应用的源码压缩包、class文件以及覆盖率exec文件,测试文件包用于确定被测应用对应的覆盖率数据。
一种可能的实现方式中,在手工测试或自动化测试的场景下,Jenkins平台获取覆盖率exec文件是通过测试平台获取的。测试平台在开启代理之后,可以响应于手动或者自动化测试,得到被测应用的覆盖率exec文件。例如Jenkins平台通过预设命令(如Jacocodump)来获取exec文件。
又一种可能的实现方式中,在单元测试的场景下,Jenkins平台可以运行源码,并在运行源码后,生成覆盖率exec文件。
本本申请实施例中,手工测试可以是指:测试平台可以响应于测试人员的测试步骤,依次执行对应的测试操作,得到覆盖率exec文件。自动化测试可以是指根据测试步骤汇总脚本,自动执行脚本中的测试步骤,生成覆盖率exec文件。单元测试可以是指通过执行测试代码,生成对应结果的过程。
S303、覆盖率平台基于class文件解析覆盖率exec文件,得到被测应用的数据代码包、类、方法、覆盖到的以及未覆盖到的数据等。
S304、覆盖率平台将数据代码包、类、方法、覆盖到的以及未覆盖到的数据以及源码与测试标识的关系存储至数据库。
基于图3的技术方案,Jenkins平台在获取到源码及相关测试数据之后,可以上传到覆盖率平台。如此,覆盖率平台可以基于Jenkins平台上传的数据,确定源码与测试标识之间的对应关系,并将该对应关系以及测试数据,存储到数据库,以便于用户可以通过覆盖率平台查询相关测试数据,满足了用户的需求。
下面分别对上手动或自动化测试场景以及单元测试场景生成并展示覆盖率报告的过程进行说明。
一、使用手工或自动化测试的方式生成并展示覆盖率报告的方法。
一种示例中,如图4所示,该方法可以包括S401~S408。
S401、响应于对被测应用进行参数配置的操作,测试平台开启Jacoco代理部署应用。
其中,测试平台开启Jacoco代理后,可以在class文件被加载之前进行插入预处理,用于搜集运行时的代码执行数据。
S402、测试平台启动测试执行,进行手工测试或者自动化测试。
S403、Jenkins平台从测试平台获取被测应用的源码,并对源码进行编译、压缩,生成对应的class文件及源码压缩包。
S404、Jenkins平台基于Jacoco dump命令从测试平台处获取被测应用的覆盖率exec文件。
S405、Jenkins平台将获得的源码压缩包、class文件压缩包以及覆盖率exec文件上传到覆盖率平台。
S406、覆盖率平台会基于class文件解析覆盖率exec文件。
S407、覆盖率平台将解析出来的代码包、类、方法以及代码行覆盖和未覆盖数据保存至数据库,同时还会存储源码、被测试后的代码与测试记录ID的关系至数据库。
S408、响应于用户输入操作,覆盖率平台获取查询信息,并可根据测试标识ID查找到代码覆盖率报告。
基于图4的技术方案,在手动或自动化测试情况下,测试平台开启Jacoco代理部署应用,开启Jacoco代理,然后Jenkins平台从测试平台获取源码及相关测试数据,上传到覆盖率平台。如此,覆盖率平台可以基于Jenkins平台上传的数据,确定源码与测试标识之间的对应关系,并将该对应关系以及测试数据,存储到数据库,以便于用户可以通过覆盖率平台查询相关测试数据,满足了用户的需求。
二、使用单元测试的方式生成并展示覆盖率报告的方法。
一种示例中,如图5所示,该方法可以包括S501~S506。
S501、Jenkins平台获取被测应用的源码,并对源码进行编译、压缩,生成对应的class文件及源码压缩包。
S502、Jenkins平台执行单元测试,获取被测应用的覆盖率exec文件。
S503、Jenkins平台将获得的源码压缩包、class文件压缩包以及覆盖率exec文件上传到覆盖率平台。
S504、覆盖率平台基于class文件解析覆盖率exec文件。
S505、覆盖率平台将解析出来的代码包、类、方法以及代码行覆盖和未覆盖数据保存至数据库。同时还会存储源码、被测试后的代码与测试记录ID的关系至数据库。
S506、响应于用户输入操作,覆盖率平台获取查询信息,根据测试标识ID查找到代码覆盖率报告。
基于图5的技术方案,在单元测试下,Jenkins平台获取到源码及相关测试数据之后,上传到覆盖率平台。然后,覆盖率平台可以基于Jenkins平台上传的数据,确定源码与测试标识之间的对应关系,并将该对应关系以及测试数据,存储到数据库,以便于用户可以通过覆盖率平台查询相关测试数据,满足了用户的需求。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,指令处理装置或电子设备包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
申请实施例可以根据上述方法,示例性的对指令处理装置或电子设备进行功能模块的划分,例如,指令处理装置或电子设备可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6为本申请实施例提供的一种覆盖率数据的确定装置示意图。该装置应用于覆盖率平台。参照图6,覆盖率数据的确定装置包括获取单元601、以及确定单元602。
获取单元601,用于响应于输入操作,获取查询信息,查询信息用于查询测试项目的覆盖率数据,测试项目包括测试标识,测试标识用于标识被测应用的目标功能。
在一种可能的实施方式中,获取单元601还用于:接收来自Jenkins平台上传的目标测试应用的测试文件包,测试文件包包括目标测试应用的源码压缩包、class文件压缩包以及覆盖率exec文件。
确定单元602,用于根据预设对应关系,确定目标功能对应的测试数据,测试数据包括被测应用在执行目标功能时运行的代码以及目标功能对应的源码,预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;还用于根据被测应用在执行目标功能时运行的代码以及目标功能对应的源码,确定被测应用对应的覆盖率数据。
在一种可能的实施方式中,确定单元602具体用于:基于class文件解析覆盖率exec文件,得到目标测试应用对应的测试文件,并对源码压缩包进行解压,得到目标测试应用的源码;测试文件包括测试数据代码包、类、方法、覆盖到的以及未覆盖到的数据。
在一种可能的实施方式中,确定单元602具体用于:为测试数据配置对应的测试ID,并将测试数据与测试ID之间的对应关系以及源码存储至数据库。
图7为本申请实施例提供的一种覆盖率数据的确定装置示意图。该装置用于Jenkins平台。参照图7,覆盖率数据的确定装置包括获取单元701、以及发送单元702。
获取单元701,用于获取被测应用的源码,并分别对源码进行压缩、编译,得到源码对应的源码压缩包及class文件;获取单元701,还用于获取被测应用的覆盖率exec文件,覆盖率exec文件为在测试被测应用的目标功能时生成的文件;发送单元702,用于向覆盖率平台发送测试文件包,测试文件包包括被测应用的源码压缩包、class文件以及覆盖率exec文件,测试文件包用于确定被测应用对应的覆盖率数据。
在一种可能的实施方式中,发送单元702具体用于在手动或自动化测试被测应用的情况下,基于预设的指令从测试平台处获取被测应用的覆盖率exec文件。
在一种可能的实施方式中,发送单元702具体用于在使用单元测试的方式对被测应用进行测试的情况下,测试被测应用的目标功能,生成被测应用的覆盖率exec文件。
图8是根据一示例性实施例示出的一种电子设备的框图。如图8所示,电子设备800包括但不限于:处理器801和存储器802。
其中,上述的存储器802,用于存储上述处理器801的可执行指令。可以理解的是,上述处理器801被配置为执行指令,以实现上述实施例中的覆盖率数据确定的方法。
需要说明的是,本领域技术人员可以理解,图8中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图8所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器801是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器801可包括一个或多个处理单元。可选的,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。
存储器802可用于存储软件程序以及各种数据。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能模块所需的应用程序(比如确定单元、处理单元等)等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器802,上述指令可由电子设备800的处理器801执行以实现上述实施例中的方法。
在实际实现时,图6中的获取单元601和确定单元602,图7中的获取单元701和发送单元702均可以由图8中的处理器801调用存储器802中存储的计算机程序实现。其具体的执行过程可参考上实施例中的方法部分的描述,这里不再赘述。
可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,本申请实施例还提供了一种包括一条或多条指令的计算机程序产品,该一条或多条指令可以由电子设备的处理器801执行以完成上述实施例中的方法。
需要说明的是,上述计算机可读存储介质中的指令或计算机程序产品中的一条或多条指令被电子设备的处理器执行时实现上述方法实施例的各个过程,且能达到与上述方法相同的技术效果,为避免重复,这里不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全分类部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全分类部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全分类部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全分类部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种覆盖率数据的确定方法,其特征在于,应用于覆盖率平台,所述方法包括:
响应于输入操作,获取查询信息,所述查询信息用于查询测试项目的覆盖率数据,所述测试项目包括测试标识,所述测试标识用于标识被测应用的目标功能;
根据预设对应关系,确定所述目标功能对应的测试数据,所述测试数据包括所述被测应用在执行所述目标功能时运行的代码以及所述目标功能对应的源码,所述预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;
根据所述被测应用在执行所述目标功能时运行的代码以及所述目标功能对应的源码,确定并输出所述被测应用对应的覆盖率数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收来自Jenkins平台上传的目标测试应用的测试文件包,所述测试文件包包括所述目标测试应用的源码压缩包、class文件压缩包以及覆盖率exec文件;
基于clas s文件解析所述覆盖率exec文件,得到所述目标测试应用对应的测试文件,并对所述源码压缩包进行解压,得到所述目标测试应用的源码;所述测试文件包括测试数据代码包、类、方法、覆盖到的以及未覆盖到的数据;
为所述测试数据配置对应的测试ID,并将所述测试数据与所述测试ID之间的对应关系以及源码存储至数据库。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述被测应用在执行所述目标功能时运行的代码以及所述目标功能对应的源码,确定并输出所述被测应用对应的覆盖率数据,包括:
统计所述被测应用在执行所述目标功能时运行的代码的行数以及所述目标功能对应的源码的行数;
根据所述被测应用在执行所述目标功能时运行的代码的行数与所述目标功能对应的源码的行数的比值,确定并输出所述被测应用对应的覆盖率数据。
4.一种覆盖率数据的确定方法,其特征在于,应用于Jenkins平台,所述方法包括:
获取被测应用的源码,并分别对所述源码进行压缩、编译,得到所述源码对应的源码压缩包及class文件;
获取所述被测应用的覆盖率exec文件,所述覆盖率exec文件为在测试所述被测应用的目标功能时生成的文件;
向覆盖率平台发送测试文件包,所述测试文件包包括所述被测应用的源码压缩包、class文件以及所述覆盖率exec文件,所述测试文件包用于确定所述被测应用对应的覆盖率数据。
5.根据权利要求4所述的方法,其特征在于,获取所述被测应用的覆盖率exec文件,包括:
在使用手动或自动化测试的方式对所述被测应用进行测试的情况下,基于预设的指令从测试平台处获取所述被测应用的覆盖率exec文件。
6.根据权利要求4所述的方法,其特征在于,获取所述被测应用的覆盖率exec文件,包括:
在使用单元测试的方式对所述被测应用进行测试的情况下,测试所述被测应用的目标功能,生成所述被测应用的覆盖率exec文件。
7.一种覆盖率数据的确定装置,其特征在于,应用于覆盖率平台,所述装置包括:
获取单元,用于响应于输入操作,获取查询信息,所述查询信息用于查询测试项目的覆盖率数据,所述测试项目包括测试标识,所述测试标识用于标识被测应用的目标功能;
确定单元,用于根据预设对应关系,确定所述目标功能对应的测试数据,所述测试数据包括所述被测应用在执行所述目标功能时运行的代码以及所述目标功能对应的源码,所述预设对应关系包括多个测试标识以及每个测试标识对应的测试数据;
所述确定单元,还用于根据所述被测应用在执行所述目标功能时运行的代码以及所述目标功能对应的源码,确定并输出所述被测应用对应的覆盖率数据。
8.一种覆盖率数据的确定装置,其特征在于,应用于Jenkins平台,该装置包括:
获取单元,用于获取被测应用的源码,并分别对所述源码进行压缩、编译,得到所述源码对应的源码压缩包及class文件;
所述获取单元,还用于获取所述被测应用的覆盖率exec文件,所述覆盖率exec文件为在测试所述被测应用的目标功能时生成的文件;
确定单元,用于向覆盖率平台发送测试文件包,所述测试文件包包括所述被测应用的源码压缩包、class文件以及所述覆盖率exec文件,所述测试文件包用于确定所述被测应用对应的覆盖率数据。
9.一种电子设备,其特征在于,应用于测试代码覆盖率数据,包括存储器和处理器:
所述存储器和所述处理器耦合;
所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;
当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1-3中任意一项或者4-6中任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311118736.4A CN117194236A (zh) | 2023-08-31 | 2023-08-31 | 一种覆盖率数据的确定方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311118736.4A CN117194236A (zh) | 2023-08-31 | 2023-08-31 | 一种覆盖率数据的确定方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194236A true CN117194236A (zh) | 2023-12-08 |
Family
ID=88986268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311118736.4A Pending CN117194236A (zh) | 2023-08-31 | 2023-08-31 | 一种覆盖率数据的确定方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194236A (zh) |
-
2023
- 2023-08-31 CN CN202311118736.4A patent/CN117194236A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
CN107688530B (zh) | 软件测试方法及装置 | |
CN103186444B (zh) | 一种性能测试方法、测试平台及测试机 | |
CN111400186A (zh) | 性能测试方法及系统 | |
CN108920370B (zh) | 兼容性问题检测方法、装置及设备 | |
CN113568839A (zh) | 软件测试和统计测试覆盖率的方法、装置、设备及介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
CN111522738A (zh) | 微服务系统的测试方法、装置、存储介质和电子设备 | |
CN112241360A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN112559348B (zh) | 基于jacoco的测试分析方法、系统、设备以及介质 | |
CN113448854A (zh) | 一种回归测试方法和装置 | |
CN111221727B (zh) | 测试方法、装置、电子设备和计算机可读介质 | |
CN110297776B (zh) | 检测报告生成、接收方法、装置、设备及存储介质 | |
CN110134583B (zh) | 软件测试及数据处理方法及装置 | |
CN112148607A (zh) | 一种业务场景的接口测试方法和装置 | |
CN113434405A (zh) | 测试文件的确定方法及装置、存储介质及电子装置 | |
CN109783284A (zh) | 信息获取方法、系统及服务器、计算机可读存储介质 | |
CN114385485A (zh) | 接口测试方法、装置、设备及存储介质 | |
CN112256557B (zh) | 程序回归测试方法、装置、系统、计算机设备及存储介质 | |
CN112346981A (zh) | 联调测试覆盖率检测方法及系统 | |
CN117194236A (zh) | 一种覆盖率数据的确定方法、装置、电子设备及存储介质 | |
CN116150011A (zh) | 代码覆盖率数据处理方法、设备、介质和计算机程序产品 | |
CN115827410A (zh) | 性能测评工具的测试方法、装置、测试设备及存储介质 | |
CN113806231A (zh) | 一种代码覆盖率分析方法、装置、设备和介质 | |
CN115495358A (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 |