覆盖率数据处理方法、装置、计算机设备和存储介质与流程

文档序号:32434708发布日期:2022-12-06 17:32阅读:95来源:国知局
覆盖率数据处理方法、装置、计算机设备和存储介质与流程

1.本技术涉及测试技术领域,具体涉及一种覆盖率数据处理方法、装置、计算机设备和存储介质。


背景技术:

2.代码覆盖率是测试领域里白盒及黑盒的工作交集,代码覆盖率是去除时序后的代码历程轨迹,体现了测试的工作以及反应了开发代码的真实执行情况。
3.在开发人员进行开发的过程中,需要对已经开发完成的代码进行测试,且通常需要对代码进行覆盖率测试。覆盖率测试用于测试多少代码被测试过,多少代码没有被测试过。这样就有利于开发人员了解到还有多少代码处于未测试状态。然而,现有的覆盖率统计方式一般是只进行对于代码文件的单元测试覆盖率的统计,覆盖率数据的统计存在全面性不足的问题。


技术实现要素:

4.本技术的主要目的为提供一种覆盖率数据处理方法、装置、计算机设备和存储介质,旨在解决现有的覆盖率统计方式一般是只进行对于代码文件的单元测试覆盖率的统计,存在全面性不足的技术问题。
5.本技术提出一种覆盖率数据处理方法,所述方法包括步骤:
6.获取待测试的目标代码文件;
7.执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
8.对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
9.调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
10.对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
11.基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
12.可选地,所述通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据的步骤,包括:
13.调用所述代码扫描插件;
14.通过所述代码扫描插件对所述目标代码文件的执行过程进行监控,获取所述目标代码文件中的已执行代码行数;
15.获取与所述已执行代码行数对应的代码行编号;以及,
16.获取与所述已执行代码行数对应的代码数据;
17.基于所述代码行编号与所述代码数据得到所述执行轨迹数据。
18.可选地,所述调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率的步骤,包括:
19.获取所述组件模块的数量;
20.获取与所述数量相同的多个测试服务器;
21.从所述目标代码文件中提取出与各所述组件模块分别对应的组件代码;
22.为各所述组件代码与各所述测试服务器之间建立一一对应的映射关系;
23.分别将各所述组件代码发送至对应的测试服务器,通过各所述测试服务器分别执行内部包含的组件代码;
24.调用所述测试工具,分别获取各所述组件模块在对应的各所述测试服务器中的第二代码覆盖率。
25.可选地,所述对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率的步骤之后,包括:
26.获取与所述目标代码文件对应的历史版本代码文件;其中,所述历史版本代码文件为与所述目标代码文件对应的所有不同版本的代码文件中,除所述目标代码文件外的任意一个代码文件;
27.将所述目标代码文件与所述历史版本代码文件进行比对处理,得到所述目标代码文件中的增量代码;
28.获取所述增量代码中的已测试代码;
29.基于所述增量代码与所述已测试代码,生成与所述增量代码对应的增量代码覆盖率。
30.可选地,所述将所述目标代码文件与所述历史版本代码文件进行比对处理,得到所述目标代码文件中的增量代码的步骤,包括:
31.获取所述目标代码文件的第一代码内容;以及,
32.获取所述历史版本代码文件的第二代码内容;
33.对所述第一代码内容中的每一行代码与所述第二代码内容中的每一行代码进行一一对应的数据比对处理,得到对应的多个数据比对结果;其中,所述数据比对结果的内容为代码存在差异或代码不存在差异;
34.从所有所述数据比对结果中筛选出内容为代码存在差异的指定数据比对结果;
35.获取与所述指定数据比对结果对应的行号信息;
36.基于所述行号信息与所述第一代码内容得到所述增量代码。
37.可选地,所述获取与所述目标代码文件对应的历史版本代码文件的步骤之后,包括:
38.获取与所述历史版本代码文件对应的第三代码覆盖率;
39.对所述第一代码覆盖率与所述第三代码覆盖率进行比对分析处理,得到对应的分析数据;
40.展示所述分析数据。
41.可选地,所述获取与所述历史版本代码文件对应的第三代码覆盖率的步骤之后,包括:
42.获取预设的统计报告模板;
43.将所述第一代码覆盖率、所述第二代码覆盖率、所述增量代码覆盖率与所述第三代码覆盖率填入所述统计报告模板内的对应位置处,得到与所述目标代码文件对应的覆盖率统计报告;
44.展示所述覆盖率统计报告;以及,
45.获取预设的邮件登录信息与目标用户的指定邮件地址;
46.根据所述邮件登录信息登录至对应的邮件服务器;
47.通过所述邮件服务器将所述覆盖率统计报告发送至所述指定邮件地址。
48.本技术还提供一种覆盖率数据处理装置,包括:
49.第一获取模块,用于获取待测试的目标代码文件;
50.采集模块,用于执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
51.分析模块,用于对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
52.第二获取模块,用于调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
53.第一生成模块,用于对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
54.第二生成模块,用于基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
55.本技术还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
56.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
57.本技术中提供的覆盖率数据处理方法、装置、计算机设备和存储介质,具有以下有益效果:
58.本技术中提供的覆盖率数据处理方法、装置、计算机设备和存储介质,在获取到待测试的目标代码文件后,会先执行该目标代码文件,并使用代码扫描插件来生成目标代码文件的第一代码覆盖率。之后调用测试工具来获取目标代码文件内包含的各组件模块分别对应的第二代码覆盖率,并对第一代码覆盖率与第二代码覆盖率进行合并处理来生成目标代码文件的测试覆盖率,进而基于得到的测试覆盖率与预设的测试报告模板,来快速便捷地生成与目标代码文件对应的测试覆盖率报告。本技术通过结合与目标代码文件相关的第一代码覆盖率与第二代码覆盖率来智能的生成对应的测试覆盖率及测试覆盖率报告,实现了从更多的维度上对目标代码文件的测试覆盖率进行全面有效的统计,保证了测试覆盖率统计的全面性与多样性,使得测试人员可以直观的查看到目标代码文件的测试覆盖率的统计情况,并有利于基于统计得到的测试覆盖率来对目标代码文件的测试效果进行准确的评估。
附图说明
59.图1是本技术一实施例的覆盖率数据处理方法的流程示意图;
60.图2是本技术一实施例的覆盖率数据处理装置的结构示意图;
61.图3是本技术一实施例的计算机设备的结构示意图。
62.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
63.应当理解,此处所描述的具体实施例仅仅用于解释本技术,并不用于限定本技术。
64.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
65.参照图1,本技术一实施例的覆盖率数据处理方法,包括:
66.s1:获取待测试的目标代码文件;
67.s2:执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
68.s3:对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
69.s4:调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
70.s5:对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
71.s6:基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
72.如上述步骤s1至s6所述,本方法实施例的执行主体为一种覆盖率数据处理装置。在实际应用中,上述覆盖率数据处理装置可以通过虚拟装置,例如软件代码实现,也可以通过写入或集成有相关执行代码的实体装置实现,且可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。本实施例中的覆盖率数据处理装置,能够从更多的维度上全面有效地统计待测试的目标代码文件的覆盖率数据,保证了测试覆盖率统计的全面性与多样性。具体地,首先获取待测试的目标代码文件。其中,上述目标代码文件是指待测试的代码文件。在对代码的回归测试中,由于在对代码进行了修改后,需要重新对修改后的代码进行测试以确认修改没有引入新的错误或导致其他代码产生错误,所以每次更新都要重新进行测试以确认修改后的代码的有效性。然后执行上述目标代码文件,并在上述目标代码文件执行完毕后,通过预设的代码扫描插件采集与上述目标代码文件对应的执行轨迹数据。其中,上述代码扫描插件具体可为js代码扫描插件,其本质上是用于进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用,该代码扫描插件用于在目标代码文件进行测试的时候进行监控,并获取对应的代码执行数据。
73.在得到了上述执行轨迹数据后,对上述执行轨迹数据进行分析处理,生成与上述
目标代码文件对应的第一代码覆盖率。其中,可先从执行轨迹数据中获取目标代码文件中的已执行代码行数,再根据上述已执行代码行数与上述执行轨迹数据,生成与目标代码文件对应的第一代码覆盖率。具体的,先基于已执行代码行数与执行轨迹数据获取出目标代码文件中的已执行代码的特征数量,再获取目标代码文件内包含的所有代码的特征总数量,并计算目标代码文件中的已执行代码的特征数量与目标代码文件内包含的所有代码的特征总数量的比值来得到与上述目标代码文件对应的第一代码覆盖率。之后调用预设的测试工具获取与上述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率。其中,上述组件模块是指对目标代码文件进行编译后得到的各个功能组件模块。举例地,目标代码文件中看包含有多个方法,这些方法都具备相应的功能组件模块,例如包括a方法与b方法,a方法用于编辑订单数量,b方法用于删除订单。可通过解析目标代码文件的注释来获取功能组件模块与目标代码文件中的方法代码(或者称为组件代码)之间的对应关系,并基于该对应关系来准确定位出各组件模块所对应的组件代码。上述测试工具为覆盖率测试工具,如可为开源的jacoco覆盖率工具。另外,上述测试工具可以通过打包工具的相互配合来获取对应的覆盖率数据。具体的,可以先获取与组件模块的数量相同的多个测试服务器,以及从上述目标代码文件中提取出与各上述组件模块分别对应的组件代码,并在建立了测试服务器与组件代码的映射关系后,调用各个测试服务器分别对对应的组件代码进行测试,进而调用测试工具分别获取各上述组件模块在对应的各上述测试服务器中的第二代码覆盖率。
74.后续对上述第一代码覆盖率与所有上述第二代码覆盖率进行合并处理,生成与上述目标代码文件对应的测试覆盖率。其中,上述测试覆盖率包括上述第一代码覆盖率与上述第二代码覆盖率。最后基于上述测试覆盖率与预设的测试报告模板,生成与上述目标代码文件对应的测试覆盖率报告。其中,上述测试报告模板是用于汇总与目标代码文件相关的第一代码覆盖率与第二代码覆盖率的模板,可以基于用户的实际需求来建立上述测试报告模板。另外,上述测试报告模板至少包括第一代码覆盖率字段与第二代码覆盖率字段。此外,对于每个不同的覆盖率信息都会设置有对应的填充标签,填充标签用于指示将上述第一代码覆盖率与第二代码覆盖率分别填入测试报告模板内的对应位置处,通过基于填充标签将与目标代码文件相关的各覆盖率信息填入至上述测试报告模板内的对应位置处,从而可以生成与上述目标代码文件对应的测试覆盖率报告。
75.本实施例在获取到待测试的目标代码文件后,会先执行该目标代码文件,并使用代码扫描插件来生成目标代码文件的第一代码覆盖率。之后调用测试工具来获取目标代码文件内包含的各组件模块分别对应的第二代码覆盖率,并对第一代码覆盖率与第二代码覆盖率进行合并处理来生成目标代码文件的测试覆盖率,进而基于得到的测试覆盖率与预设的测试报告模板,来快速便捷地生成与目标代码文件对应的测试覆盖率报告。本实施例通过结合与目标代码文件相关的第一代码覆盖率与第二代码覆盖率来智能的生成对应的测试覆盖率及测试覆盖率报告,实现了从更多的维度上对目标代码文件的测试覆盖率进行全面有效的统计,保证了测试覆盖率统计的全面性与多样性,使得测试人员可以直观的查看到目标代码文件的测试覆盖率的统计情况,并有利于基于统计得到的测试覆盖率来对目标代码文件的测试效果进行准确的评估。
76.进一步地,本技术一实施例中,上述步骤s2,包括:
77.s200:调用所述代码扫描插件;
78.s201:通过所述代码扫描插件对所述目标代码文件的执行过程进行监控,获取所述目标代码文件中的已执行代码行数;
79.s202:获取与所述已执行代码行数对应的代码行编号;以及,
80.s203:获取与所述已执行代码行数对应的代码数据;
81.s204:基于所述代码行编号与所述代码数据得到所述执行轨迹数据。
82.如上述步骤s200至s204所述,上述通过预设的代码扫描插件采集与上述目标代码文件对应的执行轨迹数据的步骤,具体可包括:首先调用上述代码扫描插件。其中,上述代码扫描插件具体可为js代码扫描插件,该代码扫描插件用于在目标代码文件进行测试的时候进行监控,并获取对应的代码执行数据。另外,在获取到待测试的目标代码文件时,会先利用上述代码扫描插件对目标代码文件进行插桩,在保证被测代码原有逻辑完整性的基础上将代码扫描插件植入至上述目标代码文件内,并通过探针的方式来记录目标代码文件中代码的执行轨迹信息。此外。插桩分为两种模式on-the-fly和offine。on-the-fly模式优点在于无需修改源代码,可以在系统不停机的情况下,实时收集代码覆盖率信息。offine模式优点在于系统启动不需要额外开启代理,但是只能在系统停机的情况下才能获取代码覆盖率。本实施例对目标代码文件进行插桩的具体模式不作限定,可根据实际需求进行选取。然后通过上述代码扫描插件对上述目标代码文件的执行过程进行监控,获取上述目标代码文件中的已执行代码行数。其中,可以在目标代码文件的测试过程中实时监测目标代码文件中每一行代码的执行结果,例如:一行代码被执行,则将该行的执行结果记录为被执行,而如果该行代码未被执行时,则将该行的执行结果记录为未执行;在测试结束后,可以统计每一行代码的执行结果的状态,从而得出已执行代码行。之后获取与上述已执行代码行数对应的代码行编号。以及获取与上述已执行代码行数对应的代码数据。最后基于上述代码行编号与上述代码数据得到上述执行轨迹数据。其中,上述执行轨迹数据包括上述代码行编号与上述代码数据。本实施例通过使用预设的代码扫描插件对目标代码文件的执行过程进行监控,可以获得上述目标代码文件中的已执行代码行数,进而可以基于该已执行代码行数所对应的代码行编号与代码数据来得到目标代码文件执行轨迹数据,有利于后续基于该执行轨迹数据实现快速便捷地生成与上述目标代码文件对应的第一代码覆盖率。
83.进一步地,本技术一实施例中,上述步骤s4,包括:
84.s400:获取所述组件模块的数量;
85.s401:获取与所述数量相同的多个测试服务器;
86.s402:从所述目标代码文件中提取出与各所述组件模块分别对应的组件代码;
87.s403:为各所述组件代码与各所述测试服务器之间建立一一对应的映射关系;
88.s404:分别将各所述组件代码发送至对应的测试服务器,通过各所述测试服务器分别执行内部包含的组件代码;
89.s405:调用所述测试工具,分别获取各所述组件模块在对应的各所述测试服务器中的第二代码覆盖率。
90.如上述步骤s400至s405所述,上述调用预设的测试工具获取与上述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率的步骤,具体可包括:首先获取上述组件模块的数量。然后获取与上述数量相同的多个测试服务器。之后从上述目标代码文件中提
取出与各上述组件模块分别对应的组件代码。其中,可以根据组件模块的不同类别将目标代码文件拆分成对应的多份组件代码。在得到了上述组件代码后,为各上述组件代码与各上述测试服务器之间建立一一对应的映射关系。其中,对于组件代码与测试服务器之间的映射关系可根据实际需求进行设置,例如可使用随机建立的方式,只需保证一份组件代码对应一个测试服务器即可。后续分别将各上述组件代码发送至对应的测试服务器,通过各上述测试服务器分别执行内部包含的组件代码。其中,通过采用与上述数量相同的多个测试服务器来分别并发执行一一对应的组件代码,从而能够充分利用装置的系统cpu和内存性能,发挥多核cpu的优势,降低组件代码测试的处理时延,提高组件代码测试的处理效率,有效减少得到上述第二代码覆盖率的花费时间。最后调用上述测试工具,分别获取各上述组件模块在对应的各上述测试服务器中的第二代码覆盖率。其中,上述测试工具具体可为开源的jacoco覆盖率工具。另外,上述第二代码覆盖率是指测试服务器中的已测试的代码与内部的组件代码之间的代码占比。具体可先通过上述测试工具对测试服务器中的已测试的代码进行测试标记处理,在标记处理完成后,获取测试服务器中的已测试的代码的特征数量,以及获取测试服务器内部的组件代码的特征总数量,并计算测试服务器中的已测试的代码的特征数量与测试服务器内部的组件代码的特征总数量的比值来得到上述代码占比,也即上述第二代码覆盖率。本实施例通过采用与目标代码文件的组件模块的数量相同的多个测试服务器来分别并发执行一一对应的组件模块组件代码,降低了组件代码测试的处理时延,提高了组件代码测试的处理效率,有利于后续调用预设的测试工具来实现快捷地获取各上述组件模块在对应的各上述测试服务器中的第二代码覆盖率,进而能够根据得到的第二代码覆盖率来快速地生成上述目标代码文件对应的测试覆盖率与测试覆盖率报告。
91.进一步地,本技术一实施例中,上述步骤s3之后,包括:
92.s300:获取与所述目标代码文件对应的历史版本代码文件;其中,所述历史版本代码文件为与所述目标代码文件对应的所有不同版本的代码文件中,除所述目标代码文件外的任意一个代码文件;
93.s301:将所述目标代码文件与所述历史版本代码文件进行比对处理,得到所述目标代码文件中的增量代码;
94.s302:获取所述增量代码中的已测试代码;
95.s303:基于所述增量代码与所述已测试代码,生成与所述增量代码对应的增量代码覆盖率。
96.如上述步骤s300至s303所述,在执行完上述对上述执行轨迹数据进行分析处理,生成与上述目标代码文件对应的第一代码覆盖率的步骤之后,还可包括获取该目标代码文件相对于历史版本代码文件的增量代码,并生成与该增量代码对应的增量覆盖率的过程。具体地,首先获取与上述目标代码文件对应的历史版本代码文件。其中,上述历史版本代码文件为与上述目标代码文件对应的所有不同版本的代码文件中,除上述目标代码文件外的任意一个代码文件。目标代码文件与历史版本代码文件可为同一应用程序的不同版本,且历史版本代码文件已完成了覆盖率测试。另外,可预先创建一个版本代码管理库,该版本代码管理库中存储了与目标代码文件对应的所有不同版本的代码文件,可以从该版本代码管理库中提取出所需的上述历史版本代码文件。上述版本代码管理库具体可为git代码库管
理系统。然后将上述目标代码文件与上述历史版本代码文件进行比对处理,得到上述目标代码文件中的增量代码。其中,上述增量代码为目标代码文件与上述历史版本代码文件相比存在更新或变动的差异代码。之后获取上述增量代码中的已测试代码。其中,上述已测试代码还可称为已执行代码,可先获取上述目标代码文件中已测试的代码的标识,再根据上述已测试的代码的标识从上述增量代码查找出相应的已测试代码。最后上述上述上述基于上述增量代码与上述已测试代码,生成与上述增量代码对应的增量代码覆盖率。其中,可先获取增量代码中已测试代码的特征数量,以及获取增量代码的特征总数量,再计算增量代码中已测试代码的特征数量与所有增量代码的的特征总数量之间的比值,并将该比值确定设为上述增量代码覆盖率。本实施例通过将目标代码文件与历史版本代码文件进行比对处理来得到相应的增量代码,进而根据该增量代码以及增量代码中的已测试代码来快速准确地生成与上述增量代码对应的增量代码覆盖率,有利于后续能够根据该增量代码覆盖率来准确地对测试人员测试上述目标代码文件的测试质量进行评估。
97.进一步地,本技术一实施例中,上述步骤s301,包括:
98.s3010:获取所述目标代码文件的第一代码内容;以及,
99.s3011:获取所述历史版本代码文件的第二代码内容;
100.s3012:对所述第一代码内容中的每一行代码与所述第二代码内容中的每一行代码进行一一对应的数据比对处理,得到对应的多个数据比对结果;其中,所述数据比对结果的内容为代码存在差异或代码不存在差异;
101.s3013:从所有所述数据比对结果中筛选出内容为代码存在差异的指定数据比对结果;
102.s3014:获取与所述指定数据比对结果对应的行号信息;
103.s3015:基于所述行号信息与所述第一代码内容得到所述增量代码。
104.如上述步骤s3010至s3015所述,上述将上述目标代码文件与上述历史版本代码文件进行比对处理,得到上述目标代码文件中的增量代码的步骤,具体可包括:首先获取上述目标代码文件的第一代码内容。以及获取上述历史版本代码文件的第二代码内容。其中,上述第一代码内容与第二代码内容具有相同的数据排列格式,即第一代码内容中的代码与第二代码内容中的代码均是按照相同的数据排列格式进行逐行编写的,每一行对应着一个行号,通过行号来对每行的代码进行标识。然后对上述第一代码内容中的每一行代码与上述第二代码内容中的每一行代码进行一一对应的数据比对处理,得到对应的多个数据比对结果。其中,上述数据比对结果的内容为代码存在差异或代码不存在差异。另外,通过对第一代码内容与第二代码内容中的代码内容进行按行标识来对代码内容进行划分,能够提高代码差异比对处理的效率与准确性。之后从所有上述数据比对结果中筛选出内容为代码存在差异的指定数据比对结果。后续获取与上述指定数据比对结果对应的行号信息。最后基于上述行号信息与上述第一代码内容得到上述增量代码。其中,可以根据上述行号信息在上述第一代码内容中提取对应的特定代码,并根据提取的特定代码来得到上述增量代码,上述特定代码即为上述目标代码文件相对应于历史版本代码文件的增量代码。另外,还可以对上述增量代码进行特殊的展示化处理,例如可以对该增量代码进行染色处理。本实施例通过对上述第一代码内容中的每一行代码与上述第二代码内容中的每一行代码进行一一对应的数据比对处理,并筛选出代码存在差异的指定数据比对结果,进而可基于与上述指
定数据比对结果对应的行号信息以及上述第一代码内容来快速便捷地得到上述增量代码,使得可以根据该增量代码以及增量代码中的已测试代码来快速准确地生成与上述增量代码对应的增量代码覆盖率,有利于后续能够根据该增量代码覆盖率来准确地对测试人员测试上述目标代码文件的测试质量进行评测。
105.进一步地,本技术一实施例中,上述步骤s300之后,包括:
106.s3000:获取与所述历史版本代码文件对应的第三代码覆盖率;
107.s3001:对所述第一代码覆盖率与所述第三代码覆盖率进行比对分析处理,得到对应的分析数据;
108.s3002:展示所述分析数据。
109.如上述步骤s3000至s3002所述,在执行完上述获取与上述目标代码文件对应的历史版本代码文件的步骤之后,还可包括获取与历史版本代码文件对应的第三代码覆盖率,并将其与上述第一代码覆盖率进行差异比对分析的处理过程。具体地,首先获取与上述历史版本代码文件对应的第三代码覆盖率。其中,在统计出与历史版本代码文件对应的第三代码覆盖率后,会对该第三代码覆盖率进行存储处理,从而后续能够快速地从装置内的存储数据中提取出该第三代码覆盖率。然后上述上述对上述第一代码覆盖率与上述第三代码覆盖率进行比对分析处理,得到对应的分析数据。其中,对于上述分析数据包含的数据内容不作具体限定,举例地,该分析数据可包括目标代码文件与历史版本代码文件的概况数据展示、目标代码文件的覆盖率历史统计趋势图、目标代码文件的覆盖率历史统计数据列表等等。最后展示上述分析数据。其中,对于上述分析数据的展示方式不作具体限定,例如可以使用可视化图表的形式展示上述分析数据。本实施例通过将获取的历史版本代码文件对应的第三代码覆盖率与目标代码文件对应的第一代码覆盖率进行差异比对分析,并向用户展示对应的分析数据,有利于用户可以清楚地查阅到目标代码文件与历史版本代码文件之间的差异情况,有效的提高了用户的使用体验。
110.进一步地,本技术一实施例中,上述步骤s3000之后,包括:
111.s30000:获取预设的统计报告模板;
112.s30001:将所述第一代码覆盖率、所述第二代码覆盖率、所述增量代码覆盖率与所述第三代码覆盖率填入所述统计报告模板内的对应位置处,得到与所述目标代码文件对应的覆盖率统计报告;
113.s30002:展示所述覆盖率统计报告;以及,
114.s30003:获取预设的邮件登录信息与目标用户的指定邮件地址;
115.s30004:根据所述邮件登录信息登录至对应的邮件服务器;
116.s30005:通过所述邮件服务器将所述覆盖率统计报告发送至所述指定邮件地址。
117.如上述步骤s30000至s30005所述,在执行完上述获取与上述历史版本代码文件对应的第三代码覆盖率的步骤之后,还可包括生成与上述目标代码文件对应的覆盖率统计报告的过程。具体地,首先获取预设的统计报告模板。其中,上述统计报告模板是用于汇总与目标代码文件相关的所有覆盖率信息的模板,可以基于用户的实际需求来建立预设的统计报告模板。另外,上述统计报告模板至少包括第一代码覆盖率字段、第二代码覆盖率字段、增量代码覆盖率字段与第三代码覆盖率字段。然后将上述第一代码覆盖率、上述第二代码覆盖率、上述增量代码覆盖率与上述第三代码覆盖率填入上述统计报告模板内的对应位置
处,得到与上述目标代码文件对应的覆盖率统计报告。其中,对于每个不同的覆盖率信息都会设置有对应的填充标签,填充标签用于指示将上述第一代码覆盖率、上述第二代码覆盖率、上述增量代码覆盖率与上述第三代码覆盖率分别填入统计报告模板内的对应位置处。另外,在通过测试处理获得与该目标代码文件相关的覆盖率信息后,可以先为每一个覆盖率信息附加上对应的填充标签,而后再基于填充标签将与目标代码文件相关的各覆盖率信息填入至上述统计报告模板内的对应位置处,以得到与上述目标代码文件对应的覆盖率统计报告。之后展示上述覆盖率统计报告。其中,对上述覆盖率统计报告的展示形式不作限定,可以基于html输出,通过浏览器以清晰的图表形式呈现上述覆盖率统计报告。另外,通过在屏幕上对上述覆盖率统计报告进行展示,使得当前用户可以清楚明了的查阅到与目标代码文件相关的覆盖率信息。以及同时获取预设的邮件登录信息与目标用户的指定邮件地址,并根据上述邮件登录信息登录至对应的邮件服务器,进而通过上述邮件服务器将上述覆盖率统计报告发送至上述指定邮件地址。其中,上述目标用户可为与覆盖率测试相关的管理人员。进一步地,在发送上述覆盖率统计报告之前,还可先获取当前时间,并判断上述当前时间是否处于预设时间段内;若当前时间处于上述预设时间段内时,则通过上述邮件服务器将上述覆盖率统计报告发送至上述指定邮件地址。上述预设时间段指代的是工作时间段所对应的时间范围,对于该预设时间段的具体数值不作限定,可根据实际需求进行选取,例如可设为9:00-21:00。通过只在当前时间处于工作时间段内才会发送该覆盖率统计报告至指定邮件地址,从而能够避免在休息时间段对目标用户造成不良干扰,有效的提高了邮件发送的智能性。另外。通过将上述覆盖率统计报告发送给目标用户,使得目标用户可以及时了解到与目标代码文件相关的覆盖率信息,提高目标用户的使用体验。本实施例通过利用与目标代码文件对应的第一代码覆盖率,与目标代码文件内的组件模块对应的第二代码覆盖率,与历史版本代码文件对应的第三代码覆盖率,以及与目标代码文件的增量代码对应的增量代码覆盖率来汇总生成一个覆盖率统计报告,能够实现从更多的维度上来对目标代码文件的覆盖率信息进行统计,进而实现有效的度量目标代码文件测试的范围和工作量,避免出现纰漏,提高了目标代码文件的覆盖率信息统计的全面性与智能性。
118.进一步地,本技术一实施例中,上述步骤s6之后,包括:
119.s600:判断是否接收到数据检索指令;
120.s601:若是,获取与所述数据检索指令对应的查询条件信息;其中,所述查询条件包括组件模块信息、版本信息与时间段信息;
121.s602:基于所述查询条件信息,获取与所述查询条件信息对应的历史覆盖率数据;
122.s603:展示所述历史覆盖率数据。
123.如上述步骤s600至s603所述,在执行完基于上述测试覆盖率与预设的测试报告模板,生成与上述目标代码文件对应的测试覆盖率报告的步骤之后,还可以根据组件、版本、时间段等信息,为用户提供拉取相应的历史覆盖率数据进行展现的过程。具体地,首先判断是否接收到数据检索指令。其中,上述数据检索指令为用户根据实际需求输入至装置内的用于进行数据检索的指令,且该数据检索指令内携带有与用户需要检索的覆盖率数据所对应的查询条件信息,该查询条件信息的格式可为检索关键词。如果接收到上述数据检索指令,获取与上述数据检索指令对应的查询条件信息。其中,上述查询条件包括组件模块信息、版本信息与时间段信息。然后基于上述查询条件信息,获取与上述查询条件信息对应的
历史覆盖率数据。其中,上述历史覆盖率数据具体可指已统计完成并存储在装置内部的与覆盖率相关的统计数据。举例地,可从上述测试覆盖率报告中查询出与查询条件信息对应的历史覆盖率数据。最后展示上述历史覆盖率数据。其中,对于上述历史覆盖率数据的展示方式不作具体限定,例如可以使用可视化图表的形式展示上述历史覆盖率数据。本实施例能够根据接收到的数据检索指令,来智能快捷地向用户展示与该数据检索指令对应的历史覆盖率数据,提高了用户的使用体验。
124.本技术实施例中的覆盖率数据处理方法还可以应用于区块链领域,如将上述测试覆盖率等数据存储于区块链上。通过使用区块链来对上述测试覆盖率进行存储和管理,能够有效地保证上述测试覆盖率的安全性与不可篡改性。
125.上述区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
126.区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
127.参照图2,本技术一实施例中还提供了一种覆盖率数据处理装置,包括:
128.第一获取模块1,用于获取待测试的目标代码文件;
129.采集模块2,用于执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
130.分析模块3,用于对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
131.第二获取模块4,用于调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
132.第一生成模块5,用于对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
133.第二生成模块6,用于基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
134.本实施例中,上述覆盖率数据处理装置中的第一获取模块1、采集模块2、分析模块3、第二获取模块4、第一生成模块5与第二生成模块6的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s1至s6的实现过程,在此不再赘述。
135.进一步地,本技术一实施例中,上述采集模块,包括:
136.调用单元,用于调用所述代码扫描插件;
137.监控单元,用于通过所述代码扫描插件对所述目标代码文件的执行过程进行监控,获取所述目标代码文件中的已执行代码行数;
138.第一获取单元,用于获取与所述已执行代码行数对应的代码行编号;以及,
139.第二获取单元,用于获取与所述已执行代码行数对应的代码数据;
140.第一生成单元,用于基于所述代码行编号与所述代码数据得到所述执行轨迹数据。
141.本实施例中,上述覆盖率数据处理装置中的调用单元、监控单元、第一获取单元、第二获取单元与第一生成单元的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s200至s204的实现过程,在此不再赘述。
142.进一步地,本技术一实施例中,上述第二获取模块,包括:
143.第三获取单元,用于获取所述组件模块的数量;
144.第四获取单元,用于获取与所述数量相同的多个测试服务器;
145.提取单元,用于从所述目标代码文件中提取出与各所述组件模块分别对应的组件代码;
146.映射单元,用于为各所述组件代码与各所述测试服务器之间建立一一对应的映射关系;
147.执行单元,用于分别将各所述组件代码发送至对应的测试服务器,通过各所述测试服务器分别执行内部包含的组件代码;
148.第五获取单元,用于调用所述测试工具,分别获取各所述组件模块在对应的各所述测试服务器中的第二代码覆盖率。
149.本实施例中,上述覆盖率数据处理装置中的第三获取单元、第四获取单元、提取单元、映射单元、执行单元与第五获取单元的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s400至s405的实现过程,在此不再赘述。
150.进一步地,本技术一实施例中,上述覆盖率数据处理装置,包括:
151.第三获取模块,用于获取与所述目标代码文件对应的历史版本代码文件;其中,所述历史版本代码文件为与所述目标代码文件对应的所有不同版本的代码文件中,除所述目标代码文件外的任意一个代码文件;
152.第一比对模块,用于将所述目标代码文件与所述历史版本代码文件进行比对处理,得到所述目标代码文件中的增量代码;
153.第四获取模块,用于获取所述增量代码中的已测试代码;
154.第三生成模块,用于基于所述增量代码与所述已测试代码,生成与所述增量代码对应的增量代码覆盖率。
155.本实施例中,上述覆盖率数据处理装置中的第三获取模块、第一比对模块、第四获取模块与第三生成模块的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对
应步骤s300至s303的实现过程,在此不再赘述。
156.进一步地,本技术一实施例中,上述第一比对模块,包括:
157.第六获取单元,用于获取所述目标代码文件的第一代码内容;以及,
158.第七获取单元,用于获取所述历史版本代码文件的第二代码内容;
159.比对单元,用于对所述第一代码内容中的每一行代码与所述第二代码内容中的每一行代码进行一一对应的数据比对处理,得到对应的多个数据比对结果;其中,所述数据比对结果的内容为代码存在差异或代码不存在差异;
160.筛选单元,用于从所有所述数据比对结果中筛选出内容为代码存在差异的指定数据比对结果;
161.第八获取单元,用于获取与所述指定数据比对结果对应的行号信息;
162.生成单元,用于基于所述行号信息与所述第一代码内容得到所述增量代码。
163.本实施例中,上述覆盖率数据处理装置中的第六获取单元、第七获取单元、比对单元、筛选单元、第八获取单元与生成单元的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s3010至s3015的实现过程,在此不再赘述。
164.进一步地,本技术一实施例中,上述覆盖率数据处理装置,包括:
165.第五获取模块,用于获取与所述历史版本代码文件对应的第三代码覆盖率;
166.第二比对模块,用于对所述第一代码覆盖率与所述第三代码覆盖率进行比对分析处理,得到对应的分析数据;
167.第一展示模块,用于展示所述分析数据。
168.本实施例中,上述覆盖率数据处理装置中的第五获取模块、第二比对模块与第一展示模块的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s3000至s3002的实现过程,在此不再赘述。
169.进一步地,本技术一实施例中,上述覆盖率数据处理装置,包括:
170.第六获取模块,用于获取预设的统计报告模板;
171.填充模块,用于将所述第一代码覆盖率、所述第二代码覆盖率、所述增量代码覆盖率与所述第三代码覆盖率填入所述统计报告模板内的对应位置处,得到与所述目标代码文件对应的覆盖率统计报告;
172.第二展示模块,用于展示所述覆盖率统计报告;以及,
173.第七获取模块,用于获取预设的邮件登录信息与目标用户的指定邮件地址;
174.登录模块,用于根据所述邮件登录信息登录至对应的邮件服务器;
175.发送模块,用于通过所述邮件服务器将所述覆盖率统计报告发送至所述指定邮件地址。
176.本实施例中,上述覆盖率数据处理装置中的第六获取模块、填充模块、第二展示模块、第七获取模块、登录模块与发送模块的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s30000至s30005的实现过程,在此不再赘述。
177.进一步地,本技术一实施例中,上述覆盖率数据处理装置,包括:
178.判断模块,用于判断是否接收到数据检索指令;
179.第八获取模块,用于若是,获取与所述数据检索指令对应的查询条件信息;其中,所述查询条件包括组件模块信息、版本信息与时间段信息;
180.第九获取模块,用于基于所述查询条件信息,获取与所述查询条件信息对应的历史覆盖率数据;
181.第三展示模块,用于展示所述历史覆盖率数据。
182.本实施例中,上述覆盖率数据处理装置中的判断模块、第八获取模块、第九获取模块与第三展示模块的功能和作用的实现过程具体详见上述覆盖率数据处理方法中对应步骤s600至s603的实现过程,在此不再赘述。
183.参照图3,本技术实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏、输入装置和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存储器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标代码文件、执行轨迹数据、第一代码覆盖率、第二代码覆盖率、测试覆盖率、测试报告模板以及测试覆盖率报告。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的显示屏是计算机中必不可少的一种图文输出设备,用于将数字信号转换为光信号,使文字与图形在显示屏的屏幕上显示出来。该计算机设备的输入装置是计算机与用户或其他设备之间进行信息交换的主要装置,用于把数据、指令及某些标志信息等输送到计算机中去。该计算机程序被处理器执行时以实现一种覆盖率数据处理方法。
184.上述处理器执行上述覆盖率数据处理方法的步骤:
185.获取待测试的目标代码文件;
186.执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
187.对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
188.调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
189.对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
190.基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
191.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的装置、计算机设备的限定。
192.本技术一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种覆盖率数据处理方法,具体为:
193.获取待测试的目标代码文件;
194.执行所述目标代码文件,并在所述目标代码文件执行完毕后,通过预设的代码扫描插件采集与所述目标代码文件对应的执行轨迹数据;
195.对所述执行轨迹数据进行分析处理,生成与所述目标代码文件对应的第一代码覆盖率;
196.调用预设的测试工具获取与所述目标代码文件内包含的各组件模块分别对应的第二代码覆盖率;
197.对所述第一代码覆盖率与所有所述第二代码覆盖率进行合并处理,生成与所述目标代码文件对应的测试覆盖率;
198.基于所述测试覆盖率与预设的测试报告模板,生成与所述目标代码文件对应的测试覆盖率报告。
199.综上所述,本技术实施例中提供的覆盖率数据处理方法、装置、计算机设备和存储介质,在获取到待测试的目标代码文件后,会先执行该目标代码文件,并使用代码扫描插件来生成目标代码文件的第一代码覆盖率。之后调用测试工具来获取目标代码文件内包含的各组件模块分别对应的第二代码覆盖率,并对第一代码覆盖率与第二代码覆盖率进行合并处理来生成目标代码文件的测试覆盖率,进而基于得到的测试覆盖率与预设的测试报告模板,来快速便捷地生成与目标代码文件对应的测试覆盖率报告。本技术实施例通过结合与目标代码文件相关的第一代码覆盖率与第二代码覆盖率来智能的生成对应的测试覆盖率及测试覆盖率报告,实现了从更多的维度上对目标代码文件的测试覆盖率进行全面有效的统计,保证了测试覆盖率统计的全面性与多样性,使得测试人员可以直观的查看到目标代码文件的测试覆盖率的统计情况,并有利于基于统计得到的测试覆盖率来对目标代码文件的测试效果进行准确的评估。。
200.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
201.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
202.以上所述仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1