一种测试案例处理方法及系统与流程

文档序号:29124839发布日期:2022-03-04 23:36阅读:70来源:国知局
一种测试案例处理方法及系统与流程

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.图1为本技术实施例公开的一种测试案例处理方法的流程示意图;
58.图2为本技术实施例公开的接口调用关系的示意图;
59.图3为本技术实施例公开的圈复杂度的示意图;
60.图4为本技术实施例公开的得到第二断言序列预期值的流程示意图;
61.图5为本技术实施例公开的一种测试案例处理系统的结构示意图;
62.图6为本技术实施例公开的一种电子设备的结构示意图。
具体实施方式
63.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
64.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
65.由背景技术可知,目前人为设置静态断言预期值的方法不能满足日益膨胀的自动化测试需求,同时因为手动设置断言预期值,导致生成错误的断言预期值,造成对测试案例进行测试的准确率降低和测试质量降低。
66.为了解决上述问题,本技术实施例公开了一种测试案例处理方法及系统,无需人工设置断言预期值,避免出现由于人工的原因导致生成错误的断言预期值,提高对测试案
例进行测试的准确率及测试质量。此外,通过对不同案例类型的待测试案例进行处理,分别得到不同案例类型所对应的断言序列预期值,提高对测试案例进行测试的细粒度。具体实现方式通过下述实施例具体进行说明。
67.参考图1所示,为本技术实施例公开的一种测试案例处理方法的流程示意图,该测试案例处理方法主要包括如下步骤:
68.s101:确定待测试案例的案例类型;案例类型包括性能测试案例类型和功能测试案例类型,若待测试案例的案例类型为性能测试案例类型,则执行s102,若待测试案例的案例类型为功能测试案例类型,则执行s103。
69.其中,待测试案例的数量可以为多个。
70.性能测试案例类型所对应测试为性能测试,即通过模拟正常、峰值以及异常负载等条件对系统的各项性能指标进行测试。性能指标如响应时间,最大并发数量等。
71.功能测试案例类型所对应的测试为功能测试,指对应用版本包的各功能进行验证,检查各功能是否达到用户要求。
72.s102:通过预先构建的性能测试指标断言序列预期值模型对性能测试案例类型对应的待测试案例进行计算,得到第一断言序列预期值;第一断言序列预期值用于检测性能测试案例类型对应的待测试案例的执行情况。
73.在s102中,断言序列为一个测试案例常常包含若干子功能,一个子功能的实现通常包含内部与外部两种方式。
74.在面向对象的编程语言中,内部方式为方法。在面向过程的编程语言中,内部方式为函数。外部方式通常为调用接口。每个方法(函数)或者接口的返回都可以设置断言,若干个断言组合在一起形成一个序列,序列的格式为{{方法(函数)或者接口编号,断言值},{方法(函数)或者接口编号,断言值}

}。
75.通过第一断言序列预期值来检测性能测试案例类型对应的待测试案例的执行成功与否的情况。
76.第一断言序列预期值为通过一个测试案例的若干个断言的预期值组合在一起形成一个序列,格式为{{方法(函数)或者接口编号,断言预期值},{方法(函数)或者接口编号,断言预期值}

}。
77.具体得到第一断言序列预期值如a1-a5所示:
78.a1:获取系统特征和案例特征。
79.其中,系统特征是指系统的基本属性,如设备的硬件资源大小,物理架构,逻辑架构,用户数量,交易量等信息。
80.案例特征是指案例的基本属性,如案例编号,包含哪些子功能点,子功能点编号,方法或接口名称,入参列表、传入参数个数、圈复杂度及接口调用复杂度等。
81.a2:对系统特征和案例特征进行标准化处理和消除多重共线性处理,得到处理结果。
82.其中,具体对系统特征和案例特征进行标准化处理和消除多重共线性处理,得到处理结果的过程如下:
83.(1)对系统特征和案例特征进行标准化,根据字符值进行分类,将特征值由字符类型转换为数值类型,如表1所示。
84.特征名称实际值(字符类型)标准化后(数值类型)数据库版本11g1数据库版本12c2
85.表1
86.其中,11g和12c均为数据库版本的实际值,数值类型1表示一种数据库版本标准化后的数值;数值类型2表示另一种数据库版本标准化后的数值。
87.(2)使用方差膨胀因子vif对各特征进行多重共线性分析,筛选出有关联关系的系统特征及案例特征,消除多重共线性。
88.构造每一个特征与其余特征的线性回归模型,以特征y1为例,特征y1包含系统特征及案例特征,具体特征y1的计算式如公式(1)所示。
89.y1=c2y2+c3y3+

+c
pyp
+c0+ε
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
90.其中,y1为响应时间断言值序列;y2为并发量断言值序列;y3为处理能力断言值序列;c
p
为特征y
p
与特征y1的回归系数;y
p
为性能指标p的断言值序列;c2为特征y2与特征y1的回归系数;c3为特征y3与特征y1的回归系数;c
p
为特征y
p
与特征y1的回归系数;c0为常数项;ε为随机误差项。
91.根据线性回归模型得到判决系数r2,计算出第一个特征y1的方差膨胀因子如vif1的值大于10,则在性能测试断言预期值回归模型的自变量序列中舍弃该特征,否则放入特征集合里,例如{y1,y2,y5…
}。
92.a3:基于预先建立的线性回归模型,确定模型系数。
93.其中,基于预先建立的线性回归模型,确定模型系数的过程如下:
94.系统特征及案例特征等为自变量(包括但不限于),性能测试指标的断言预期值为因变量y,建立线性回归模型,得到系统特征、案例特征的模型系数及置信区间。变量y的计算式如公式(2)所示。
[0095][0096]
其中,x1为响应时间类案例集合中的特征cpu核数;x2为响应时间类案例集合中的特征内存大小;x
p
为响应时间类案例集合中的特征p的大小;a0为常数项;a1和b1均为x1与y的回归系数;a2和b2均为x2与y的回归系数;a2和b
p
均为x
p
与y的回归系数;ε为随机误差项。
[0097]
系统特征、案例特征的模型系数的表达式如公式(3)所示。
[0098][0099]
其中,y1为响应时间断言值序列;y2为并发量断言值序列;yn为第n个性能测试指标的断言值序列,n的取值为大于等于1的整数。
[0100]y11
为响应时间类案例1的断言值,案例1表示第1次执行该案例,y
12
表示响应时间类案例2的断言值,案例2表示第2次执行该案例;y
1m
为响应时间类第m个案例的断言值,m的
取值为大于等于1的整数。
[0101]
x1为响应时间类案例集合中的特征cpu核数,x
11
为响应时间类案例1测试时使用的设备的cpu核数,x
12
为响应时间类案例2测试时使用的设备的cpu核数;x
1m
为响应时间类第m个案例测试时使用的设备的cpu核数。
[0102]
x2为响应时间类案例集合中的特征内存大小;x
21
为响应时间类案例1测试时使用的特征内存大小;x
22
为响应时间类案例2测试时使用的特征内存大小;x
2m
为响应时间类第m个案例测试时使用的特征内存大小,m的取值为大于等于1的整数。
[0103]
x
p
为响应时间类案例集合中的特征p;x
p1
为响应时间类案例1测试时使用的特征p的大小;x
p2
为响应时间类案例2测试时使用的特征p的大小;x
pm
为响应时间类第m个案例测试时使用的特征p的大小,m的取值为大于等于1的整数。
[0104]
具体系统特征、案例特征的模型系数如表2所示。
[0105][0106]
表2
[0107]
表2中,y1为响应时间断言值序列;y3为可用度断言值序列;y4为系统交易量断言值序列;y5为系统处理能力断言值序列;y7为交易成功率断言值序列;a1为x1与y的回归系数;b1为x1与y的回归系数;a2为x2与y的回归系数;b2为x2与y的回归系数;a
p
为x
p
与y的回归系数;b
p
为x
p
与y的回归系数。
[0108]
a4:通过模型系数和处理结果,构建性能测试指标断言序列预期值模型。
[0109]
其中,通过分析置信区间及该参数是否对测试结果有影响,依据模型系数得到性能指标断言序列预期值模型。
[0110]
例如,根据置信区间的取值,得知b2,a
p
,b
p
特征的可信度较低。经分析,b2取值对测试结果有影响,需要保留。a
p
和b
p
取值对测试结果无影响,将该类特征项剔除,依此类推。
[0111]
得到性能指标断言序列预期值模型如公式(4)、公式(5)和公式(6)所示。
[0112]
y1=0.023x1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0113]
y3=0.011x1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0114][0115]
其中,y1为响应时间断言值序列;y3为可用度断言值序列;y4为系统交易量断言值序列;x1为响应时间类案例集合中的特征cpu核数;x2为响应时间类案例集合中的特征内存
大小。
[0116]
a5:通过性能测试指标断言序列预期值模型对性能测试案例类型对应的待测试案例的特征进行计算,得到第一断言序列预期值。
[0117]
可选的,在通过性能测试指标断言序列预期值模型对性能测试案例类型对应的待测试案例的特征进行计算,得到第一断言序列预期值之后,执行b1-b5。
[0118]
b1:通过系统特征、案例特征和预先获取到的预设历史性能测试案例,建立性能测试案例的断言库。
[0119]
其中,系统特征包括cpu核数、内存数、集群机器台数等。
[0120]
案例特征包括接口调用复杂度等。
[0121]
预设历史性能测试案例为在当前时刻之前的性能测试案例。
[0122]
具体性能测试案例的断言库如表3所示。
[0123][0124]
表3
[0125]
表3中,性能测试案例的断言库包括性能测试案例编号(n0001、n0002、n0003)、系统特征(cpu核数、内存数、集群机器台数)、案例特征(接口调用复杂度)和断言值(响应时间)。
[0126]
其中,性能测试案例编号n0001的cpu核数为2c,内存数为8g,集群机器台数为3,接口调用复杂度为11,响应时间为33ms。
[0127]
性能测试案例编号n0002的cpu核数为4c,内存数为16g,集群机器台数为6,接口调用复杂度为23,响应时间为17ms。
[0128]
性能测试案例编号n0003的cpu核数为2c,内存数为6g,集群机器台数为9,接口调用复杂度为19,响应时间为29ms。
[0129]
接口调用复杂度用来衡量一个测试案例中调用外部接口的复杂程度,包含接口调用个数及调用关系。接口调用个数包含嵌套调用的接口数量,接口调用个数越大,该案例的断言预期值序列的长度越大。接口调用关系分为单点调用,依赖调用,循环调用三种方式。具体接口调用关系的示意图如图2所示。
[0130]
图2中,接口1为单点调用方式,接口2、接口3、接口4和接口5为依赖调用方式,接口6为循环调用方式。
[0131]
测试案例n的接口调用复杂度用cn表示,构造接口调用复杂度模型如下公式(7)所示。
[0132][0133]
其中,为待测试案例n中使用依赖调用的接口的数量,cq、bq均为依赖调用接口
复杂度系数,表示测试案例n中使用循环调用的接口的数量,c
p
、b
p
均为循环调用接口复杂度系数,mn为测试案例n使用单点调用的接口个数,cf为单点调用接口复杂度系数。
[0134]
测试案例的代码结构复杂的程度用圈复杂度表示。具体圈复杂度表示如图3所示。
[0135]
图3中,圈复杂度为1,意味着代码只有一条路径,对于一条有一个分支的代码,它的圈复杂度为2。
[0136]
圈复杂度表示该案例中某方法或接口断言的最大个数。圈复杂度越大说明该案例测试时出现错误的可能性越高。
[0137]
b2:获取断言序列的实际值;断言序列通过性能测试指标断言序列预期值模型预测得到。
[0138]
其中,获取已经过性能测试指标断言序列预期值模型预测断言序列的实际值。
[0139]
通过断言序列方法测量一个测试案例的断言情况,通过圈复杂度测量案例中接口或方法的最大断言个数,通过接口调用个数测量案例中断言序列长度。
[0140]
b3:对比第一断言序列预期值与断言序列的实际值是否一致。
[0141]
b4:若一致,则删除性能测试案例类型对应的待测试案例。
[0142]
b5:若不一致,则将性能测试案例类型对应的待测试案例的特征及断言序列的实际值存储至性能测试案例的断言库中。
[0143]
其中,待测试案例的特征包括案例名称、案例编号、系统特征、案例特征等。
[0144]
通过性能测试指标断言序列预期值模型预测断言序列的实际值,对性能测试指标断言序列预期值回归模型进行训练,实现性能测试指标断言序列预期值回归模型的自学习优化。
[0145]
s103:通过预先构建的功能测试案例断言序列库与功能测试案例类型对应的待测试案例进行匹配,并根据匹配结果得到第二断言序列预期值;第二断言序列预期值用于检测功能测试案例类型对应的待测试案例的执行情况。
[0146]
其中,通过第二断言序列预期值来检测功能测试案例类型对应的待测试案例的执行成功与否的情况。
[0147]
构建功能测试案例断言序列库的过程如下:
[0148]
将已经测试完毕的功能测试案例分解子功能,将子功能分解为方法或者接口,每个方法或者接口具备编号、名称、入参列表,传入参数个数、方法或者接口的圈复杂度、断言等案例特征。案例的圈复杂度为各个接口或者方法(函数)的圈复杂度的最大值。案例的断言序列的长度为该案例接口或者方法(函数)的调用个数。
[0149]
为了更好的理解,下面以一个交易量监控短信告警的功能测试案例为例进行说明。例如,交易量监控短信告警的测试案例可拆分为监控与告警两个子功能,监控子功能分为获取实时交易量接口,获取历史交易量接口,计算交易量基线方法,将实时交易量数据与基线数据比较得出是否告警,如果实时交易量大于基线数据则调用告警接口,根据参数判断调用的是短信告警接口还是邮件告警接口。如果实时交易量小于基线数据则不进行告警。
[0150]
在每一个接口或方法(函数)处设置断言,具体如表4所示。
[0151][0152][0153]
表4
[0154]
表4中,断言序列是{{i0001,0},{m0001,“告警”或者“不告警”},{i0002,“短信告警”或者“邮件告警”}

},断言序列的长度为接口或者方法(函数)调用的个数为7,案例的圈复杂度为各个接口或者方法(函数)的最大圈复杂度为2。将所有历史已测试功能案例的断言序列及案例特征入库形成功能测试案例断言序列库。
[0155]
具体通过预先构建的功能测试案例断言序列库与功能测试案例类型对应的待测试案例进行匹配,并根据匹配结果得到第二断言序列预期值的过程如下:
[0156]
首先,分解功能测试案例类型对应的待测试案例,得到功能测试案例类型对应的待测试案例的特征;待测试案例的特征包括方法名称、接口名称、入参个数、入参列表和接口的圈复杂度。
[0157]
其中,将功能测试案例类型对应的功能测试案例(例如案例编号为ga0001)分解出子功能,将子功能分解为方法或者接口,每个方法或者接口解析出名称、入参列表、传入参数个数、圈复杂度等案例特征,组合成方法或者接口列表l,l为{l1,l2...ln},其中n的取值为大于等于1的整数。
[0158]
其中,l1为分解出的第1个方法或者接口名、入参列表、传入参数个数、圈复杂度等信息;l2为分解出的第2个方法或者接口名、入参列表、传入参数个数、圈复杂度等信息;ln为分解出的第n个方法或者接口名、入参列表、传入参数个数、圈复杂度等信息,n的取值为大于等1的整数。
[0159]
举例如下:
[0160]
ln为分解出的第n个方法或者接口名、入参列表、传入参数个数、圈复杂度等信息:
[0161]
{
[0162]
l1:{方法或接口名m1,{入参p
11
,入参p
12
,入参p
13

},n1,q1…
},
[0163]
l2:{方法或接口名m2,{入参p
21
,入参p
22
,入参p
23

},n2,q2},
[0164]

}。
[0165]
其中,n1为方法或接口1的传入参数个数;q1为方法或接口1的圈复杂度;n2为方法或接口2的传入参数个数;q2为方法或接口2的圈复杂度。
[0166]
然后,通过预设层级匹配方法,将功能测试案例类型对应的待测试案例的特征与预先构建的功能测试案例断言序列库中的预设特征进行匹配,得到匹配结果,并基于匹配结果,生成功能测试案例类型对应的待测试案例的第二断言序列预期值。
[0167]
其中,将功能测试案例类型对应的待测试案例分解出的每个方法或者接口的案例特征如名称、入参列表、传入参数个数、圈复杂度等与功能测试案例断言序列库中的数据使用层级匹配方法进行匹配。
[0168]
例如,从接口列表l中依次取出l1,l2…
,将l1的方法或者接口的名称、入参列表、传入参数个数、圈复杂度与断言序列库中的数据进行匹配。匹配时使用层级匹配方式,将断言序列库中的方法或者接口名称、参数名称按照字母顺序进行排序,同时,方法名称或者接口名称匹配成功时才进行入参个数的匹配,入参个数相同时才进行入参列表的匹配,入参列表匹配成功时才进行圈复杂度的匹配
……
其中任一项匹配失败,进行下一个待测试案例接口或方法的匹配。所有案例特征完全相同时,取出断言序列库中对应方法或者接口的断言值作为该待测试案例方法或者接口的断言预期值。层级匹配方法避免了低效的全表扫描,提高了匹配效率。
[0169]
具体通过预设层级匹配方法,将功能测试案例类型对应的待测试案例的特征与预先构建的功能测试案例断言序列库中的预设特征进行匹配,得到匹配结果,并基于匹配结果,生成功能测试案例类型对应的待测试案例的第二断言序列预期值的过程如图4所示。
[0170]
参考图4所示,为上述s302中涉及到通过预设层级匹配方法,将功能测试案例类型对应的待测试案例的特征与预先构建的功能测试案例断言序列库中的预设特征进行匹配,得到匹配结果,并基于匹配结果,生成功能测试案例类型对应的待测试案例的第二断言序列预期值的过程,主要包括如下步骤:
[0171]
s401:通过预设排序规则对功能测试案例断言序列库中的方法名称、接口名称、入参个数、入参列表和接口的圈复杂度进行排序,得到排序后的方法名称、排序后的接口名称、排序后的入参个数、排序后的入参列表和排序后的接口的圈复杂度。
[0172]
s402:将待测试案例的方法名称与排序后的方法名称进行匹配,若待测试案例的方法名称与排序后的方法名称匹配成功,则执行s403,若待测试案例的方法名称与排序后的方法名称匹配失败,则执行s408。
[0173]
其中,若待测试案例的方法名称与排序后的方法名称一致,则匹配成功,若待测试案例的方法名称与排序后的方法名称不一致,则匹配失败。
[0174]
s403:将待测试案例的接口名称与排序后的接口名称进行匹配,若待测试案例的接口名称与排序后的接口名称匹配成功,则执行s404,若待测试案例的接口名称与所述排序后的接口名称匹配失败,则执行s408。
[0175]
其中,若待测试案例的接口名称与排序后的接口名称一致,则匹配成功,若待测试
案例的接口名称与排序后的接口名称不一致,则匹配失败。
[0176]
s404:将待测试案例的入参个数与排序后的入参个数进行匹配,若待测试案例的入参个数与排序后的入参个数匹配成功,则执行s405,若待测试案例的入参个数与排序后的入参个数匹配失败,则执行s408。
[0177]
其中,若待测试案例的入参个数与排序后的入参个数一致,则匹配成功,若待测试案例的入参个数与排序后的入参个数不一致,则匹配失败。
[0178]
s405:将待测试案例的入参列表与排序后的入参列表进行匹配,若待测试案例的入参列表与排序后的入参列表匹配成功,则执行s406,若待测试案例的入参列表与排序后的入参列表匹配失败,则执行s408。
[0179]
其中,若待测试案例的入参列表与排序后的入参列表一致,则匹配成功,若待测试案例的入参列表与排序后的入参列表不一致,则匹配失败。
[0180]
s406:将待测试案例的接口的圈复杂度与排序后的接口的圈复杂度进行匹配,若待测试案例的接口的圈复杂度与排序后的接口的圈复杂度匹配成功,则执行s407,若待测试案例的接口的圈复杂度与排序后的接口的圈复杂度匹配失败,则执行s408。
[0181]
其中,若待测试案例的接口的圈复杂度与排序后的接口的圈复杂度一致,则匹配成功,若待测试案例的接口的圈复杂度与排序后的接口的圈复杂度不一致,则匹配失败。
[0182]
s407:生成功能测试案例类型对应的待测试案例的第二断言序列预期值。
[0183]
在s407中,功能测试案例类型对应的待测试案例中的方法或者接口全部匹配完毕后,将匹配结果组合起来,生成该测试案例的断言序列预期值,例如测试案例ga0001的断言序列预期值如下ga0001:{{l1:0},{l2:“短信告警”或“邮件告警”}

}。
[0184]
在方法名称或者接口名称匹配成功时才进行入参个数的匹配,入参个数相同时才进行入参列表的匹配,入参列表匹配成功时才进行圈复杂度的匹配,直到匹配特征集中的所有案例特征都匹配成功。避免了低效的全表扫描,提高了匹配效率及功能历史案例数据的复用程度。
[0185]
s408:执行下一个功能测试案例类型对应的待测试案例的特征的匹配。
[0186]
若任意一组待测试案例的特征与功能测试案例断言序列库中的特征匹配失败,则进行下一个功能测试案例类型对应的待测试案例的特征的匹配。
[0187]
其中,层级匹配方法中使用的案例特征是自学习动态变化的,任意一组待测试案例的特征与功能测试案例断言序列库中的特征匹配失败时手动建立待测试案例的断言序列,并将相关信息加入断言序列库。同时分析导致匹配失败的原因,抽取出新的案例特征因素,并将该案例特征因素加入需要匹配的案例特征中。
[0188]
在自动化测试流程中,将自动生成的断言序列预期值与案例执行步骤自动装配,提高测试效率。
[0189]
本技术通过历史案例数据对断言序列预期值回归模型持续动态优化,提高历史案例复用程度和断言序列生成精准度,提高测试质量,增强生产环境业务稳定运行能力。
[0190]
通过全流程自动化方式,在现阶段微服务、分布式等大规模案例测试的情况下具有显著优势,同时用户易用性及友好性较高,便于推广。
[0191]
本技术实施例中,无需人工设置断言预期值,避免出现由于人工的原因导致生成错误的断言预期值,提高对测试案例进行测试的准确率及测试质量。此外,通过对不同案例
类型的待测试案例进行处理,分别得到不同案例类型所对应的断言序列预期值,提高对测试案例进行测试的细粒度。
[0192]
基于上述实施例图1公开的一种测试案例处理方法,本技术实施例还对应公开了一种测试案例处理系统,如图5所示,该测试案例处理系统包括确定单元501、计算单元502和匹配单元503。
[0193]
确定单元501,用于确定待测试案例的案例类型;案例类型包括性能测试案例类型和功能测试案例类型。
[0194]
计算单元502,用于若待测试案例的案例类型为性能测试案例类型,则通过预先构建的性能测试指标断言序列预期值模型对性能测试案例类型对应的待测试案例进行计算,得到第一断言序列预期值;第一断言序列预期值用于检测性能测试案例类型对应的待测试案例的执行情况。
[0195]
匹配单元503,用于若待测试案例的案例类型为功能测试案例类型,则通过预先构建的功能测试案例断言序列库与功能测试案例类型对应的待测试案例进行匹配,并根据匹配结果得到第二断言序列预期值;第二断言序列预期值用于检测功能测试案例类型对应的待测试案例的执行情况。
[0196]
进一步的,计算单元502,包括获取模块、处理模块、确定模块、构建模块和计算模块。
[0197]
获取模块,用于获取系统特征和案例特征。
[0198]
处理模块,用于对系统特征和案例特征进行标准化处理和消除多重共线性处理,得到处理结果。
[0199]
确定模块,用于基于预先建立的线性回归模型,确定模型系数。
[0200]
构建模块,用于通过模型系数和所述处理结果,构建性能测试指标断言序列预期值模型。
[0201]
计算模块,用于通过性能测试指标断言序列预期值模型对性能测试案例类型对应的待测试案例的特征进行计算,得到第一断言序列预期值。
[0202]
进一步的,测试案例处理系统还包括建立单元、获取单元、对比单元、删除单元和存储单元。
[0203]
建立单元,用于通过系统特征、案例特征和预先获取到的预设历史性能测试案例,建立性能测试案例的断言库。
[0204]
获取单元,用于获取断言序列的实际值;断言序列通过性能测试指标断言序列预期值模型预测得到。
[0205]
对比单元,用于对比第一断言序列预期值与断言序列的实际值是否一致。
[0206]
删除单元,用于若一致,则删除性能测试案例类型对应的待测试案例。
[0207]
存储单元,用于若不一致,则将性能测试案例类型对应的待测试案例的特征及断言序列的实际值存储至性能测试案例的断言库中。
[0208]
进一步的,匹配单元503,包括分解模块和匹配模块。
[0209]
分解模块,用于分解功能测试案例类型对应的待测试案例,得到功能测试案例类型对应的待测试案例的特征;待测试案例的特征包括方法名称、接口名称、入参个数、入参列表和接口的圈复杂度。
[0210]
匹配模块,用于通过预设层级匹配方法,将所述功能测试案例类型对应的待测试案例的特征与预先构建的功能测试案例断言序列库中的预设特征进行匹配,得到匹配结果,并基于所述匹配结果,生成所述功能测试案例类型对应的待测试案例的第二断言序列预期值。
[0211]
进一步的,匹配模块包括排序子模块、第一匹配子模块、第二匹配子模块、第三匹配子模块、第四匹配子模块、第五匹配子模块和生成子模块。
[0212]
排序子模块,用于通过预设排序规则对所述功能测试案例断言序列库中的方法名称、接口名称、入参个数、入参列表和接口的圈复杂度进行排序,得到排序后的方法名称、排序后的接口名称、排序后的入参个数、排序后的入参列表和排序后的接口的圈复杂度。
[0213]
第一匹配子模块,用于将待测试案例的方法名称与排序后的方法名称进行匹配。
[0214]
第二匹配子模块,用于若待测试案例的方法名称与排序后的方法名称匹配成功,则将待测试案例的接口名称与排序后的接口名称进行匹配。
[0215]
第三匹配子模块,用于若待测试案例的接口名称与排序后的接口名称匹配成功,则将待测试案例的入参个数与排序后的入参个数进行匹配。
[0216]
第四匹配子模块,用于若待测试案例的入参个数与排序后的入参个数匹配成功,则将待测试案例的入参列表与排序后的入参列表进行匹配。
[0217]
第五匹配子模块,用于若待测试案例的入参列表与排序后的入参列表匹配成功,则将待测试案例的接口的圈复杂度与排序后的接口的圈复杂度进行匹配。
[0218]
生成子模块,用于若待测试案例的接口的圈复杂度与排序后的接口的圈复杂度匹配成功,则生成功能测试案例类型对应的待测试案例的第二断言序列预期值。
[0219]
进一步的,测试案例处理系统还包括执行单元。
[0220]
执行单元,用于若任意一组待测试案例的特征与功能测试案例断言序列库中的特征匹配失败,则进行下一个功能测试案例类型对应的待测试案例的特征的匹配。
[0221]
本技术实施例中,无需人工设置断言预期值,避免出现由于人工的原因导致生成错误的断言预期值,提高对测试案例进行测试的准确率及测试质量。此外,通过对不同案例类型的待测试案例进行处理,分别得到不同案例类型所对应的断言序列预期值,提高对测试案例进行测试的细粒度。
[0222]
本技术实施例还提供了一种存储介质,存储介质包括存储的指令,其中,在指令运行时控制存储介质所在的设备执行上述测试案例处理方法。
[0223]
本技术实施例还提供了一种电子设备,其结构示意图如图6所示,具体包括存储器601,以及一个或者一个以上的指令602,其中一个或者一个以上指令602存储于存储器601中,且经配置以由一个或者一个以上处理器603执行所述一个或者一个以上指令602执行上述测试案例处理方法。
[0224]
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0225]
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0226]
本技术各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0227]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0228]
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
[0229]
以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1