CN115422063A - 一种低代码接口自动化系统、电子设备及存储介质 - Google Patents
一种低代码接口自动化系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115422063A CN115422063A CN202211083201.3A CN202211083201A CN115422063A CN 115422063 A CN115422063 A CN 115422063A CN 202211083201 A CN202211083201 A CN 202211083201A CN 115422063 A CN115422063 A CN 115422063A
- Authority
- CN
- China
- Prior art keywords
- module
- request
- code
- test
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种低代码接口自动化系统、电子设备及存储介质,其中,系统包括:通过前端拖拽接口与控制器组装成对应的测试用例,通过定时执行测试用例以及通过数益云平台集成进CICD流程,完成对多系统服务的自动化接口测试及回归测试的需求;集成JaCoCo Agent以及分析线上流量与服务代码,从而分析用例的覆盖率情况。本发明提出的方案,用例简单编写,整个执行过程从用例执行到测试报告生成以及测试通知自动完成,极大降低了人员自动化介入难度,并极大减少了测试人员的重复劳动,同时回归测试问题反馈变得更加及时,提高了测试工作的整体效率。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种低代码接口自动化系统、电子设备及存储介质。
背景技术
随着业务规模的扩大,软件程序变得复杂多变,一点细微的代码变动就有可能影响到多方面的功能,因此需要花费大量的人力进行分析测试工作,来验证程序变更之后的影响点,为了缓解此问题软件测试工作需要引入自动化测试来快速的回归各个功能模块,但不同人员使用的自动化测试技术栈不同,且技术水平参差不齐,服务协议多变,写的东西难以维护,且代码覆盖率无法衡量。
发明内容
为解决上述技术问题,本发明提出一种低代码接口自动化、电子设备及存储介质的技术方案,以解决上述技术问题。
本发明第一方面公开了一种低代码接口自动化系统,所述系统包括:
用例转换模块、流程用例编写模块、测试元数据模块、产品环境配置模块、接口请求模块、辅助函数模块、前后置模块、异步校验事件模块、流量分析模块、覆盖率分析模块、任务模块、前端代码分析模块、报告模块和看板模块;
所述用例转换模块将swagger和curl的三方请求报文解析成系统内的用例;
所述流程用例编写模块,将多种控制器、接口和用例拼接拖拽组合成流程用例,所述控制器包括if、while和for基础功能;
所述测试元数据模块,管理每个环境的基础测试数据,通过元数据模板生成每个环境的基础测试数据,从而管理维护测试数据;
所述产品环境配置模块,管理产品以及环境信息,包括所述环境级别的请求头注入、环境变量定义、路由匹配和环境断言;
所述接口请求模块,调用多种类型接口;
所述辅助函数模块,将预设的逻辑封装在一个函数中,提交保存在reload到当前web服务内存中,并同时持久化保存至MySQL;
所述前后置模块,通过编写脚本,处理流程用例中的非预设的逻辑;
所述异步校验事件模块,使用内置的方法将被测代码的异步或者队列处理的中间过程的校验提交至RabbitMq中,并使用Work监听所述队列获取执行;
所述流量分析模块解析线上Nginx日志和请求的代码,将请求的信息解析并降噪落库后,启动一个异步任务做一个覆盖对比,当出口流量存在于线上流量或请求中,则覆盖数加一,最终统计出请求覆盖率以及线上流量覆盖率,作为接口测试线上覆盖率的辅助判断条件;
所述覆盖率分析模块,实时分析被测代码的覆盖情况,作为衡量测试用例的代码覆盖度;
所述前端代码分析模块,管理解析前端代码,后端将获取前端代码并解析降噪前端代码的请求方式和请求路径,用于流量的代码说明以及统计前端请求的覆盖率;
所述任务模块,动态新增编辑测试任务;
所述报告模块,保存每一次用例执行和被测代码的测试任务执行的报告;
所述看板,展示系统内的测试数据。
根据本发明第一方面的系统,所述用例转换模块,通过解析Swagger API DocsJSON获取当前Swagger中所有的接口信息,包括请求方式、请求描述和请求参数,所述接口信息将存入到一张临时表中;勾选需要导入的接口,将Swagger中的接口批量导入至系统的接口库中,并建立关联关系用于获取接口请求体定义与变更;另外一种方式通过浏览器或者三方抓包软件,将请求录制后复制出当前请求的curl,贴入至系统内,系统自动解析所述请求的依赖关系,将请求顺序录入系统内。
根据本发明第一方面的系统,所述流程用例编写模块的前端使用draggable模块进行拖拽组装的行为交互,且拖入至用例中的请求,所述draggable模块将会单独复制一份自己的数据,在用例中变更所述自己的数据,实现单个接口以不同的入参逻辑存在于不同的用例中;所述流程用例编写模块的后端递归用例中的每一个步骤,将用例通过type方法动态创建出继承unittest.TestCase的测试类,将每一个步骤通过setattr反射到所述测试类中,最终将每个步骤实例形成对应的请求对象,通过数据推送功能将用例中的数据信息反推到接口信息中,将接口信息推送到所属用例步骤中。
根据本发明第一方面的系统,所述接口请求模块将匹配对应的请求类型,并根据不同的请求类型,加载对应的请求数据;在接口执行前将初始化不同层级的变量池用于不同优先级的变量替换,初始化后将会将请求参数中所有$xx、${xx}和${func($x,a=$y)}的变量通过递归和正则的方式,使用初始化的变量池进行变量替换,与此同时环境请求头与环境校验默认注入至该请求中,然后经过前置处理器,若请求包含前置脚本则会自动注入运行时对象以及上下文变量后使用exec执行所述请求的代码,所述代码输出被重定向到对应的缓冲池中,最终在报告中体现。
根据本发明第一方面的系统,所述辅助函数模块,编写好辅助方法后进行调试,查看单个辅助方法的执行结果,保存所述辅助方法后触发所述方法的版本的diff操作,将diff当前版本给与修改变更值,确认辅助方法成功后,通过reload方法将所述辅助方法实时载入测试服务的内存中,同时也持久化至数据库中。
根据本发明第一方面的系统,所述前后置模块执行Python3代码块,在执行所述代码块之前将不同层级的变量池注入所述代码块的执行的作用域中,并且将内置对象ARun注入至该作用域,从而获取和修改运行时的变量。
根据本发明第一方面的系统,任务模块的后端使用APScheduler支撑任务执行,在任务模块的前端页面上自定义添加不同类型的任务,所述前端页面将通过选择不同类型的任务展示对应的列表页面,所述前端页面通过条件查询筛选出所需要的用例载入后,调用update方法动态的更新任务信息,并且在执行时将任务中的用例解析后扔到ThreadPoolExecutor中进行并发执行。
根据本发明第一方面的系统,所述覆盖率分析模块将JaCoCo Agent打入服务镜像中,通过添加服务启动命令同时启动JaCoCo Agent,并且开启TcpServer模式,暴露出对应的端口,测试服务则按照固定的时间轮序或手动触发,将覆盖率exec文件生成到系统所属服务器上,并根据配置git仓库以及分支信息,将被测代码拉取至本地,mvn clean compile后使用jaocococli命令生成对应的覆盖率报告,并使用anywhere作为所述覆盖率报告展示管理服务,在系统内使用iframe嵌入至所述前端页面内。
本发明第二方面提供了一种电子设备,所述设备包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行如本发明第一方面所述的一种低代码接口自动化系统中的方法。
本发明第三方面提供了一种存储介质,该存储介质存储的计算机程序,能够被一个或多个处理器执行,能够用来实现如本发明第一方面所述的一种低代码接口自动化系统中的方法。
本发明提出的方案,达到用例简单编写,整个执行过程从用例执行到测试报告生成以及测试通知自动完成,极大降低了人员自动化介入难度,并极大减少了测试人员的重复劳动,同时回归测试问题反馈变得更加及时,提高了测试工作的整体效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的一种低代码接口自动化系统的结构图;
图2为根据本发明实施例的系统的任务执行流程图;
图3为根据本发明实施例的一种电子设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一方面公开了一种低代码接口自动化系统,图1为根据本发明实施例的一种低代码接口自动化系统的结构图,具体如图1所示,所述系统包括:用例转换模块、流程用例编写模块、测试元数据模块、产品环境配置模块、接口请求模块、辅助函数模块、前后置模块、异步校验事件模块、流量分析模块、覆盖率分析模块、任务模块、前端代码分析模块、报告模块和看板模块;
如图1所示,用例转换模块依次与流程用例编写模块、产品环境配置模块、接口请求模块和任务模块连接;
所述测试元数据模块与产品环境配置模块连接;
所述辅助函数模块、前后置模块和异步校验事件模块该三个模块分别与接口请求模块连接;
其中,所述流量分析模块、覆盖率分析模块和前端代码分析模块共同构成第一模块,所述第一模块分别与接口请求模块和任务模块连接;
所述第一模块与接口请求模块和任务模块共同构成了第二模块;
所述第二模块分别与报告模块和看板模块连接。
所述用例转换模块将swagger和curl三方请求报文解析成系统内的用例,包括报文头,报文体格式内容,以及请求方式等;
所述流程用例编写模块,将多种控制器,接口和用例拼接拖拽组合成流程用例,所述控制器包括if,while和for基础功能,并且支持无限嵌套,用例则可以直接引入调用;
所述测试元数据模块,管理每个环境的基础测试数据,通过元数据模板生成每个环境的基础测试数据,从而管理维护测试数据,只要环境中包含基础测试数据即可支持用例在不通环境中运行;
所述产品环境配置模块,管理产品以及环境信息,包括所述环境级别的请求头注入(用于全局登录)、环境变量定义、路由匹配(用于根据不同path拼接不同域名,适用于一个用例包含多个系统的接口串行)和环境断言(用于环境级别全局的断言);
所述接口请求模块,调用多种类型接口,例如HTTP(s),Dubbo等接口调用只需要在下拉框选择请求类型,并完善请求所需的数据,例如请求头,请求体,前后置,校验器等后即可低代码完成不同类型的协议调用;
所述辅助函数模块,将预设的逻辑封装在一个函数中,提交保存在reload到当前web服务内存中,并同时持久化保存至MySQL;可以在请求中任意地方使用${func($var}方式调用该函数;
所述前后置模块,通过编写脚本,处理流程用例中的非预设的逻辑,例如通过在前后置中编写对应的脚本即可完成对MySQL,Redis,MQ等复杂操作,脚本为Python3且可以通过内置对象完成运行时变量引用和修改等;
所述异步校验事件模块,使用内置的方法将被测代码的异步或者队列处理的中间过程的校验提交至RabbitMq中,并使用Worker监听所述队列获取执行,且任务方法支持用户自定义,且使用reload模块将客户自定义的事件载入内存中,使得系统在不停机时完成自定义方法挂载;
所述流量分析模块将解析线上Nginx日志和请求的代码,将请求的信息解析,降噪落库后,启动一个异步任务做一个覆盖对比,当出口流量存在于线上流量或请求中,则覆盖数加1,最终统计出请求覆盖率以及线上流量覆盖率,作为接口测试线上覆盖率的辅助判断条件;
所述覆盖率分析模块,实时分析被测代码的覆盖情况,作为衡量测试用例的代码覆盖度,包括行级,方法级,类级别;
所述前端代码分析模块,管理解析前端代码,后端将获取前端代码并解析降噪前端代码的请求方式和请求路径,用于流量的代码说明以及统计前端请求的覆盖率;这里的后端指的是低代码接口自动化系统的后端,后端在这可以理解为与数据库交互以及处理相对的业务逻辑;
所述任务模块,动态新增编辑测试任务,并且提供Webhook供三方调用集成CICD;
所述报告模块,保存每一次用例执行和被测代码的测试任务执行的报告,报告中包含每次的request,response以及日志输出,可用于后期分析;
所述看板,展示系统内的测试数据,包括不仅限于用例数量,任务执行状态,平台使用频率信息,将测试能力与范围可视化管理。
在一些实施例中,所述例转换模块,通过解析Swagger API Docs JSON获取当前Swagger中所有的接口信息,包括请求方式,请求描述和请求参数,所述接口信息将存入到一张临时表中;勾选需要导入的接口,将Swagger中的接口批量导入至系统的接口库中,并建立关联关系用于获取接口请求体定义与变更;关于建立关联关系是指:Swagger中的接口为一个主体,导入到系统内后成为另外一个主体,这里的关联关系指的是系统内的主体可以跟踪到Swagger中主体的变化,总结来说就是Swagger中的接口与系统中的接口的关联关系。另外一种方式通过浏览器或者三方抓包软件,例如Fiddler,将请求录制后复制出当前请求的curl,贴入至系统内,系统会自动解析所述请求的依赖关系,将请求顺序录入系统内,作为后续用例编写的接口仓库,省去多点查找接口的消耗时间。
在一些实施例中,所述流程用例编写模块的前端使用draggable模块进行拖拽组装的行为交互,且拖入至用例中的请求,所述draggable模块将会单独复制一份自己的数据,在用例中变更所述自己的数据,实现单个接口以不同的入参逻辑存在于不同的用例中;所述流程用例编写模块的后端递归用例中的每一个步骤,将用例通过type方法动态创建出继承unittest.TestCase的测试类,将步骤通过setattr反射到所述测试类中,最终将每个步骤实例成对应的请求对象,通过数据推送功能将用例中的数据信息反推到接口信息中,将接口信息推送到所属用例步骤中。
在一些实施例中,所述接口请求模块将匹配对应的请求类型,例如Dubbo还是HTTP(s),并根据不通的类型,加载对应的请求数据;在接口执行前将初始化不同层级的变量池用于不同优先级的变量替换,初始化后将会将请求参数中所有$xx、${xx}和${func($x,a=$y)}的变量通过递归和正则的方式,使用初始化的变量池进行变量替换,与此同时环境请求头与环境校验也会默认注入至改请求中,然后经过前置处理器,若请求包含前置脚本则会自动注入运行时对象以及上下文变量后使用exec执行所述请求的代码,所述代码输出则会被重定向到对应的缓冲池中,最终会体现在报告中;
同时系统会检测是否开启了SSL检测,若开启则会通过curl访问url,再通过正则获取response中的过期时间;若开启了JSON Schema重置或校验,则会将response通过遍历生成对应的JSON Schema用于下次执行后对于response的校验,最终的执行结果将会持久化至数据库中。
在一些实施例中,所述辅助函数模块,编写好辅助方法后进行调试,查看单个辅助方法的执行结果,保存所述辅助方法后触发所述方法的版本的diff操作,将diff当前版本与修改变更值,确认辅助方法成功后,将通过reload方法将所述辅助方法实时载入测试服务的内存中,同时也持久化至数据库中,从而实现了不重启服务即可完成内置方法的修改或增加。
在一些实施例中,所述前后置模块执行Python3代码块,在执行所述代码块之前将不同层级的变量池注入所述代码块的执行的作用域中,并且将内置对象ARun注入至改作用域,从而获取和修改运行时的变量,并且支持引用辅助函数中的定义函数,例如在common_utils中定义的test函数则可以直接用common_utils.test()的形式来调用;实现了低代码完成复杂逻辑的接口自动化。
在一些实施例中,任务模块的后端使用APScheduler支撑任务执行,在任务模块的前端页面上自定义添加不同类型的任务,例如接口测试、ui测试、python脚本等,所述前端页面将通过选择不通类型的任务展示对应的列表页面,所述前端页面通过条件查询筛选出所需要的用例载入后,调用update方法动态的更新任务信息,并且在执行时通过将任务中的用例解析后扔到ThreadPoolExecutor中进行并发执行。
在一些实施例中,所述覆盖率分析模块将JaCoCo Agent打入服务镜像中,通过添加服务启动命令同时启动JaCoCo Agent,并且开启TcpServer模式,暴露出对应的端口,测试服务则按照固定的时间轮序或手动触发,将覆盖率exec文件生成到系统所属服务器上,并根据配置git仓库以及分支信息,将被测代码拉取至本地,mvn clean compile后使用jaocococli命令生成对应的覆盖率报告,并使用anywhere作为所述覆盖率报告展示管理服务,在系统内使用iframe嵌入至所述前端页面内。该覆盖结果将作为应用代码覆盖率的直观体现,可以通过报告未覆盖的点针对性补充用例,让应用的覆盖度更广,测试效果肉眼直观可见。
在一些实施例中,所述前端代码分析模块,包含了应用仓库管理配置中心,用于维护关联仓库的地址和分支等信息,用于后期根据对应的信息拉取前端代码;拉取前端代码后后端将会根据不同类型的文件进行解析降噪其请求方式,请求路径,并将数据落库,系统将会根据从平台内的出口流量与解析后的前端请求做一个对比,得出一个前端请求覆盖率,并提供对应的覆盖列表,作为后续补充用例的依据。
在一些实施例中,如图2所示,系统的任务执行流程包括以下步骤:
步骤S1、使用人员将在系统内定义具体待测系统的信息,例如产品名称,产品描述等;测试人员将根据对应的环境定义环境的基础数据例如整个环境的变量池,环境级别的请求头,以及全局校验等配置;然后测试人员将选择刚刚建立的环境,跑对应的环境初始化用例脚本,这将会生成一个环境运行所需要所有的基础测试数据。
步骤S2、使用人员可以根据自己所需的请求类型,去转换、编写对应的测试用例,例如使用人员可以打开浏览器F12在Network Tab下选择你想要的请求,右键复制curl信息,粘贴进系统,系统将会解析内容至表单中包括请求地址,请求头,请求方式,请求体等所需的的基础参数。用户可以在下拉框中选择不同的控制器,例如循环控制器(for),流程控制器(if),轮询控制器(while)来控制请求的执行动作,也可以通过上下拖动步骤来确定步骤的执行顺序,同时也可以引用其他用例作为该用例的前置引用用例。
步骤S3、定时任务会根据date/interval/cron等方式去调用测试用例,系统会在执行时拉取最新的用例信息作为执行入参。
步骤S4、执任务行结束时会发送对应的消息至群组,信息包含测试基础信息例如成功个数,失败个数,报告详细地址等。测试报告也会同步持久化落库,供后期分析异常使用。
步骤S5、在任务执行过程中,系统将会捕获出口流量信息,最终降噪后落库,例如Method:GET http://127.0.0.1/test?a=1&b=2将会转换成Method:GET http:// 127.0.0.1/test?a=${noise}&b=${noise},于此同时流量分析模块将会解析线上Nginx日志以及前端请求代码,将请求信息按照上述步骤解析,降噪落库后,将会启动一个异步任务做一个覆盖对比,当出口流量存在于线上流量或前端请求中,则覆盖数加1,最终统计出前端请求覆盖率以及线上流量覆盖率,作为接口测试线上覆盖率的辅助判断条件。覆盖率分析模块是在应用打包镜像时将JaCoCo Agent一并打入镜像,并在web服务启动命令中通过tcpserver的方式启动该Agent暴露对应的对外端口使得具有可以向外拉取数据的能力,在接口测试执行过程中Agent将会采集应用代码的执行覆盖状况,并可以手动或任务定时触发通过JaCoCo暴露出的tcpserver拿到应用代码的exec文件,并从仓库配置中心获取到当前部署应用的仓库地址以及对应分支,然后用仓库信息拉取代码后通过mvn compile命令编译该应用代码,最后使用jacococli命令生成对应的覆盖率报告展示在系统内,该覆盖结果将作为应用代码覆盖率的直观体现,可以通过报告未覆盖的点针对性补充用例,让应用的覆盖度更广。
综上,本发明各个方面的技术方案与现有技术相比具有如下优点:达到用例简单编写,整个执行过程从用例执行到测试报告生成以及测试通知自动完成,极大降低了人员自动化介入难度,并极大减少了测试人员的重复劳动,同时回归测试问题反馈变得更加及时,提高了测试工作的整体效率。
本发明第二方面公开了一种电子设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时,实现本发明公开第一方面中任一项的一种低代码接口自动化方法中的步骤。
图3为根据本发明实施例的一种电子设备的结构图,如图3所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明第三方面公开了一种存储介质,具体涉及计算机的可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本发明公开第一方面中任一项的一种低代码接口自动化方法中的步骤中的步骤。
请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种低代码接口自动化系统,其特征在于,所述系统包括:用例转换模块、流程用例编写模块、测试元数据模块、产品环境配置模块、接口请求模块、辅助函数模块、前后置模块、异步校验事件模块、流量分析模块、覆盖率分析模块、任务模块、前端代码分析模块、报告模块和看板模块;
所述用例转换模块将swagger和curl的三方请求报文解析成系统内的用例;
所述流程用例编写模块,将多种控制器、接口和用例拼接拖拽组合成流程用例,所述控制器包括if、while和for基础功能;
所述测试元数据模块,管理每个环境的基础测试数据,通过元数据模板生成每个环境的基础测试数据,从而管理维护测试数据;
所述产品环境配置模块,管理产品以及环境信息,包括所述环境级别的请求头注入、环境变量定义、路由匹配和环境断言;
所述接口请求模块,调用多种类型接口;
所述辅助函数模块,将预设的逻辑封装在一个函数中,提交保存在reload到当前web服务内存中,并同时持久化保存至MySQL;
所述前后置模块,通过编写脚本,处理流程用例中的非预设的逻辑;
所述异步校验事件模块,使用内置的方法将被测代码的异步或者队列处理的中间过程的校验提交至RabbitMq中,并使用Work监听所述队列获取执行;
所述流量分析模块解析线上Nginx日志和请求的代码,将请求的信息解析并降噪落库后,启动一个异步任务做一个覆盖对比,当出口流量存在于线上流量或请求中,则覆盖数加一,最终统计出请求覆盖率以及线上流量覆盖率,作为接口测试线上覆盖率的辅助判断条件;
所述覆盖率分析模块,实时分析被测代码的覆盖情况,作为衡量测试用例的代码覆盖度;
所述前端代码分析模块,管理解析前端代码,后端将获取前端代码并解析降噪前端代码的请求方式和请求路径,用于流量的代码说明以及统计前端请求的覆盖率;
所述任务模块,动态新增编辑测试任务;
所述报告模块,保存每一次用例执行和被测代码的测试任务执行的报告;
所述看板,展示系统内的测试数据。
2.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,所述用例转换模块,通过解析Swagger APIDocs JSON获取当前Swagger中所有的接口信息,包括请求方式、请求描述和请求参数,所述接口信息将存入到一张临时表中;勾选需要导入的接口,将Swagger中的接口批量导入至系统的接口库中,并建立关联关系用于获取接口请求体定义与变更;另外一种方式通过浏览器或者三方抓包软件,将请求录制后复制出当前请求的curl,贴入至系统内,系统自动解析所述请求的依赖关系,将请求顺序录入系统内。
3.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,所述流程用例编写模块的前端使用draggable模块进行拖拽组装的行为交互,且拖入至用例中的请求,所述draggable模块将会单独复制一份自己的数据,在用例中变更所述自己的数据,实现单个接口以不同的入参逻辑存在于不同的用例中;所述流程用例编写模块的后端递归用例中的每一个步骤,将用例通过type方法动态创建出继承unittest.TestCase的测试类,将每一个步骤通过setattr反射到所述测试类中,最终将每个步骤实例形成对应的请求对象,通过数据推送功能将用例中的数据信息反推到接口信息中,将接口信息推送到所属用例步骤中。
4.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,所述接口请求模块将匹配对应的请求类型,并根据不同的请求类型,加载对应的请求数据;在接口执行前将初始化不同层级的变量池用于不同优先级的变量替换,初始化后将会将请求参数中所有$xx、${xx}和${func($x,a=$y)}的变量通过递归和正则的方式,使用初始化的变量池进行变量替换,与此同时环境请求头与环境校验默认注入至该请求中,然后经过前置处理器,若请求包含前置脚本则会自动注入运行时对象以及上下文变量后使用exec执行所述请求的代码,所述代码输出被重定向到对应的缓冲池中,最终在报告中体现。
5.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,所述辅助函数模块,编写好辅助方法后进行调试,查看单个辅助方法的执行结果,保存所述辅助方法后触发所述方法的版本的diff操作,将diff当前版本给与修改变更值,确认辅助方法成功后,通过reload方法将所述辅助方法实时载入测试服务的内存中,同时也持久化至数据库中。
6.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,所述前后置模块执行Python3代码块,在执行所述代码块之前将不同层级的变量池注入所述代码块的执行的作用域中,并且将内置对象ARun注入至该作用域,从而获取和修改运行时的变量。
7.根据权利要求1所述的一种低代码接口自动化系统,其特征在于,任务模块的后端使用APScheduler支撑任务执行,在任务模块的前端页面上自定义添加不同类型的任务,所述前端页面将通过选择不同类型的任务展示对应的列表页面,所述前端页面通过条件查询筛选出所需要的用例载入后,调用update方法动态的更新任务信息,并且在执行时将任务中的用例解析后扔到ThreadPoolExecutor中进行并发执行。
8.根据权利要求1-7任一项所述的一种低代码接口自动化系统,其特征在于,所述覆盖率分析模块将JaCoCo Agent打入服务镜像中,通过添加服务启动命令同时启动JaCoCoAgent,并且开启TcpServer模式,暴露出对应的端口,测试服务则按照固定的时间轮序或手动触发,将覆盖率exec文件生成到系统所属服务器上,并根据配置git仓库以及分支信息,将被测代码拉取至本地,mvn clean compile后使用jaocococli命令生成对应的覆盖率报告,并使用anywhere作为所述覆盖率报告展示管理服务,在系统内使用iframe嵌入至所述前端页面内。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行如权利要求1至8任意一项所述的一种低代码接口自动化系统中的方法。
10.一种存储介质,其特征在于,该存储介质存储的计算机程序,能够被一个或多个处理器执行,能够用来实现如权利要求1至8中任一项所述的一种低代码接口自动化系统中的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083201.3A CN115422063A (zh) | 2022-09-06 | 2022-09-06 | 一种低代码接口自动化系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083201.3A CN115422063A (zh) | 2022-09-06 | 2022-09-06 | 一种低代码接口自动化系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115422063A true CN115422063A (zh) | 2022-12-02 |
Family
ID=84203042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211083201.3A Pending CN115422063A (zh) | 2022-09-06 | 2022-09-06 | 一种低代码接口自动化系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115422063A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858133A (zh) * | 2023-03-01 | 2023-03-28 | 北京仁科互动网络技术有限公司 | 批量数据的处理方法、装置、电子设备及存储介质 |
CN116028376A (zh) * | 2023-03-27 | 2023-04-28 | 云筑信息科技(成都)有限公司 | 基于流量录制快速生成接口自动化用例的方法 |
CN116795378A (zh) * | 2023-08-18 | 2023-09-22 | 宁波数益工联科技有限公司 | 基于代码动态编译的流程编排执行方法及装置 |
CN117370217A (zh) * | 2023-12-08 | 2024-01-09 | 天津华来科技股份有限公司 | 一种基于python的接口测试结果自动生成方法 |
CN117648263A (zh) * | 2024-01-29 | 2024-03-05 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
CN117648263B (zh) * | 2024-01-29 | 2024-05-10 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
-
2022
- 2022-09-06 CN CN202211083201.3A patent/CN115422063A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858133A (zh) * | 2023-03-01 | 2023-03-28 | 北京仁科互动网络技术有限公司 | 批量数据的处理方法、装置、电子设备及存储介质 |
CN115858133B (zh) * | 2023-03-01 | 2023-05-02 | 北京仁科互动网络技术有限公司 | 批量数据的处理方法、装置、电子设备及存储介质 |
CN116028376A (zh) * | 2023-03-27 | 2023-04-28 | 云筑信息科技(成都)有限公司 | 基于流量录制快速生成接口自动化用例的方法 |
CN116028376B (zh) * | 2023-03-27 | 2023-08-29 | 云筑信息科技(成都)有限公司 | 基于流量录制快速生成接口自动化用例的方法 |
CN116795378A (zh) * | 2023-08-18 | 2023-09-22 | 宁波数益工联科技有限公司 | 基于代码动态编译的流程编排执行方法及装置 |
CN116795378B (zh) * | 2023-08-18 | 2023-11-21 | 宁波数益工联科技有限公司 | 基于代码动态编译的流程编排执行方法及装置 |
CN117370217A (zh) * | 2023-12-08 | 2024-01-09 | 天津华来科技股份有限公司 | 一种基于python的接口测试结果自动生成方法 |
CN117648263A (zh) * | 2024-01-29 | 2024-03-05 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
CN117648263B (zh) * | 2024-01-29 | 2024-05-10 | 苏州联芸科技有限公司 | 待测设计的测试方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7209034B2 (ja) | エッジコンピューティングテスト方法、装置、機器及び読み取り可能な記憶媒体 | |
CN115422063A (zh) | 一种低代码接口自动化系统、电子设备及存储介质 | |
US8984489B2 (en) | Quality on submit process | |
US8719784B2 (en) | Assigning runtime artifacts to software components | |
US8234633B2 (en) | Incident simulation support environment and business objects associated with the incident | |
US20130263090A1 (en) | System and method for automated testing | |
US10565089B2 (en) | Identification of code features potentially associated with code behavior | |
WO2018184361A1 (zh) | 应用程序测试方法、服务器、终端和存储介质 | |
CN112631919A (zh) | 一种对比测试方法、装置、计算机设备及存储介质 | |
CN111752841A (zh) | 单测模拟方法、装置、设备与计算机可读存储介质 | |
CN111352612A (zh) | 用于代码部署的调度方法、装置、电子设备和存储介质 | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
US20220197606A1 (en) | Software library differential identification and automated uplift | |
CN113127280A (zh) | 一种api接口自动化录入方法及系统 | |
CN112559525A (zh) | 数据检查系统、方法、装置和服务器 | |
CN111880804A (zh) | 应用程序代码的处理方法及装置 | |
CN115509913A (zh) | 软件自动化测试方法、装置、机器可读介质及设备 | |
CN111666201A (zh) | 回归测试方法、装置、介质及电子设备 | |
CN114936152A (zh) | 应用测试方法及设备 | |
CN113220592B (zh) | 自动化测试资源的处理方法、装置、服务器及存储介质 | |
CN114064503A (zh) | 一种ui自动化测试方法、装置、电子设备及存储介质 | |
CN112632174A (zh) | 一种数据检验的方法、装置和系统 | |
CN111611173A (zh) | 一种应用于微服务工程接口文档检测的系统和方法 | |
CN116360800B (zh) | 一种代码分支环境的部署方法、装置及电子设备 | |
Gammelgaard | Microservices in. NET |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |