基于应用程序接口的功能回归验证方法、装置及存储介质与流程

文档序号:24190658发布日期:2021-03-09 15:00阅读:104来源:国知局
基于应用程序接口的功能回归验证方法、装置及存储介质与流程

1.本发明属于回归测试技术领域,具体涉及一种基于应用程序接口的功能回归验证方法、装置及存储介质。


背景技术:

2.随着软件产品的不断开发迭代,软件产品依赖的底层基础资源也需要不断的进行升级,以确保软件产品功能可以在新的基础资源上稳定运行,比如常见的操作系统的升级、依赖的第三方jar包,python的第三方库等等。针对基础资源的升级,为了确保功能的稳定可用,势必要对上层的软件产品提供的功能进行完整的回归校验。
3.软件产品提供了庞大且复杂的功能,进行回归校验时,如果对软件产品每一个功能点都要手工验证,会消耗大量的测试时间,拖慢团队的进度,影响产品新功能的开发速度;另一种方法是开发软件产品的自动化测试脚本,但开发自动化测试脚本需要投入大量的人力、物力成本,况且自动化测试脚本开发是否成功也具有很大的不确定性;因此目前缺乏验证速度快、成本低的软件产品功能回归验证方法和装置。此为现有技术的不足之处。
4.针对现有技术中的上述缺陷,提供设计一种基于应用程序接口的功能回归验证方法、装置及存储介质,以解决现有技术中存在的问题,是非常有必要的。


技术实现要素:

5.针对底层基础组件升级时,上层的软件产品功能回归测试耗费时间长、耗费成本高,缺乏完整快速的回归验证方法和装置,本发明提供设计一种基于应用程序接口的功能回归验证方法、装置及存储介质,以解决上述技术问题,缩短软件产品功能回归验证的时间,提高软件产品因基础环境升级而需要全面验证功能的测试效率。
6.为实现上述目的,本发明给出以下技术方案:
7.第一方面,本发明提供一种基于应用程序接口的功能回归验证方法,包括以下步骤:
8.s1:自动截取接口请求数据到指定目录文件下进行测试数据收集;
9.s2:按照策略对测试数据进行清洗和采样;
10.s3:在升级前和升级后的测试环境下进行自动回放测试;
11.s4:两套测试环境路径返回的接口响应体做对比检查,评判功能回归验证是否通过;
12.s5:记录结果,若回归验证没有通过,进行失败重试处理。
13.作为优选,所述步骤s1中接口请求数据截取具有两种方式:
14.其中具有网关记录接口请求日志的软件产品,直接通过设置日志时间段去接口请求日志记录文件中截取日志;
15.不具备网关记录接口请求日志的软件产品需要设置agent代理,agent代理中运行的fiddle抓包服务对软件产品上的接口请求数据进行监听,当监听到软件产品上的请求时
对请求数据进行捕获截取;
16.通过这两种方式收集所有遵循restapi的接口请求数据,提供更大的通用性。
17.作为优选,所述步骤s2中进行清洗过程如下:
18.第一步对测试数据进行分级,将不同浏览器客户端的请求数据装入不同的数据列表;
19.第二步预先设置要回归验证的应用程序接口模块关键字,通过关键字匹配对数据列表中的请求数据进行清洗过滤;
20.第三步对清洗后的数据进行去重、场景收集、数据格式拼装;
21.通过对数据进行清洗减少非测试的请求数据对结果统计造成干扰。
22.作为优选,所述步骤s2采用api+request_body+response_code的策略进行采样:
23.第一步对各接口数据循环获取api、header、request_body和response_code,其中如果request_body中的key值存在差异,认为是不同的场景,每个接口执行返回的response_code不一致,我们也认为是不同的场景;
24.第二步设置应用程序接口的最大采样限制次数limit,采样场景超过limit限制时直接丢弃数据,否则将数据装入回放数据中;设置应用程序接口的最大采样限制次数limit防止初期引入过多测试场景,回归校验失败时减少问题排查成本。
25.通过采样减少测试请求数据中的重复数据,同时保证采样数据的多样性、为后续回放请求测试提供全面保证。
26.作为优选,所述步骤s2中将清洗和采样后的数据存为基础测试场景库;后续对该测试场景测试可以直接获取该数据给回放测试使用,提高测试场景数据的重用性。
27.作为优选,所述步骤s3具体步骤如下:
28.s3.1:驱动postman进行回放数据内容的填充;
29.s3.2:调用postman接口同时向升级前和升级后的测试环境发送请求;
30.s3.3:获取postman发送接口在两套测试环境中的响应体;
31.通过postman接口工具在升级前和升级后的测试环境中进行接口请求数据的重新发送,获取两套测试环境下响应体后续进行对比分析。
32.作为优选,所述步骤s4中对比检查过程如下:
33.s4.1:将两套测试环境的响应体按照递归比较的方式进行比较,将返回值中的每一个元素的key-value都进行比较;
34.s4.2:递归比较结果相同则认为回归验证通过,递归比较结果不相同则进行下一步过滤比较;
35.s4.3:自定义设置字典存储接口名、校验方式以及忽略的字段,两套测试环境的响应体进行过滤比较;
36.s4.4:过滤比较结果相同则认为回归验证成功,过滤比较结果不相同则回归验证不通过;
37.先按照常规的递归方式进行比较,递归方式失败时再进行过滤模式的比较,尽可能降低系统因随机属性而对测试结果比较分析造成的影响,提升测试结果对比的成功率,另外可以统计接口通过递归比较和过滤比较的比重,按照比重实时调整后续的测试策略。
38.第二方面,本发明提供一种基于应用程序接口的功能回归验证装置,包括:
39.api收集模块:截取接口请求数据到指定目录文件下进行测试数据收集;可以通过抓取日志记录的方式收集测试数据,也可以通过agent代理中开启fiddle抓包服务,对软件产品进行实时监听从而收集测试数据;
40.api智能分析模块:根据策略对测试数据进行清洗和采样;
41.回放模块:连接升级前和升级后的测试环境,在两套环境中同时进行应用程序接口测试数据的自动重发测试,获取接口返回的响应体;
42.响应分析模块:对两套测试环境路径返回的接口响应体进行对比分析,判断功能验证是否通过;
43.测试结果生成和发布模块:进行测试结果的收集,并在重跑最大次数的限制下将数据回调到回放模块,再一次执行请求回放动作,生成测试报告并进行发布。
44.作为优选,所述响应分析模块包括:
45.常规比较单元:两套测试环境的接口响应体按照递归比较的方式进行比较,将返回值中的每一个元素的key-value都进行比较;
46.过滤比较单元:自定义设置字典存储接口名、校验方式以及忽略的字段,两套测试环境的响应体进行过滤比较;
47.两个接口响应体先进入常规比较单元,采用递归方式进行比较,递归方式失败时再进入过滤比较单元,尽可能降低系统因随机属性而对测试结果比较分析造成的影响,提升测试结果对比的成功率,另外可以统计接口通过常规比较单元和过滤比较单元的比重,按照比重实时调整后续的测试策略。
48.第三方面,本发明提供一种计算机存储介质,所述计算机存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述方法。
49.第四方面,提供一种终端,包括:
50.处理器、存储器,其中,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述方法。
51.本发明的有益效果在于,自动监听截取日常用户使用系统的接口请求数据,有效避免手工执行测试导致的测试场景遗漏,提高测试数据的收集效率;对收集的测试数据进行清洗和采样,经过清洗和采样处理后的数据可以作为基础场景库以供后续升级回归验证使用,测试数据具备很高的重用性;在升级前和升级后的测试环境中进行回放测试并得到接口响应体,对两套测试环境的响应体进行对比分析得出结论,有效缩短功能回归验证时间,验证速度快,而且验证成本远低于开发自动化测试脚本。此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
52.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
54.图1是本发明实施例1提供的一种基于应用程序接口的功能回归验证方法的流程
图。
55.图2是实施例1中的采样过程流程图。
56.图3是实施例1中的response1和response2进行对比检查的流程图。
57.图4是本发明实施例2提供的一种基于应用程序接口的功能回归验证装置的原理框图。
58.其中,1-api收集模块,2-api智能分析模块,3-回放模块,4-响应分析模块,4.1-常规比较单元,4.2-过滤比较单元,5-测试结果生成和发布模块,6-centos7.2测试环境,7-centos8.2测试环境。
具体实施方式
59.下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
60.下面对本发明中出现的关键术语进行解释:
61.api(application programming interface,应用程序接口),是一组定义、程序及协议的集合,通过应用程序接口实现计算机软件之间的相互通信。应用程序接口的一个主要功能是提供通用功能集,应用程序接口同时也是一种中间件,为各种不同平台提供数据共享。
62.实施例1:
63.如图1至3所示,本实施例提供一种基于应用程序接口的功能回归验证方法,包括以下步骤:
64.首先准备被测产品的测试环境,以openstack管理平台为基础,升级前测试环境选择centos7.2测试环境,且稳定运行一段时间,升级后测试环境选择centos8.2的测试环境,需要保证centos8.2和centos7.2上的openstack管理平台功能正常。
65.s1:以centos7.2的测试环境为基准,自动截取接口请求数据到指定目录文件下进行测试数据收集;
66.openstack管理平台通过网关记录所有请求的请求信息到日志文件中,可以直接设置日志时间段2020-10-13 10:00-2020-10-1312:00,将这个时间段范围的接口请求数据全部截取到指定目录文件下。
67.也可以设置agent代理,agent代理中运行的fiddle抓包服务对软件产品上的接口请求数据进行监听,当监听到软件产品上的请求时对请求数据进行捕获截取,将截取到的数据存放到指定的目录文件下。
68.s2:按照策略对测试数据进行清洗和采样;
69.其中测试数据进行清洗过程如下:
70.首先对测试数据进行分级,将不同浏览器客户端的请求数据装入不同的数据列表,根据request_headers中的cookies和jessionid的不同进行分类;
71.然后预先设置要回归验证的api模块关键字,通过关键字匹配对数据列表中的请求数据进行清洗过滤;
72.最后对清洗后的数据进行去重、场景收集、数据格式拼装;
73.通过对数据进行清洗减少非测试的请求数据对结果统计造成干扰。
74.清洗处理完成后采用api+request_body+response_code的策略进行采样:
75.第一步对各接口数据循环获取api、header、request_body和response_code,其中如果request_body中的key值存在差异,认为是不同的场景,每个接口执行返回的response_code不一致,我们也认为是不同的场景;
76.第二步设置应用程序接口的最大采样限制次数limit,采样场景超过limit限制时直接丢弃数据,否则将数据装入回放数据中;设置应用程序接口的最大采样限制次数limit防止初期引入过多测试场景,回归校验失败时减少问题排查成本。
77.通过采样减少测试请求数据中的重复数据,同时保证采样数据的多样性、为后续回放请求测试提供全面保证。
78.将清洗和采样后的数据存为基础测试场景库;后续对该测试场景测试可以直接获取该数据给回放测试使用,提高测试场景数据的重用性。
79.s3:在centos7.2和centos8.2的测试环境下进行自动回放测试,具体步骤如下:
80.s3.1:驱动postman进行回放数据内容的填充,数据列表中的每个请求数据为字典格式,按照字典顺序依次填充request_url、request_method、request_header和request_body,具体数据结构格式为:
81.{“request_url”:“http://ip:port/list”,请求的url
[0082]“request_method”:”get”,请求的方法
[0083]“request_header”:“dict”,请求的header,字典格式、主要为x-auth-token、accept、accept-content等
[0084]“request_body”:“dict”,请求的body
[0085]
}
[0086]
s3.2:调用postman接口同时向centos7.2和centos8.2的测试环境发送请求;
[0087]
s3.3:获取postman发送接口在两套测试环境中的响应体response1和response2;
[0088]
通过postman接口工具在centos7.2和centos8.2的测试环境中进行接口请求数据的重新发送,获取两套测试环境下响应体后续进行对比分析。
[0089]
s4:两套测试环境路径返回的接口响应体response1和response2做对比检查,评判功能回归验证是否通过,具体步骤如下:
[0090]
s4.1:将两套测试环境的响应体按照递归比较的方式进行比较,将返回值中的每一个元素的key-value都进行比较;
[0091]
s4.2:递归比较结果相同则认为回归验证通过,递归比较结果不相同则进行下一步过滤比较;
[0092]
s4.3:自定义设置字典存储接口名、校验方式以及忽略的字段,两套测试环境的响应体进行过滤比较,自定义设置的字典对象格式如下:
[0093]
ignore_dict={
[0094]“url_1”:“response>create_time,id”[0095]“url_2”:“schema”[0096]“url_3”:“list_sort”[0097]
}
[0098]
当设置为response关键字时,代表完全匹配校验,过滤掉小于号后面的字段,多个
字段中间用逗号进行分割;当设置为schema关键字时,只校验key值和key-value值的类型,不校验具体的值信息的正确性;当设置为list_sort时,只判断数据存在即可,不校验数据在列表中的位置信息。
[0099]
s4.4:过滤比较结果相同则认为回归验证成功,过滤比较结果不相同则回归验证不通过;
[0100]
先按照常规的递归方式进行比较,递归方式失败时再进行过滤模式的比较,尽可能降低系统因随机属性而对测试结果比较分析造成的影响,提升测试结果对比的成功率,另外可以统计接口通过递归比较和过滤比较的比重,按照比重实时调整后续的测试策略。
[0101]
s5:记录结果,若回归验证没有通过,进行失败重试处理,在配置的失败重跑次数限制下,重新在centos7.2和centos8.2的测试环境下进行自动回放测试,失败次数超过重跑次数限制则验证失败。
[0102]
实施例2:
[0103]
如图4所示,本实施例提供一种基于应用程序接口的功能回归验证装置,包括api收集模块1、api智能分析模块2、回放模块3、响应分析模块4、测试结果生成和发布模块5。
[0104]
以openstack管理平台为基础,升级前测试环境选择centos7.2测试环境6,且稳定运行一段时间,升级后测试环境选择centos8.2测试环境7,需要保证centos8.2测试环境7和centos7.2测试环境6的openstack管理平台功能正常。
[0105]
api收集模块1:以centos7.2测试环境6为基准,截取接口请求数据到指定目录文件下进行测试数据收集;可以通过抓取日志记录的方式收集测试数据,也可以通过agent代理中开启fiddle抓包服务,对软件产品进行实时监听从而收集测试数据;
[0106]
api智能分析模块2:根据策略对测试数据进行清洗和采样;
[0107]
回放模块3:连接centos7.2测试环境6和centos8.2测试环境7,在两套环境中同时进行应用程序接口测试数据的自动重发测试,获取接口返回的响应体;
[0108]
响应分析模块4:对两套测试环境路径返回的接口响应体response1和response2进行对比分析,判断功能验证是否通过;
[0109]
测试结果生成和发布模块5:进行测试结果的收集,并在重跑最大次数的限制下将数据回调到回放模块,再一次执行请求回放动作,生成html格式的测试报告并通过邮箱地址进行测试结果的发布。
[0110]
本实施例中,响应分析模块4包括:
[0111]
常规比较单元4.1:两套测试环境的接口响应体按照递归比较的方式进行比较,将返回值中的每一个元素的key-value都进行比较;
[0112]
过滤比较单元4.2:自定义设置字典存储接口名、校验方式以及忽略的字段,两套测试环境的响应体进行过滤比较;
[0113]
两套测试环境的接口响应体先进入常规比较单元4.1,采用递归方式进行比较,递归方式失败时再进入过滤比较单元4.2,尽可能降低系统因随机属性而对测试结果比较分析造成的影响,提升测试结果对比的成功率,另外可以统计接口通过常规比较单元4.1和过滤比较单元4.2的比重,按照比重实时调整后续的测试策略。
[0114]
实施例3:
[0115]
本实施例提供一种计算机存储介质,所述计算机存储介质中存储有指令,当其在
计算机上运行时,使得计算机执行上述方法。
[0116]
实施例4:
[0117]
本实施例提供一种终端,包括:
[0118]
处理器、存储器,其中,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述方法。
[0119]
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1