基于流量采集完成接口自动化用例生成及执行的方法及系统与流程

文档序号:33014053发布日期:2023-01-20 14:53阅读:39来源:国知局
基于流量采集完成接口自动化用例生成及执行的方法及系统与流程

1.本发明涉及数据处理领域,具体地,涉及基于流量采集完成接口自动化用例生成及执行的方法及系统。


背景技术:

2.jvm sandbox repeater工具本身仅仅实现了流量的录制及单次回放功能,不支持接口详细信息下载,对录制后的流量参数未进行处理,对唯一性参数未进行解析和组装,因此不能保证进行请求回放时的成功率以及自动化用例设计的灵活性。而在进行流量回放后,对于结果只能实时查看,同时不具备详细的测试报告的功能。
3.本次发明基于开源工具jvm sandbox repeater来进行请求流量的录制,通过二次开发实现接口请求流量的下载,运用python脚本来完成接口信息的解析以及接口自动化用例的灵活组装,测试执行后通过python中j inja2库完成详细的测试报告的渲染展示,提供了整套的测试解决方案。
4.专利文献cn113709003a(申请号:202111027405.0)公开了一种通过网络流量数据自动生成测试用例的系统、方法及介质,包括:网络流量数据获取模块:通过旁路镜像方式从真实环境采集网络流量数据,对采集的网络流量数据进行处理;回放解析模块:根据配置文件,过滤解析采集到的网络流量数据进行处理,得到解析后数据,并对解析后数据进行格式处理,根据格式处理后的数据格式转换配置文件,将解析后数据转换为回放文件,用于测试环境下的回放测试。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种基于流量采集完成接口自动化用例生成及执行的方法及系统。
6.根据本发明提供的一种基于流量采集完成接口自动化用例生成及执行的方法,包括:
7.步骤s1:在应用程序前端进行jvm sandbox repeater工具的部署,对目标接口添加配置信息;
8.步骤s2:配置完成后,对目标业务模块的流量进行监控及录制,获取接口请求信息;
9.步骤s3:对录制的接口流量信息,提供下载功能,通过配置信息完成对目标请求接口的流量下载;
10.步骤s4:通过解析下载流量的基本信息组装生成接口测试自动化用例;
11.步骤s5:执行接口测试自动化用例,记录执行结果,并将执行结果与预期结果进行差异化比较;
12.步骤s6:接口自动化用例执行报告展示。
13.优选地,所述步骤s1采用:
14.步骤s1.1:将jvm sandbox repeater模块部署到应用程序服务器,进行业务处理模块的挂载,实现业务请求接口的监控;
15.步骤s1.2:配置所要监控的目标环境、目标应用以及目标接口信息,配置完成后建立心跳。
16.优选地,所述步骤s2采用:
17.步骤s2.1:对目标接口发送请求,录制收发的请求数据;
18.步骤s2.2:存储相关流量数据包,对流量进行处理及筛选,获取请求接口的请求参数以及返回结果信息。
19.优选地,所述步骤s3采用:
20.步骤s3.1:根据已配置的包括环境参数、应用参数、接口参数信息,对已录制的请求进行筛选,选出得到成功返回信息的数据;
21.步骤s3.2:对筛选结果进行下载得到接口流量信息表格,包括流量录制环境,应用名称、接口请求路径、请求地址、请求方法、请求头、请求体、状态码以及响应体信息。
22.优选地,所述步骤s4采用:
23.步骤s4.1:通过python语言扩展包xlrd解析下载的接口流量信息表格,获取表格单元格数据,包括请求地址、请求头以及请求方法;
24.步骤s4.2:通过python语言扩展包requests的request方法组装接口自动化测试用例,包括接口的请求方法、请求地址以及请求头信息。
25.优选地,所述步骤s5采用:
26.步骤s5.1:获取组装成功的接口自动化用例,通过request方法循环发送接口请求,获取相关接口响应结果,包括返回响应体以及响应码信息;
27.步骤s5.2:运用流量下载的返回结果数据作为预期结果,接口自动化执行的结果作为实际结果,两个结果运用python中deepdiff库进行返回结果json差异化比较,得出差异结果。
28.优选地,所述步骤s6采用:使用python中的jinja2扩展库来完成测试报告的渲染工作,测试报告包括通过率、接口响应时间、接口列表以及接口差异化结果信息;
29.所述通过率是通过响应结果判断,响应码为200则为测试通过;
30.所述接口响应时间是从接口请求到接口返回的耗时情况;
31.所诉接口列表包括:请求地址、请求方法以及状态码;接口列表是根据循环请求的顺序进行展示;
32.所述差异化结果是展示接口的预期结果同自动化执行结果的差异化比较。
33.根据本发明提供的一种基于流量采集完成接口自动化用例生成及执行的系统,包括:
34.模块m1:在应用程序前端进行jvm sandbox repeater工具的部署,对目标接口添加配置信息;
35.模块m2:配置完成后,对目标业务模块的流量进行监控及录制,获取接口请求信息;
36.模块m3:对录制的接口流量信息,提供下载功能,通过配置信息完成对目标请求接口的流量下载;
37.模块m4:通过解析下载流量的基本信息组装生成接口测试自动化用例;
38.模块m5:执行接口测试自动化用例,记录执行结果,并将执行结果与预期结果进行差异化比较;
39.模块m6:接口自动化用例执行报告展示。
40.优选地,所述模块m1采用:
41.模块m1.1:将jvm sandbox repeater模块部署到应用程序服务器,进行业务处理模块的挂载,实现业务请求接口的监控;
42.模块m1.2:配置所要监控的目标环境、目标应用以及目标接口信息,配置完成后建立心跳;
43.所述模块m2采用:
44.模块m2.1:对目标接口发送请求,录制收发的请求数据;
45.模块m2.2:存储相关流量数据包,对流量进行处理及筛选,获取请求接口的请求参数以及返回结果信息。
46.优选地,所述模块m3采用:
47.模块m3.1:根据已配置的包括环境参数、应用参数、接口参数信息,对已录制的请求进行筛选,选出得到成功返回信息的数据;
48.模块m3.2:对筛选结果进行下载得到接口流量信息表格,包括流量录制环境,应用名称、接口请求路径、请求地址、请求方法、请求头、请求体、状态码以及响应体信息;
49.所述模块m4采用:
50.模块m4.1:通过python语言扩展包xlrd解析下载的接口流量信息表格,获取表格单元格数据,包括请求地址、请求头以及请求方法;
51.模块m4.2:通过python语言扩展包requests的request方法组装接口自动化测试用例,包括接口的请求方法、请求地址以及请求头信息;
52.所述模块m5采用:
53.模块m5.1:获取组装成功的接口自动化用例,通过request方法循环发送接口请求,获取相关接口响应结果,包括返回响应体以及响应码信息;
54.模块m5.2:运用流量下载的返回结果数据作为预期结果,接口自动化执行的结果作为实际结果,两个结果运用python中deepdiff库进行返回结果json差异化比较,得出差异结果;
55.所述模块m6采用:使用python中的jinja2扩展库来完成测试报告的渲染工作,测试报告包括通过率、接口响应时间、接口列表以及接口差异化结果信息。
56.与现有技术相比,本发明具有如下的有益效果:
57.1、本发明通过将系统接口请求真实流量进行本地的存储及下载,对接口请求进行解析与重组,替代唯一性参数、随机参数,以保证自动化用例的多样性与仿真性;
58.2、在测试用例执行结束后,通过记录真实与测试场景的差异对比,自动生成测试报告,实现了在服务重构或快速迭代的开发节奏下系统接口精准回归的问题,同时减少了人工编写自动化用例的时间以及更灵活完成测试用例的生成,并且能解决部分线上bug无法复现的痛点问题。
附图说明
59.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
60.图1为基于流量采集完成接口自动化用例生成及执行的系统示意图。
具体实施方式
61.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
62.实施例1
63.本发明提供了一种基于流量采集完成接口自动化用例生成及执行的方法及系统,包括:将jvm sandbox repeater模块挂载到java类型应用的业务模块下,完成对相关业务请求接口进行监控,包含对http、java、dubbo类型接口的入参及返回值等流量数据进行采集录制;提供流量下载功能,在jvm sandbox repeater基础上进行下载功能开发,将在业务模块所监控到的的数据,进行记录保存,提供下载地址并支持下载保存为excel表格;通过代码解析excel表格获取应用程序的接口流量信息,包含其请求地址、请求方法、请求体、状态码、响应体等信息;自动生成接口测试用例,通过python中的requests库,在获取接口相关信息后利用程序循环,针对get类型的请求通过请求地址、请求方法、请求头组装成相关的接口测试用例;接口测试用例执行,通过代码循环,运用request函数完成相关接口测试用例的执行工作,下载的接口返回数据作为预期结果,组装用例的执行结果作为实际结果,两个执行结果进行差异化比较;生成测试报告,准备测试报告模板,通过python中的jinja2库完成接口测试用例执行后的结果到测试报告的渲染,主要展示指标为通过率、响应时间、接口列表、差异化结果等信息。
64.本发明通过采用将jvm sandbox repeater挂载在应用程序,进行程序接口请求的监控及数据存储,并通过对下载结果进行数据拆分及重组,实现接口自动化用例自动生成及执行,从而解决了系统重构以及快节奏版本交付下测试快速精准回归问题,实现了高效率且大范围覆盖的有效回归测试。
65.本发明提供了一种基于流量采集完成接口自动化用例生成及执行的方法,包括:
66.步骤1:在应用程序前端进行jvm sandbox repeater工具的部署,对目标接口添加配置信息;
67.步骤2:配置完成后,对目标业务模块的流量进行监控及录制,获取接口请求信息;
68.步骤3:对录制的接口流量信息,提供下载功能,通过配置的环境参数、应用参数、接口参数,完成对目标请求接口的流量下载;
69.步骤4:通过解析下载流量的基本信息,组装生成接口测试自动化用例;
70.步骤5:接口测试自动化用例执行,执行结果进行差异化比较;
71.步骤6:接口自动化用例执行报告展示。
72.具体地,所述步骤1包括如下步骤:
73.步骤1.1:将jvm sandbox repeater模块部署到应用程序服务器,进行业务处理模
块的挂载,实现业务请求接口的监控;
74.步骤1.2:配置所要监控的目标环境、目标应用、目标接口等信息,配置完成后建立心跳。
75.具体地,所述步骤2包括如下步骤:
76.步骤2.1:对目标接口发送请求,录制收发的请求数据;
77.步骤2.2:存储的相关流量数据包,对流量进行处理及筛选,获取请求接口的请求参数、返回结果等信息。
78.具体地,所述步骤3包括如下步骤:
79.步骤3.1:根据已配置的环境参数、应用参数、接口参数等信息,对已录制的请求进行筛选,选出得到成功返回信息的数据;
80.步骤3.2:对筛选结果进行下载,包含流量录制环境、应用名称、接口请求路径、方法、请求头、请求体、状态码、响应体等信息。
81.具体地,所述步骤4包括如下步骤:
82.步骤4.1:通过python语言扩展包xlrd解析下载的接口流量信息表格,获取表格单元格数据,程序获得请求地址、请求头、请求方法、请求头等信息;
83.步骤4.2:通过python语言扩展包requests的request方法组装接口自动化测试用例,用例主要包含接口的请求方法、请求地址、请求头信息。
84.具体地,所述步骤5包括如下步骤:
85.步骤5.1:获取到组装成功的接口自动化用例,通过request方法循环发送接口请求,获取相关接口响应结果,包含其返回响应体、响应码等关键信息;
86.步骤5.2:运用流量下载的返回结果数据作为预期结果,接口自动化执行的结果作为实际的结果,两个结果运用python中deepdiff库进行返回结果json差异化比较,得出差异结果。
87.具体地,所述步骤6包括如下步骤:
88.步骤6.1:使用python中的jinja2扩展库来完成测试报告的渲染工作,测试报告主要包含通过率、接口响应时间、接口列表、接口差异化结果等信息;
89.步骤6.2:接口执行通过率主要通过响应结果判断,响应码为200则为测试通过;接口响应时间主要从接口请求到接口返回的耗时情况;接口列表主要包含请求地址、请求方法、状态码、接口列表是根据循环请求的顺序进行展示;差异化结果,主要是展示接口的预期结果同自动化执行结果的差异化比较。
90.本发明提供了一种基于流量采集完成接口自动化用例生成及执行的系统,如图1所示,包括:
91.模块1:在应用程序前端进行jvm sandbox repeater工具的部署,对目标接口添加配置信息;
92.模块2:配置完成后,对目标业务模块的流量进行监控及录制,获取接口请求信息;
93.模块3:对录制的接口流量信息,提供下载功能,通过配置的环境参数、应用参数、接口参数,完成对目标请求接口的流量下载;
94.模块4:通过解析下载流量的基本信息,组装生成接口测试自动化用例;
95.模块5:接口测试自动化用例执行,执行结果进行差异化比较;
96.模块6:接口自动化用例执行报告展示。
97.具体地,所述模块1包括如下模块:
98.模块1.1:将jvm sandbox repeater模块部署到应用程序服务器,进行业务处理模块的挂载,实现业务请求接口的监控;
99.模块1.2:配置所要监控的目标环境、目标应用、目标接口等信息,配置完成后建立心跳。
100.具体地,所述模块2包括如下模块:
101.模块2.1:对目标接口发送请求,录制收发的请求数据;
102.模块2.2:存储的相关流量数据包,对流量进行处理及筛选,获取请求接口的请求参数、返回结果等信息。
103.具体地,所述模块3包括如下模块:
104.模块3.1:根据已配置的环境参数、应用参数、接口参数等信息,对已录制的请求进行筛选,选出得到成功返回信息的数据;
105.模块3.2:对筛选结果进行下载,包含流量录制环境、应用名称、接口请求路径、方法、请求头、请求体、状态码、响应体等信息。
106.具体地,所述模块4包括如下模块:
107.模块4.1:通过python语言扩展包xlrd解析下载的接口流量信息表格,获取表格单元格数据,程序获得请求地址、请求头、请求方法、请求头等信息;
108.模块4.2:通过python语言扩展包requests的request方法组装接口自动化测试用例,用例主要包含接口的请求方法、请求地址、请求头信息。
109.具体地,所述模块5包括如下模块:
110.模块5.1:获取到组装成功的接口自动化用例,通过request方法循环发送接口请求,获取相关接口响应结果,包含其返回响应体、响应码等关键信息;
111.模块5.2:运用流量下载的返回结果数据作为预期结果,接口自动化执行的结果作为实际的结果,两个结果运用python中deepdiff库进行返回结果json差异化比较,得出差异结果。
112.具体地,所述模块6包括如下模块:
113.模块6.1:使用python中的jinja2扩展库来完成测试报告的渲染工作,测试报告主要包含通过率、接口响应时间、接口列表、接口差异化结果等信息;
114.模块6.2:接口执行通过率主要通过响应结果判断,响应码为200则为测试通过;接口响应时间主要从接口请求到接口返回的耗时情况;接口列表主要包含请求地址、请求方法、状态码、接口列表是根据循环请求的顺序进行展示;差异化结果,主要是展示接口的预期结果同自动化执行结果的差异化比较。
115.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部
件内的结构。
116.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1