划分代码的代码测试方法、装置、计算机设备及存储介质与流程

文档序号:32213739发布日期:2022-11-16 06:52阅读:43来源:国知局
划分代码的代码测试方法、装置、计算机设备及存储介质与流程

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.图1为本发明一个实施例中划分代码的代码测试方法的应用场景示意图;
40.图2为本发明一个实施例中划分代码的代码测试方法的流程示意图;
41.图3为本发明一个实施例中划分代码的代码测试装置的结构示意图;
42.图4为本发明一个实施例中计算机设备的内部结构示意图。
具体实施方式
43.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。在本技术中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。
45.本发明实施例中的划分代码的代码测试方法应用于划分代码的代码测试装置,划分代码的代码测试装置设置于计算机设备;计算机设备可以是终端,例如,手机或平板电脑,计算机设备还可以是一台服务器,或者多台服务器组成的服务集群。
46.如图1所示,图1为本发明实施例中划分代码的代码测试方法的应用场景示意图,本发明实施例中划分代码的代码测试方法的应用场景中包括计算机设备100(计算机设备100中集成有划分代码的代码测试装置),计算机设备100中运行划分代码的代码测试方法对应的计算机可读存储介质,以执行划分代码的代码测试方法的步骤。
47.可以理解的是,图1所示划分代码的代码测试方法的应用场景中的计算机设备,或者计算机设备中包含的装置并不构成对本发明实施例的限制,即,划分代码的代码测试方法的应用场景中包含的设备数量、设备种类,或者各个设备中包含的装置数量、装置种类不影响本发明实施例中技术方案整体实现,均可以算作本发明实施例要求保护技术方案的等效替换或衍生。
48.本发明实施例中计算机设备100可以是独立的设备,也可以是设备组成的设备网络或设备集群,例如,本发明实施例中所描述的计算机设备100,其包括但不限于电脑、网络主机、单个网络设备、多个网络设备集或多个设备构成的云设备。其中,云设备由基于云计算(cloud computing)的大量电脑或网络设备构成。
49.本领域技术人员可以理解,图1中示出的应用场景,仅仅是与本发明的技术方案对应的一种应用场景,并不构成对本发明的技术方案的应用场景的限定,其他的应用场景还可以包括比图1中所示更多或更少的计算机设备,或者计算机设备网络连接关系,例如图1中仅示出1个计算机设备,可以理解的,该划分代码的代码测试方法的场景还可以包括一个或多个其他计算机设备,具体此处不作限定;该计算机设备100中还可以包括存储器,用于存储划分代码的代码测试方法相关的信息。
50.此外,本发明实施例中的划分代码的代码测试方法的应用场景中计算机设备100可以设置显示装置,或者计算机设备100中不设置显示装置并与外接的显示装置200通讯连接,显示装置200用于输出计算机设备中划分代码的代码测试方法执行的结果。计算机设备100可以访问后台数据库300(后台数据库300可以是计算机设备100的本地存储器,后台数据库300还可以设置在云端),后台数据库300中保存有划分代码的代码测试方法相关的信息。
51.需要说明的是,图1所示的划分代码的代码测试方法的应用场景仅仅是一个示例,本发明实施例描述的划分代码的代码测试方法的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定。
52.基于上述划分代码的代码测试方法的应用场景,提出了划分代码的代码测试方法的实施例。
53.第一方面,如图2所示,在一个实施例中,本发明提供一种划分代码的代码测试方法,包括:
54.步骤201,获取调用方发送的测试请求以及对应的待测代码数据;
55.其中,待测代码数据可以直接被包含在调用方发送的测试请求中(在该方式中,需要通过解析测试请求来获取该待测代码数据),也可以存储在某个地址中,而该地址被包含在调用方发送的测试请求中,采用地址的方式,可以降低测试请求的数据量,从而节省传输
资源;
56.其中,调用方是指需要发送测试请求来调用服务方对对应的软件应用进行代码覆盖测试的终端设备,同调用方一样,本实施例中的划分代码的代码测试方法的执行主体为服务方,是指响应于调用方的测试请求来进行代码覆盖测试的终端设备;通常情况下,调用方和服务方式基于不同的终端设备分别发送测试请求和响应测试请求,其中调用方和服务方可通过http协议(超文本传输协议hypertext transfer protoco,它是基于tcp协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则)来发送和接收测试请求,即测试请求为http请求(http请求包括http请求行、http请求头和http请求正文),在该http请求中,待测代码数据或地址数据存放在http请求正文中;
57.步骤202,根据调用方发送的测试请求对待测代码数据进行代码执行,得到待测代码数据的目标代码覆盖数据;
58.其中,目标代码覆盖数据是指待测代码数据通过相应的测试工具的执行后,得到的包含有对已执行代码数据的标记的代码数据,标记的已执行代码数据能够用于后续代码覆盖率的计算;
59.步骤203,对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据;
60.其中,代码划分是指对目标代码覆盖数据中的全部代码语句进行拆解,从而得到多个代码语句的集合,每个集合都作为对应的子代码覆盖数据;上述步骤已经提到,目标代码覆盖数据中包含有标记的已执行代码数据,而在该步骤中仅仅是对目标代码覆盖数据中的全部代码语句进行提取再组合,因此得到的子代码覆盖数据中仍然包含有原本标记的已执行代码数据,也即后续能够直接基于子代码覆盖数据计算得到该子代码覆盖数据的子代码覆盖率;
61.其中,代码划分是为了能够得到多个子代码覆盖数据,从而能够在后续通过加权处理将各自对应的子代码覆盖率整合为一个目标代码覆盖率,从而体现待测代码数据中各代码语句之间的差异;因此,代码划分可以采用随机方式,比如通过预设的随机机制,提取目标代码覆盖数据中的任意数量的代码语句,然后组合得到对应的子代码覆盖数据;还可以采用按序方式,比如提取第x行到第x+n行的代码语句,然后组合得到对应的子代码覆盖数据;
62.步骤204,确定各子代码覆盖数据的子代码覆盖率,并根据各子代码覆盖数据的属性信息确定各子代码覆盖率的初始覆盖率权重;
63.其中,对于每个子代码覆盖数据,可通过不同的覆盖分析策略,来得到对应的子代码覆盖率;比如可以采用判定覆盖分析策略(指出源代码的每个布尔表达式正确或错误执行的情况,判定覆盖的目标是通过检查并确保每个判定点的每个分支至少执行一次来覆盖和验证所有可访问的源代码)、分支覆盖分析策略(对来自代码模块(语句或循环)的每个结果进行测试,分支覆盖的目的是确保来自每个分支的每个决策条件至少执行一次,它有助于测量独立代码段的百分比,并找出没有分支的部分;例如,如果结果是布尔类型,则需要同时测试true和false结果)或条件覆盖分析策略(用于测试和评估条件语句中的变量或子表达式,条件覆盖的目标是检查每个逻辑条件的单个结果,与判定覆盖相比,条件覆盖对控制流的敏感性更高);
64.其中,属性信息可以是子代码覆盖数据对应的代码类型,具体的,可以是子代码覆盖数据中各代码类型的代码语句的占比情况,比如某个代码类型的代码语句在整个待测代码数据进行实际执行时的影响较大(比如缺少该代码类型的代码语句时可能严重影响执行过程,甚至导致无法执行),因此可进一步分析子代码覆盖数据中是否存在该代码类型的代码语句以及存在多少该代码类型的代码语句,从而确定子代码覆盖数据的子代码覆盖率的初始覆盖率权重;
65.步骤205,根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率;
66.其中,加权处理可以是加权求和的方式,比如划分得到的多个子代码覆盖数据分别为子代码覆盖数据a、子代码覆盖数据b、子代码覆盖数据c以及子代码覆盖数据d,若得到的子代码覆盖率分别为80%、80%、90%、90%,且对应的初始覆盖率权重分别为30%、30%、20%、20%,则最终的目标代码覆盖率为:
67.80%*30%+80%*30%+90%*20%+90%*20%=24%+24%+18%+18%=84%。
68.通过上述划分代码的代码测试方法,在对待测代码数据进行代码执行后,对得到的目标代码覆盖数据中的代码语句进行代码划分,从而得到多个子代码覆盖数据,根据各子代码覆盖数据的属性信息确定子代码覆盖数据的影响大小,即确定到各子代码覆盖数据的子代码覆盖率的初始覆盖率权重,最终直接将各子代码覆盖率根据对应的初始覆盖率权重加权得到目标代码覆盖率;使得测试过程考虑了待测代码数据中各代码语句之间的差异,得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
69.在一个实施例中,根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率,包括:
70.确定各子代码覆盖数据与目标代码覆盖数据的数量比值;
71.其中,由于子代码覆盖数据是通过代码划分得到,因此不同子代码覆盖数据之间的语句数量可能不同,而子代码覆盖数据的语句数量会影响后续加权处理的结果;比如,多个子代码覆盖数据分别为子代码覆盖数据a、子代码覆盖数据b,若得到的子代码覆盖率分别为90%和20%(该数据仅用于举例说明,不要求实际的代码覆盖率需要达到该限度),且对应的初始覆盖率权重分别为50%和50%,此时若不考虑数量比值,则得到的目标代码覆盖率为90%*50%+20%*50%=55%,若子代码覆盖数据a和子代码覆盖数据b与目标代码覆盖数据的数量比值分别为90%和10%,则说明实际情况中,待测代码数据中大部分的代码数据的代码覆盖率都比较高,仅有小部分的代码数据的代码覆盖率较低,因此最终的目标代码覆盖率应该是比较高的,因此需要确定各子代码覆盖数据与目标代码覆盖数据的数量比值并将数量比值应用到后续的加权处理中,从而规避各子代码覆盖数据之间的数量差异而导致的失真问题;需要说明的是,当划分得到的多个子代码覆盖数据与目标代码覆盖数据的数量比值基本相同时,则无需将数量比值应用到后续的加权处理中;
72.根据各子代码覆盖数据的初始覆盖率权重以及各子代码覆盖数据与目标代码覆盖数据的数量比值,得到各子代码覆盖数据的目标覆盖率权重;
73.其中,比如多个子代码覆盖数据分别为子代码覆盖数据a、子代码覆盖数据b,若得到的子代码覆盖率分别为90%和20%,对应的初始覆盖率权重分别为50%和50%,且子代码覆盖数据a和子代码覆盖数据b与目标代码覆盖数据的数量比值分别为90%和10%,则得
到的目标覆盖率权重分别为50%*90%=45%和50%*10%=5%,由于得到的目标覆盖率权重之和不等于100%,因此可将其进行转换,最终得到的目标覆盖率权重分别为90%和10%,这显然与50%和50%的初始覆盖率权重存在明显差异;
74.根据各子代码覆盖数据的目标覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖率;
75.其中,以上述步骤中的举例为例,目标代码覆盖率为:
76.90%*90%+20%*10%=83%,
77.这结果显然更加符合实际情况,未出现失真的情况。
78.在一个实施例中,对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据,包括:
79.确定目标代码覆盖数据中代码语句的代码类型;
80.其中,代码类型包括条件判定类型、循环执行类型和转向类型;
81.其中,除了条件判定类型、循环执行类型和转向类型等控制语句类型外,还可以包括表达式语句类型、函数调用语句类型、复合语句类型以及空语句类型等;
82.其中,确定了代码类型后,能够将代码类型作为代码划分的条件,从而完成代码划分;
83.根据目标代码覆盖数据中代码语句的代码类型,对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据;每个子代码覆盖数据对应一种代码类型;
84.其中,由于将代码类型作为代码划分的条件,因此划分得到的每个子代码覆盖数据中只会包含一种代码类型的代码语句,如此使后续根据子代码覆盖数据中代码语句的代码类型来确定子代码覆盖数据的初始代码覆盖率权重时能够更加高效和准确。
85.在一个实施例中,确定目标代码覆盖数据中代码语句的代码类型,包括:
86.确定目标代码覆盖数据中代码语句的特征代码字符;
87.其中,特征代码字符是指代码语句中的一个或多个字符,比如printf、if、switch、do while、while、for、break、goto、continue、return等;
88.根据特征代码字符,确定得到目标代码覆盖数据中代码语句的代码类型;
89.其中,特征代码字符能够表示对应的代码语句的功能,也即能够示出对应的代码语句的代码类型;比如当特征代码字符为printf时,可以确定对应的代码语句的代码类型为函数调用语句类型;比如当特征代码字符为if、switch时,可以确定对应的代码语句的代码类型为条件判定类型;比如当特征代码字符为do while、while、for时,可以确定对应的代码语句的代码类型为循环执行类型;比如当特征代码字符为break、goto、continue、return时,可以确定对应的代码语句的代码类型为转向类型。
90.在一个实施例中,属性信息包括目标代码覆盖数据中代码语句的代码类型;根据各子代码覆盖数据的属性信息确定各子代码覆盖率的初始覆盖率权重,包括:
91.获取预设的目标权重配置表;
92.其中,目标权重配置表包括多个样本覆盖率权重以及样本覆盖率权重对应的样本代码类型;
93.其中,目标权重配置表是由测试人员根据经验值预设设置的,目标权重配置表中包含有所有代码类型的覆盖率权重;
94.针对每个子代码覆盖数据,根据该子代码覆盖数据对应的代码类型,在目标权重配置表中匹配对应的样本代码类型,将匹配到的样本代码类型对应的样本覆盖率权重设置为该子代码覆盖数据块的初始覆盖率权重;
95.其中,在获取到目标权重配置表后,即可根据代码类型匹配到对应的覆盖率权重;比如,确定到的代码类型包括条件判定类型、循环执行类型和转向类型,则只需在目标权重配置表中匹配与这三个代码类型对应的样本覆盖率权重并将其设置为初始覆盖率权重。
96.在一个实施例中,在获取预设的目标权重配置表的步骤之前,上述划分代码的代码测试方法还包括:
97.设置多个样本代码类型;样本代码类型包括条件判定类型、循环执行类型和转向类型;
98.响应权重设置指令,设置各样本代码类型对应的样本覆盖率权重;
99.根据各样本代码类型以及对应的样本覆盖率权重进行配置表构建,得到目标权重配置表;
100.其中,条件判定类型的样本覆盖率权重大于循环执行类型和转向类型的样本覆盖率权重;在通常情况下,条件判定类型的代码语句对执行过程的影响更大。
101.在一个实施例中,获取预设的目标权重配置表,包括:
102.获取预设的配置表模板库;
103.其中,配置表模板库包括多个样本权重配置表以及样本权重配置表对应的样本应用类型;
104.其中,测试人员可预先根据经验值针对应用类型设置多个权重配置表,不同类型的应用对应的测试侧重点不同,比如可能有的应用更加看重条件覆盖和判定覆盖,也可能有的应用更加看重其他覆盖,因此不同类型的应用在进行测试时所需要的权重配置表不同,也即在配置表模板库中包含有所有应用类型对应的权重配置表;
105.确定待测代码数据对应的待测应用的目标应用类型;
106.其中,目标应用类型可通过对待测代码数据进行识别分析来得到,也可以是由测试人员通过调用方发送测试请求时,将目标应用类型添加在测试请求中,从而在接收到该测试请求后对其进行解析来得到;
107.其中,当通过识别分析来得到目标应用类型时,可通过ai(artificial intelligence,人工智能)模型,使用各种典型的高性能机器学习算法进行高效处理;具体的,获取训练好的类型识别模型,将初始待测代码数据输入到类型识别模块中,得到类型识别模型输出的目标应用类型,利用ai算法的优势,通过大量数据的训练、学习,使得类型识别模型能够自动规避部分误差,从而极大的提高了识别的精度和效率;
108.根据目标应用类型,在配置表模板库中匹配对应的样本应用类型,将匹配到的样本应用类型对应的样本权重配置表设置为目标权重配置表;
109.其中,在获取到配置表模板库后,即可根据应用类型匹配到对应的权重配置表;比如,待测应用的目标应用类型为“侧重条件覆盖和判定覆盖”,则只需在配置表模板库中匹配与“侧重条件覆盖和判定覆盖”对应的样本权重配置表并将其设置为目标权重配置表,若待测应用为其他应用类型,则同理根据应用类型在配置表模块库中进行匹配即可。
110.在一个实施例中,类型识别模型的训练步骤包括:
111.获取训练样本集,训练样本集中包括由多个训练样本,每个训练样本包括训练待测代码数据和训练应用类型;其中,训练应用类型由训练待测代码数据经过人工处理得到;
112.获取一个训练样本,将训练待测代码数据作为类型识别模型的输入,将训练应用类型作为类型识别模型的期望输出,对类型识别模型进行训练,即完成一次训练;
113.确定类型识别模型的实际输出与期望输出的比对结果,若比对结果不满足要求时,根据比对结果更新类型识别模型的模型参数;
114.获取下一个训练样本,然后重新进入将训练待测代码数据作为类型识别模型的输入,将训练应用类型作为类型识别模型的期望输出,对类型识别模型进行训练的步骤,直至得到的比对结果满足要求时,停止训练,得到训练好的类型识别模型。
115.在一个实施例中,根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率,包括:
116.将各子代码覆盖数据的子代码覆盖率按照各子代码覆盖数据的初始覆盖率权重进行加权平均,得到目标代码覆盖率;
117.其中,由于不同待测应用对应的目标代码覆盖数据中的代码类型种类不同,比如目标代码覆盖数据a中的代码类型包括代码类型a、代码类型b、代码类型c,目标代码覆盖数据b中的代码类型包括代码类型a、代码类型b,若目标代码覆盖数据a和目标代码覆盖数据b所需要的目标权重配置表相同,则该目标权重配置表中至少包括代码类型a、代码类型b、代码类型c对应的样本覆盖率权重,若这三个样本覆盖率权重的和为100%,当采用加权求和时,目标代码覆盖数据a对应的目标代码覆盖率的总值为100%,由于样本覆盖率权重的值是固定的,当仍然采用加权求和时会导致缺少代码类型c的目标代码覆盖数据b的目标代码覆盖率的总值低于100%,从而不便于后续测试人员查看,还需要进行进一步的转换;通过加权平均处理,能够使每个目标代码覆盖数据的目标代码覆盖率的总值为100%,便于测试人员查看。
118.在一个实施例中,确定各子代码覆盖数据的子代码覆盖率,包括:
119.确定子代码覆盖数据中的已执行代码数据和总代码数据;
120.其中,上述已经提到,在子代码覆盖数据中,对已执行过的代码数据进行了标记,因此只需基于标记即可获取到已执行代码数据,而总代码数据即为子代码覆盖数据本身;
121.根据已执行代码数据和总代码数据的数量比值,确定得到子代码覆盖率;
122.其中,根据数量比值来确定对应的代码覆盖率是一种高效的覆盖分析策略,即语句覆盖分析策略(源代码中的所有可执行语句至少执行一次,它用于计算源代码中已执行的语句数,语句覆盖的主要目的是覆盖源代码中所有可能的路径、行和语句);
123.其中,若已执行代码数据包括800个语句,总代码数据包括1000个语句,则对应的数量比值为800/1000,转换为百分比,即可得到对应的初始代码覆盖率:80%。
124.语句覆盖分析策略的结构简单,容易处理代码量较大的待测代码数据。
125.在一个实施例中,在得到目标代码覆盖数据的目标代码覆盖率的步骤之后,上述划分代码的代码测试方法还包括:
126.对目标代码覆盖率进行评估分析,得到与目标代码覆盖率对应的覆盖率分析报告;
127.根据覆盖率分析报告,输出提示信息;
128.其中,覆盖率分析报告可直接添加在提示信息中从而一并输出至测试人员的终端设备上,当测试人员接收到提示信息时,即可立即获取到对应的覆盖率分析报告;
129.其中,得到的目标代码覆盖率仅仅为一个百分比数,相关人员无法基于该百分比数进行深层次的分析,而在测试服务方中,由于存在各项中间数据,可进一步分析目标代码覆盖率的具体构成,比如哪部分代码的覆盖率较低,哪部分代码的覆盖率较高,从而得到一个全面的覆盖率分析报告,当相关人员查看该覆盖率分析报告时,能够非常直观的判断初始待测代码数据的质量情况;
130.其中,提示信息的输出可以采用邮件、短信以及电话等方式,可以理解的是,不同输出方式对应的提示信息的数据形式不同,包括语音、文本、图片和视频等形式;
131.其中,提示信息可根据覆盖率分析报告的评价标识进行调整,评价标识用于表征目标代码覆盖率的大小,比如目标代码覆盖率低于百分之六十,则评价标识可以为“差”,比如目标代码覆盖率高于百分之九十,则评价标识可以为“好”;若评价标识为“差”时,提示信息可以同时通过邮件、短信以及电话等方式进行多线路输出,若评价标识为“好”时,提示信息可以只通过邮件的方式进行单线路输出,从而使得提示信息的输出考虑了覆盖率分析报告的紧急程度,以便于更加高效的使用输出资源。
132.第二方面,如图3所示,在一个实施例中,本发明提供一种划分代码的代码测试装置,包括:
133.数据获取模块301,用于获取调用方发送的测试请求以及对应的待测代码数据;
134.代码执行模块302,用于根据调用方发送的测试请求对待测代码数据进行代码执行,得到待测代码数据的目标代码覆盖数据;
135.代码划分模块303,用于对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据;
136.覆盖确定模块304,用于确定各子代码覆盖数据的子代码覆盖率,并根据各子代码覆盖数据的属性信息确定各子代码覆盖率的初始覆盖率权重;
137.加权处理模块305,用于根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率。
138.通过上述划分代码的代码测试装置,在对待测代码数据进行代码执行后,对得到的目标代码覆盖数据中的代码语句进行代码划分,从而得到多个子代码覆盖数据,根据各子代码覆盖数据的属性信息确定子代码覆盖数据的影响大小,即确定到各子代码覆盖数据的子代码覆盖率的初始覆盖率权重,最终直接将各子代码覆盖率根据对应的初始覆盖率权重加权得到目标代码覆盖率;使得测试过程考虑了待测代码数据中各代码语句之间的差异,得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
139.在一个实施例中,加权处理模块具体用于确定各子代码覆盖数据与目标代码覆盖数据的数量比值;根据各子代码覆盖数据的初始覆盖率权重以及各子代码覆盖数据与目标代码覆盖数据的数量比值,得到各子代码覆盖数据的目标覆盖率权重;根据各子代码覆盖数据的目标覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖率。
140.在一个实施例中,代码划分模块具体用于确定目标代码覆盖数据中代码语句的目标代码类型;目标代码类型包括条件判定类型、循环执行类型和转向类型;根据目标代码覆
盖数据中代码语句的目标代码类型,对目标代码覆盖数据中的代码语句进行代码划分,得到各目标代码类型各自对应的子代码覆盖数据。
141.在一个实施例中,代码划分模块具体用于确定目标代码覆盖数据中代码语句的特征代码字符;根据特征代码字符,确定得到目标代码覆盖数据中代码语句的目标代码类型。
142.在一个实施例中,属性信息包括目标代码覆盖数据中代码语句的目标代码类型;覆盖确定模块具体用于获取预设的目标权重配置表;目标权重配置表包括多个样本覆盖率权重以及样本覆盖率权重对应的样本代码类型;针对每个子代码覆盖数据,根据该子代码覆盖数据对应的目标代码类型,在目标权重配置表中匹配对应的样本代码类型,将匹配到的样本代码类型对应的样本覆盖率权重设置为该子代码覆盖数据块的初始覆盖率权重。
143.在一个实施例中,加权处理模块具体用于将各子代码覆盖数据的子代码覆盖率按照各子代码覆盖数据的初始覆盖率权重进行加权平均,得到目标代码覆盖率。
144.在一个实施例中,上述划分代码的代码测试装置还包括:
145.提示输出模块,用于在得到目标代码覆盖率的步骤之后,对目标代码覆盖率进行评估分析,得到与目标代码覆盖率对应的覆盖率分析报告;根据覆盖率分析报告,输出提示信息。
146.第三方面,在一个实施例中,本发明提供一种计算机设备,如图4所示,其示出了本发明所涉及的计算机设备的结构,具体来讲:
147.该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
148.处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
149.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
150.计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
151.该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
152.尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,以执行如下步骤:
153.获取调用方发送的测试请求以及对应的待测代码数据;
154.根据调用方发送的测试请求对待测代码数据进行代码执行,得到待测代码数据的目标代码覆盖数据;
155.对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据;
156.确定各子代码覆盖数据的子代码覆盖率,并根据各子代码覆盖数据的属性信息确定各子代码覆盖率的初始覆盖率权重;
157.根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率。
158.通过上述计算机设备,在对待测代码数据进行代码执行后,对得到的目标代码覆盖数据中的代码语句进行代码划分,从而得到多个子代码覆盖数据,根据各子代码覆盖数据的属性信息确定子代码覆盖数据的影响大小,即确定到各子代码覆盖数据的子代码覆盖率的初始覆盖率权重,最终直接将各子代码覆盖率根据对应的初始覆盖率权重加权得到目标代码覆盖率;使得测试过程考虑了待测代码数据中各代码语句之间的差异,得到的目标代码覆盖率能够准确反应出待测应用的代码数据的质量情况。
159.本领域普通技术人员可以理解,上述实施例的任一种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
160.第四方面,在一个实施例中,本发明提供一种存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行如下步骤:
161.获取调用方发送的测试请求以及对应的待测代码数据;
162.根据调用方发送的测试请求对待测代码数据进行代码执行,得到待测代码数据的目标代码覆盖数据;
163.对目标代码覆盖数据中的代码语句进行代码划分,得到多个子代码覆盖数据;
164.确定各子代码覆盖数据的子代码覆盖率,并根据各子代码覆盖数据的属性信息确定各子代码覆盖率的初始覆盖率权重;
165.根据各子代码覆盖数据的初始覆盖率权重,对各子代码覆盖数据的子代码覆盖率进行加权处理,得到目标代码覆盖数据的目标代码覆盖率。
166.通过上述存储介质,在对待测代码数据进行代码执行后,对得到的目标代码覆盖数据中的代码语句进行代码划分,从而得到多个子代码覆盖数据,根据各子代码覆盖数据的属性信息确定子代码覆盖数据的影响大小,即确定到各子代码覆盖数据的子代码覆盖率的初始覆盖率权重,最终直接将各子代码覆盖率根据对应的初始覆盖率权重加权得到目标代码覆盖率;使得测试过程考虑了待测代码数据中各代码语句之间的差异,得到的目标代
码覆盖率能够准确反应出待测应用的代码数据的质量情况。
167.本领域普通技术人员可以理解,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
168.由于该存储介质中所存储的计算机程序,可以执行本发明所提供的任一种实施例中的划分代码的代码测试方法中的步骤,因此,可以实现本发明所提供的任一种实施例中的划分代码的代码测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
169.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
170.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
171.以上对本发明所提供的一种划分代码的代码测试方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
172.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1