基于版本的代码测试方法、装置、计算机设备及存储介质与流程

文档序号:31878749发布日期:2022-10-21 22:36阅读:27来源:国知局
基于版本的代码测试方法、装置、计算机设备及存储介质与流程

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.图1为本发明一个实施例中基于版本的代码测试方法的应用场景示意图;
41.图2为本发明一个实施例中基于版本的代码测试方法的流程示意图;
42.图3为本发明一个实施例中获取目标历史代码数据的具体流程示意图;
43.图4为本发明一个实施例中确定变动代码覆盖数据的具体流程示意图;
44.图5为本发明一个实施例中确定目标代码覆盖率的具体流程示意图;
45.图6为本发明一个实施例中得到目标代码覆盖数据的具体流程示意图;
46.图7为本发明一个实施例中基于版本的代码测试装置的结构示意图;
47.图8为本发明一个实施例中计算机设备的内部结构示意图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。在本技术中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。
50.本发明实施例中的基于版本的代码测试方法应用于基于版本的代码测试装置,基于版本的代码测试装置设置于计算机设备;计算机设备可以是终端,例如,手机或平板电脑,计算机设备还可以是一台服务器,或者多台服务器组成的服务集群。
51.如图1所示,图1为本发明实施例中基于版本的代码测试方法的应用场景示意图,本发明实施例中基于版本的代码测试方法的应用场景中包括计算机设备100(计算机设备
100中集成有基于版本的代码测试装置),计算机设备100中运行基于版本的代码测试方法对应的计算机可读存储介质,以执行基于版本的代码测试方法的步骤。
52.可以理解的是,图1所示基于版本的代码测试方法的应用场景中的计算机设备,或者计算机设备中包含的装置并不构成对本发明实施例的限制,即,基于版本的代码测试方法的应用场景中包含的设备数量、设备种类,或者各个设备中包含的装置数量、装置种类不影响本发明实施例中技术方案整体实现,均可以算作本发明实施例要求保护技术方案的等效替换或衍生。
53.本发明实施例中计算机设备100可以是独立的设备,也可以是设备组成的设备网络或设备集群,例如,本发明实施例中所描述的计算机设备100,其包括但不限于电脑、网络主机、单个网络设备、多个网络设备集或多个设备构成的云设备。其中,云设备由基于云计算(cloud computing)的大量电脑或网络设备构成。
54.本领域技术人员可以理解,图1中示出的应用场景,仅仅是与本发明的技术方案对应的一种应用场景,并不构成对本发明的技术方案的应用场景的限定,其他的应用场景还可以包括比图1中所示更多或更少的计算机设备,或者计算机设备网络连接关系,例如图1中仅示出1个计算机设备,可以理解的,该基于版本的代码测试方法的场景还可以包括一个或多个其他计算机设备,具体此处不作限定;该计算机设备100中还可以包括存储器,用于存储基于版本的代码测试方法相关的信息。
55.此外,本发明实施例中的基于版本的代码测试方法的应用场景中计算机设备100可以设置显示装置,或者计算机设备100中不设置显示装置并与外接的显示装置200通讯连接,显示装置200用于输出计算机设备中基于版本的代码测试方法执行的结果。计算机设备100可以访问后台数据库300(后台数据库300可以是计算机设备100的本地存储器,后台数据库300还可以设置在云端),后台数据库300中保存有基于版本的代码测试方法相关的信息。
56.需要说明的是,图1所示的基于版本的代码测试方法的应用场景仅仅是一个示例,本发明实施例描述的基于版本的代码测试方法的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定。
57.基于上述基于版本的代码测试方法的应用场景,提出了基于版本的代码测试方法的实施例。
58.第一方面,如图2所示,在一个实施例中,本发明提供一种基于版本的代码测试方法,包括:
59.步骤201,获取待测试应用的目标版本的待测代码数据以及待测试应用的历史版本的目标历史代码数据;
60.其中,目标版本是指待测试应用中还未进行代码覆盖测试的版本,对应的待测代码数据则是指该版本的代码数据,而历史版本是指待测试应用中进行了代码覆盖测试的版本,对应的目标历史代码数据则是指该版本的代码数据;
61.其中,需要说明的是,目标版本和历史版本没有先后之分,仅表示是否进行了代码覆盖测试,比如目标版本相对于历史版本可以是新版本,也可以是旧版本,只要进行了代码覆盖测试的版本都可以作为目标版本对应的历史版本,即在多数情况下,由于每产生一个版本都会及时进行代码覆盖测试,因此需要进行代码覆盖测试的目标版本在历史版本之
后,但在特殊情况下,比如对没有对产生的版本及时进行代码覆盖测试,而是在后续追溯时再进行代码覆盖测试,从而使需要进行代码覆盖测试的目标版本可能在历史版本之前;
62.步骤202,确定待测代码数据中与目标历史代码数据不同的变动代码数据;
63.其中,由于待测代码数据和目标历史代码数据是同一个待测试应用的不同版本下的代码数据,因此存在重合代码数据,在多数情况下,该重合代码数据在整个代码数据中的占比比较高;毫无疑问的,还存在除重合代码数据之外的变动代码数据,需要说明的是,变动代码数据是通过待测代码数据和目标历史代码数据相对比较得到,且本实施例中的变动代码数据是针对于待测代码数据,即得到的变动代码数据是待测代码数据中的部分代码数据,比如按照编写顺序,待测代码数据包括依次分布的代码数据a、代码数据b以及代码数据c,而目标历史代码数据包括依次分布的代码数据a、代码数据d以及代码数据c,则代码数据b和代码数据d分别作为待测代码数据和目标历史代码数据的变动代码数据,且本实施例中所指的变动代码数据具体是指代码数据b;再比如,待测代码数据包括依次分布的代码数据a、代码数据b以及代码数据c,而目标历史代码数据包括依次分布的代码数据a和代码数据c,则代码数据b作为待测代码数据的变动代码数据,且本实施例中所指的变动代码数据具体是指代码数据b;
64.步骤203,确定变动代码数据的变动代码覆盖数据;
65.其中,变动代码覆盖数据是指变动代码数据通过对应的操作处理,得到的包含有对能够执行到的代码数据的标记的代码数据,标记的代码数据能够用于后续代码覆盖率的计算;
66.其中,可响应于测试人员针对变动代码数据的操作指令,来得到变动代码覆盖数据,即通过测试人员人工判断变动代码数据中哪些代码能够被执行,并对其进行标记;
67.步骤204,获取目标历史代码数据的历史代码覆盖数据;
68.其中,历史代码覆盖数据的数据属性同上述变动代码覆盖数据一致,在此不再赘述,由于历史代码覆盖数据是在之前对目标历史代码数据进行覆盖测试时已经得到的数据,因此在本实施例中,可直接在对应的存储空间中读取得到;
69.步骤205,根据历史代码覆盖数据和变动代码覆盖数据,确定得到待测代码数据的目标代码覆盖率;
70.其中,以步骤202中对待测代码数据和目标历史代码数据的举例进行说明,当待测代码数据包括代码数据a、代码数据b以及代码数据c,目标历史代码数据包括代码数据a、代码数据d以及代码数据c时,可直接在历史代码覆盖数据中获取对应代码数据a和代码数据c的重合代码覆盖数据,并确定重合代码覆盖数据的重合代码覆盖率,然后确定对应代码数据b的变动代码覆盖数据的变动代码覆盖率,最终根据重合代码覆盖数据和变动代码覆盖数据的数量比值,对重合代码覆盖率和变动代码覆盖率进行加权平均处理,得到待测代码数据的目标代码覆盖率;当待测代码数据包括代码数据a、代码数据b以及代码数据c,目标历史代码数据包括代码数据a和代码数据c时,可直接获取对应代码数据a和代码数据c的重合代码覆盖率(也即目标历史代码数据的历史代码覆盖率),然后重复上个例子中的步骤,得到待测代码数据的目标代码覆盖率。
71.通过上述基于版本的代码测试方法,在对待测试应用的目标版本的待测代码数据进行代码覆盖测试时,先获取对应的历史版本的历史代码数据,然后确定待测代码数据相
对于历史代码数据的变动代码数据,由于历史代码数据的历史代码覆盖数据是能够直接获取的,从而只需要确定变动代码数据的变动代码覆盖数据,最终直接根据历史代码覆盖数据和变动代码覆盖数据得到待测代码数据对应的目标代码覆盖率;整个过程中,只需要确定一小部分代码数据的代码覆盖数据,处理的代码数据量大幅降低,从而提高了测试效率,并且也能够避免花费较多的测试成本。
72.如图3所示,在一个实施例中,获取待测试应用的历史版本的目标历史代码数据,包括:
73.步骤301,获取待测试应用的多个不同历史版本的初始历史代码数据;
74.其中,上述实施例已经提到,历史版本是指待测试应用中进行了代码覆盖测试的版本,因此毫无疑问的,历史版本可以有多个,且分别对应不同的初始历史代码数据;比如目标版本的待测代码数据包括代码数据a、代码数据b以及代码数据c,第一初始历史代码数据包括代码数据a、代码数据b,第二初始历史代码数据包括代码数据a;再比如目标版本的待测代码数据包括代码数据a、代码数据b、代码数据c以及代码数据d,第三初始历史代码数据包括代码数据a、代码数据b以及代码数据c,第四初始历史代码数据包括代码数据a、代码数据b、代码数据c以及代码数据e;
75.步骤302,分别确定待测代码数据与每个初始历史代码数据的差异程度;
76.其中,差异程度表征待测代码数据相对于每个初始历史代码数据的变动代码数据的数据量大小,待测代码数据相对于第一初始历史代码数据增加了代码数据c,待测代码数据相对于第二初始历史代码数据增加了代码数据b和代码数据c,如此可以看出,待测代码数据与第一初始历史代码数据的差异程度小于待测代码数据与第二初始历史代码数据的差异程度;待测代码数据相对于第三初始历史代码数据增加了代码数据d,待测代码数据相对于第四初始历史代码数据将代码数据e修改为代码数据d,如此可以看出,虽然从结果来看待测代码数据相对于第三初始历史代码数据和第四初始历史代码数据都是增加了代码数据d,但实现的方式存在差异,对于第三初始历史代码数据是直接增加,而对于第四初始历史代码数据是通过修改替换的方式来增加,结合后续处理过程,可以确定待测代码数据与第三初始历史代码数据的差异程度小于待测代码数据与第四初始历史代码数据的差异程度;
77.步骤303,将差异程度最小的初始历史代码数据确定为目标历史代码数据;
78.其中,差异程度越小,说明对应的变动代码数据的数据量越小,如此针对变动代码数据的处理量越小,能够提高处理效率,节省处理资源。
79.如图4所示,在一个实施例中,确定变动代码数据的变动代码覆盖数据,包括:
80.步骤401,确定变动代码数据在待测代码数据中所属的变动代码数据块;
81.其中,代码数据块表征进行代码执行的最小数据单元;
82.其中,上述实施例已经提到,变动代码数据可通过测试人员人工判断和标记,但人工方式会影响处理效率,并且会增加人工成本,在本实施例中,可采用对应的代码覆盖测试工具针对变动代码数据进行代码执行,从而实现自动测试;
83.其中,通过代码覆盖测试工具进行代码执行的前提是代码能够被执行,若变动代码数据只是涉及相关变量或判断逻辑的修改,只针对修改的变动代码数据可能无法被执行,因此需要确定变动代码数据对应的待测代码数据中所属的变动代码数据块,在变动代
码数据块中,不仅包含了变动代码数据,还包括了其他各种信息对应的代码数据,比如属性信息、环境信息等,这些信息能够保证代码被可靠的执行;其中变动代码数据块中除变动代码数据之外的其他代码数据实质是属于重合代码数据,但在本实施例中,需要通过代码覆盖测试工具进行代码执行,因此需要将其划分到变动代码数据中,即得到的变动代码数据块;
84.步骤402,对变动代码数据块进行代码执行,得到变动代码覆盖数据;
85.其中,由于变动代码数据块中包含了支撑代码执行的各种信息以及对应的变动代码数据,因此可直接通过代码覆盖测试工具进行执行,从而得到对应的变动代码覆盖数据,同理的,变动代码覆盖数据中实质包含有重合的代码覆盖数据。
86.如图5所示,在一个实施例中,根据历史代码覆盖数据和变动代码覆盖数据,确定得到待测代码数据的目标代码覆盖率,包括:
87.步骤501,按照位置关系对历史代码覆盖数据和变动代码覆盖数据进行提取组合,得到待测代码数据的目标代码覆盖数据;
88.其在,比如目标历史代码数据包括依次分布的代码数据a、代码数据b以及代码数据c,对应的历史代码覆盖数据包括依次分布的代码覆盖数据a、代码覆盖数据b以及代码覆盖数据c,待测代码数据包括依次分布的代码数据a、代码数据b、代码数据c以及代码数据d,则对应的变动代码数据为代码数据d,对应的变动代码覆盖数据为代码覆盖数据d,期望得到的目标代码覆盖数据包括依次分布的代码覆盖数据a、代码覆盖数据b、代码覆盖数据c以及代码覆盖数据d,因此目标代码覆盖数据由历史代码覆盖数据的代码覆盖数据a、代码覆盖数据b和代码覆盖数据c以及变动代码覆盖数据(即代码覆盖数据d)组成,在得到了历史代码覆盖数据和变动代码覆盖数据之后,即可根据对应的位置关系,分别对历史代码覆盖数据和变动代码覆盖数据依次进行提取和组合,从而得到最终的目标代码覆盖数据;
89.步骤502,确定目标代码覆盖数据的目标代码覆盖率;
90.其中,在得到目标代码覆盖数据之后,即可直接针对目标代码覆盖数据,确定对应的目标代码覆盖率,具体过程可参照上述实施例中的变动代码覆盖数据,在此不再赘述;
91.其中,对于目标代码覆盖数据,可通过不同的覆盖分析策略,来得到对应的目标代码覆盖率;比如可以采用判定覆盖分析策略(指出源代码的每个布尔表达式正确或错误执行的情况,判定覆盖的目标是通过检查并确保每个判定点的每个分支至少执行一次来覆盖和验证所有可访问的源代码)、分支覆盖分析策略(对来自代码模块(语句或循环)的每个结果进行测试,分支覆盖的目的是确保来自每个分支的每个决策条件至少执行一次,它有助于测量独立代码段的百分比,并找出没有分支的部分;例如,如果结果是布尔类型,则需要同时测试true和false结果)或条件覆盖分析策略(用于测试和评估条件语句中的变量或子表达式,条件覆盖的目标是检查每个逻辑条件的单个结果,与判定覆盖相比,条件覆盖对控制流的敏感性更高)。
92.通过确定一个与待测代码数据对应的完整的目标代码覆盖数据,相对于上述实施例中分别确定历史代码覆盖数据和变动代码覆盖数据各自的代码覆盖率,然后根据数量比值进行加权平均而言,能够保留与待测代码数据对应的完整的目标代码覆盖数据,便于后续追溯。
93.如图6所示,在一个实施例中,按照位置关系对历史代码覆盖数据和变动代码覆盖
数据进行提取组合,得到待测代码数据的目标代码覆盖数据,包括:
94.步骤601,确定历史代码覆盖数据中与变动代码覆盖数据位置对应的待替换代码覆盖数据;
95.其中,比如目标历史代码数据包括依次分布的代码数据a、代码数据b以及代码数据c,对应的历史代码覆盖数据包括依次分布的代码覆盖数据a、代码覆盖数据b以及代码覆盖数据c,待测代码数据包括依次分布的代码数据a、代码数据b以及代码数据d,则对应的变动代码数据为代码数据d,对应的变动代码覆盖数据为代码覆盖数据d,按照位置关系,变动代码覆盖数据(即代码覆盖数据d)与历史代码覆盖数据中的代码覆盖数据c位置对应,因此代码覆盖数据c确定为待替换代码覆盖数据;
96.步骤602,将变动代码覆盖数据与待替换代码覆盖数据进行替换,得到目标代码覆盖数据;
97.其中,当变动代码覆盖数据(即代码覆盖数据d)与待替换代码覆盖数据(即代码覆盖数据c)进行替换后,得到新的历史代码覆盖数据,其包括依次分布的代码覆盖数据a、代码覆盖数据b以及代码覆盖数据c,也即目标代码覆盖数据。
98.通过替换的方式,能够以历史代码覆盖数据为基础框架,只需少量的处理量即可得到所需要的目标代码覆盖数据,提高了处理效率。
99.在一个实施例中,确定目标代码覆盖数据的目标代码覆盖率,包括:
100.确定目标代码覆盖数据中的已执行代码数据和总代码数据;
101.其中,上述已经提到,在目标代码覆盖数据中,对已执行过的代码数据进行了标记,因此只需基于标记即可获取到已执行代码数据,而总代码数据即为目标代码覆盖数据本身;
102.根据已执行代码数据和总代码数据的数量比值,确定得到目标代码覆盖率;
103.其中,根据数量比值来确定对应的代码覆盖率是一种高效的覆盖分析策略,即语句覆盖分析策略(源代码中的所有可执行语句至少执行一次,它用于计算源代码中已执行的语句数,语句覆盖的主要目的是覆盖源代码中所有可能的路径、行和语句);
104.其中,若已执行代码数据包括800个语句,总代码数据包括1000个语句,则对应的数量比值为800/1000,转换为百分比,即可得到对应的目标代码覆盖率:80%。
105.语句覆盖分析策略的结构简单,容易处理代码量较大的待测代码数据。
106.在一个实施例中,在确定得到待测代码数据的目标代码覆盖率的步骤之后,上述基于版本的代码测试方法还包括:
107.对目标代码覆盖率进行评估分析,得到与目标代码覆盖率对应的覆盖率分析报告;
108.根据覆盖率分析报告,输出提示信息。
109.其中,得到的目标代码覆盖率仅仅为一个百分比数,相关人员无法基于该百分比数进行深层次的分析,而在测试服务方中,由于存在各项中间数据,比如历史代码覆盖数据、变动代码覆盖数据以及目标代码覆盖数据,可进一步分析目标代码覆盖率的具体构成,比如哪部分代码的覆盖率较低,哪部分代码的覆盖率较高,从而得到一个全面的覆盖率分析报告,当相关人员查看该覆盖率分析报告时,能够非常直观的判断待测代码数据的质量情况;
110.其中,提示信息的输出可以采用邮件、短信以及电话等方式。
111.第二方面,如图7所示,在一个实施例中,本发明提供一种基于版本的代码测试装置,包括:
112.第一获取模块701,用于获取待测试应用的目标版本的待测代码数据以及待测试应用的历史版本的目标历史代码数据;
113.变动确定模块702,用于确定待测代码数据中与目标历史代码数据不同的变动代码数据;
114.代码覆盖模块703,用于确定变动代码数据的变动代码覆盖数据;
115.第二获取模块704,用于获取目标历史代码数据的历史代码覆盖数据;
116.覆盖率模块705,用于根据历史代码覆盖数据和变动代码覆盖数据,确定得到待测代码数据的目标代码覆盖率。
117.通过上述基于版本的代码测试装置,在对待测试应用的目标版本的待测代码数据进行代码覆盖测试时,先获取对应的历史版本的历史代码数据,然后确定待测代码数据相对于历史代码数据的变动代码数据,由于历史代码数据的历史代码覆盖数据是能够直接获取的,从而只需要确定变动代码数据的变动代码覆盖数据,最终直接根据历史代码覆盖数据和变动代码覆盖数据得到待测代码数据对应的目标代码覆盖率;整个过程中,只需要确定一小部分代码数据的代码覆盖数据,处理的代码数据量大幅降低,从而提高了测试效率,并且也能够避免花费较多的测试成本。
118.第三方面,在一个实施例中,本发明提供一种计算机设备,如图8所示,其示出了本发明所涉及的计算机设备的结构,具体来讲:
119.该计算机设备可以包括一个或者一个以上处理核心的处理器801、一个或一个以上计算机可读存储介质的存储器802、电源803和输入单元804等部件。本领域技术人员可以理解,图8中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
120.处理器801是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器801可包括一个或多个处理核心;优选的,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。
121.存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器802还可以包括存储器控制器,以提供处理器801对存储器802的访问。
122.计算机设备还包括给各个部件供电的电源803,优选的,电源803可以通过电源管
理系统与处理器801逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源803还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
123.该计算机设备还可包括输入单元804,该输入单元804可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
124.尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器801会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的计算机程序,以执行如下步骤:
125.获取待测试应用的目标版本的待测代码数据以及待测试应用的历史版本的目标历史代码数据;
126.确定待测代码数据中与目标历史代码数据不同的变动代码数据;
127.确定变动代码数据的变动代码覆盖数据;
128.获取目标历史代码数据的历史代码覆盖数据;
129.根据历史代码覆盖数据和变动代码覆盖数据,确定得到待测代码数据的目标代码覆盖率。
130.通过上述计算机设备,在对待测试应用的目标版本的待测代码数据进行代码覆盖测试时,先获取对应的历史版本的历史代码数据,然后确定待测代码数据相对于历史代码数据的变动代码数据,由于历史代码数据的历史代码覆盖数据是能够直接获取的,从而只需要确定变动代码数据的变动代码覆盖数据,最终直接根据历史代码覆盖数据和变动代码覆盖数据得到待测代码数据对应的目标代码覆盖率;整个过程中,只需要确定一小部分代码数据的代码覆盖数据,处理的代码数据量大幅降低,从而提高了测试效率,并且也能够避免花费较多的测试成本。
131.本领域普通技术人员可以理解,上述实施例的任一种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
132.第四方面,在一个实施例中,本发明提供一种存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行如下步骤:
133.获取待测试应用的目标版本的待测代码数据以及待测试应用的历史版本的目标历史代码数据;
134.确定待测代码数据中与目标历史代码数据不同的变动代码数据;
135.确定变动代码数据的变动代码覆盖数据;
136.获取目标历史代码数据的历史代码覆盖数据;
137.根据历史代码覆盖数据和变动代码覆盖数据,确定得到待测代码数据的目标代码覆盖率。
138.通过上述存储介质,在对待测试应用的目标版本的待测代码数据进行代码覆盖测试时,先获取对应的历史版本的历史代码数据,然后确定待测代码数据相对于历史代码数据的变动代码数据,由于历史代码数据的历史代码覆盖数据是能够直接获取的,从而只需
要确定变动代码数据的变动代码覆盖数据,最终直接根据历史代码覆盖数据和变动代码覆盖数据得到待测代码数据对应的目标代码覆盖率;整个过程中,只需要确定一小部分代码数据的代码覆盖数据,处理的代码数据量大幅降低,从而提高了测试效率,并且也能够避免花费较多的测试成本。
139.本领域普通技术人员可以理解,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
140.由于该存储介质中所存储的计算机程序,可以执行本发明所提供的任一种实施例中的基于版本的代码测试方法中的步骤,因此,可以实现本发明所提供的任一种实施例中的基于版本的代码测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
141.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
142.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
143.以上对本发明所提供的一种基于版本的代码测试方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
144.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1