接口对比测试的方法、系统、设备和介质与流程

文档序号:22544921发布日期:2020-10-17 02:12阅读:98来源:国知局
接口对比测试的方法、系统、设备和介质与流程

本发明涉及数据处理技术领域,特别涉及一种接口对比测试的方法、系统、设备和介质。



背景技术:

为满足日益复杂多样的业务需求,除了每周常规迭代,还有大量的项目以及紧急发布需求需要上线,使得测试工作越来越繁重,依靠单纯的手工测试难以保证产品质量。

目前,在测试金字塔模型中,接口测试投入较少,而收益却高,如何高效的对接口进行测试是一个不得不探讨的问题。接口迭代的过程中,除了要验证本次需求的改动点,还需要回归改动对其他功能点有没有影响,不能因为这次的调整对之前的功能产生影响。人工回归接口工作量巨大,覆盖的测试场景有限,往往就只是简单的走主要流程,绝大部分场景不能覆盖,难以保证质量。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中人工回归接口工作效率低,覆盖的测试场景有限的缺陷,提供一种接口对比测试的方法、系统、设备和介质。

本发明是通过下述技术方案来解决上述技术问题:

本发明提供了一种接口对比测试的方法,所述接口对比测试的方法包括:

配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;

将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;

基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;

将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。

较佳地,所述获取所述目标接口的请求报文的步骤包括:

从数据库中获取所述目标接口的数据;

将所述目标接口的数据写入内存作为全局变量;

从所述全局变量中取值替换所述请求报文的模板中的字段,以得到所述请求报文。

较佳地,将所述目标接口的请求报文写入队列表中的步骤包括:

对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改;

将修改后的请求报文写入队列表中。

较佳地,所述将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中的步骤之后还包括:

对所述目标接口的所述请求报文的节点的数据进行修改。

较佳地,所述将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出的步骤包括以下步骤:

判断所述当前响应报文及所述历史响应报文的节点是否相同且相同的所述节点仅有一个,若是,则对相同的所述节点进行自动匹配映射,以输出所述当前响应报文及所述历史响应报文的比对结果;若否,则输出人工匹配映射信号,以提示人工匹配映射。

较佳地,所述接口对比测试的方法还包括:

将所述对比结果写入数据库中;

从所述数据库中获取所述对比结果的数据;

基于所述对比结果的数据,统计所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点;

输出所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点。

本发明还提供了一种接口对比测试的系统,所述接口对比测试的系统包括:

第一获取模块,用于配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;

第一写入模块,用于将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;

调用模块,用于基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;

对比模块,用于将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。

较佳地,所述第一获取模块包括:

获取单元,用于从数据库中获取所述目标接口的数据;

第一写入单元,用于将所述目标接口的数据写入内存作为全局变量;

替换单元,用于从所述全局变量中取值替换所述请求报文的模板中的字段,以得到所述请求报文。

较佳地,所述第一写入模块包括:

修改单元,用于对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改;

第二写入单元,用于将修改后的请求报文写入队列表中。

较佳地,所述的接口对比测试的系统还包括:

修改模块,对所述目标接口的所述请求报文的节点的数据进行修改。

较佳地,所述对比模块还用于判断所述当前响应报文及所述历史响应报文的节点是否相同且相同的所述节点仅有一个,若是,则对相同的所述节点进行自动匹配映射,以输出所述当前响应报文及所述历史响应报文的比对结果;若否,则输出人工匹配映射信号,以提示人工匹配映射。

较佳地,所述接口对比测试的系统还包括:

第二写入模块,用于将所述对比结果写入数据库中;

第二获取模块,用于从所述数据库中获取所述对比结果的数据;

统计模块,用于基于所述对比结果的数据,统计所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点;

输出模块,用于输出所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点。

本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述的接口对比测试的方法。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述的接口对比测试的方法的步骤。

本发明的积极进步效果在于:

本发明能够自动对接口进行对比测试,快速构建大批量请求报文进行接口响应报文对比测试,能够快速发现当前迭代与上一版本的差异,提高了工作效率,同时也解决了回归测试中场景不够丰富的问题,增加了覆盖的测试场景。

附图说明

图1为本发明实施例1的接口对比测试的方法的流程图;

图2为本发明实施例1中的步骤s101的流程图;

图3为本发明实施例1中的步骤s102的流程图;

图4为本发明实施例1中的步骤s105的流程图;

图5为本发明实施例2的接口对比测试的系统的模块示意图;

图6为本发明实施例2的第一获取模块的模块示意图;

图7为本发明实施例2的第一写入模块的模块示意图;

图8为本发明实施例3的电子设备的结构示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

如图1所示,本实施例公开了接口对比测试的方法,包括以下步骤:

步骤s101、配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;

本实施例中,获取所述目标接口的请求报文的方式有两种形式,一种是通过sql传参来获取,另一种是通过拉取日志中的请求报文来获取,具体是根据日志标题/标签,拉取指定时间范围请求报文,在有效期内持续拉取报文,获取日志后进行拼接截取,拿到完整有效的请求报文压缩后落地。为提升系统效率,将已经拉取过的时间范围写入缓存,对重合的时间段不再拉取。用户在新增配置时对这两种获取报文的方式进行选择。本实施例中,在获取所述目标接口的请求报文及所述目标接口的请求地址之前触发对比任务。

步骤s102、将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;

步骤s103、对所述目标接口的所述请求报文的节点的数据进行修改。

本实施例中,用户在新增配置时,增加请求前预处理配置,通过jsonpath(一种检索数据交换格式路径的工具)、xpath(xmlpathlanguage,xml路径语言)从请求报文中取值写入全局变量,从全局变量中取值拼接执行sql(structuredquerylanguage,结构化语言),在请求接口前执行预处理sql,从而实现对所述目标接口的所述请求报文的节点的数据进行修改。请求前预处理是对所述目标接口的所述请求报文的节点的数据进行修改,例如,在接口测试过程中,测试数据(如订单数据)可能需要修改后才能达到处理的条件。

步骤s104、基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;

本实施例中,为提升接口对比速度,根据任务id(identitydocument,身份标识号)取余分配执行机器,多行程请求接口。

步骤s105、将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。

步骤s106、将所述对比结果写入数据库中;

本实施例中,将对比结果写入es(elasticsearch)中,es是一个基于lucene(一种搜索引擎)的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restfulweb(一种数据接口的设计)接口。

步骤s107、从所述数据库中获取所述对比结果的数据;

步骤s108、基于所述对比结果的数据,统计所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点;

步骤s109、输出所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点。

如图2所示,本实施例中,步骤s101中获取所述目标接口的请求报文的步骤包括:

步骤s1011、从数据库中获取所述目标接口的数据;

步骤s1012、将所述目标接口的数据写入内存作为全局变量;

步骤s1013、从所述全局变量中取值替换所述请求报文的模板中的字段,以得到所述请求报文。

如图3所示,本实施例中,步骤s102中将所述目标接口的请求报文写入队列表中包括以下步骤:

步骤s1021、对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改;

步骤s1022、将修改后的请求报文写入队列表中。

本实施例中,用户在新增配置时,增加自定义处理请求配置,实现扩展功能,用户可以在接口调用前,对请求报文进行二次修改,例如,请求报文依赖其他接口的数据,或者从日志中拉取的情况请求报文不是合法的json字符串,需要二次清理等等,实现对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改。进而实现javainterface(一种接口),将实现类与对比配置进行绑定,执行时取出当前配置的实例对象进行逻辑处理。以低耦合的方式基于本系统进行扩展,以满足不同的需求。

如图4所示,本实施例中,步骤s105包括以下步骤:

步骤s1051、判断所述当前响应报文及所述历史响应报文的节点是否相同且相同的所述节点仅有一个;若是,则执行步骤s1052;若否则执行步骤s1053;

步骤s1052、对相同的所述节点进行自动匹配映射,以输出所述当前响应报文及所述历史响应报文的比对结果;

步骤s1053、输出人工匹配映射信号,以提示人工匹配映射。

本实施例中,通过获取接口的契约,将相同路径相同名称的节点自动匹配,对jsonpath路径的映射关系保存下来,后续对比时,根据映射关系,取出当前响应报文及所述历史响应报文两个版本报文的值进行对比。

本实施例中设计的数据库表包括:interface_monitor_config(接口监视器配置)数据库表、interface_monitor_batch(接口监视器批次)数据库表、interface_monitor_result(接口监控结果)数据库表。其中,interface_monitor_config用于存储流程图中的两种获取请求报文的配置。如果是sql传参的方式则存储sql、请求报文模板等。如果是从日志系统中获取请求报文则主要存储拉取日志的配置。interface_monitor_batch每次触发任务写表,用于记录当前批次的报告接收人,对比后的统计结果等。interface_monitor_result主要存储每一个对比任务的a、b两个版本的请求url(uniformresourcelocator,统一资源定位系统),请求报文,以及对比完成后的响应报文。

以下具体示出interface_monitor_config数据库表(如下表一)、interface_monitor_batch数据库表(如下表二)、interface_monitor_result数据库表(如下表三)。以下三种数据库表仅是一个示例,并不仅限于此。

表一

表二

表三

本实施例公开了接口对比测试的方法,通过配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。相较于现有技术,本发明能够自动对接口进行对比测试,快速构建大批量请求报文进行接口响应报文对比测试,能够快速发现当前迭代与上一版本的差异,提高了工作效率,同时也解决了回归测试中场景不够丰富的问题,增加了覆盖的测试场景。

实施例2

如图5所示,本实施例公开了接口对比测试的系统,包括:

第一获取模块1,用于配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;

本实施例中,获取所述目标接口的请求报文的方式有两种形式,一种是通过sql传参来获取,另一种是通过拉取日志中的请求报文来获取,具体是根据日志标题/标签,拉取指定时间范围请求报文,在有效期内持续拉取报文,获取日志后进行拼接截取,拿到完整有效的请求报文压缩后落地。为提升系统效率,将已经拉取过的时间范围写入缓存,对重合的时间段不再拉取。用户在新增配置时对这两种获取报文的方式进行选择。本实施例中,在获取所述目标接口的请求报文及所述目标接口的请求地址之前触发对比任务。

第一写入模块2,用于将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;

修改模块3,对所述目标接口的所述请求报文的节点的数据进行修改。

本实施例中,用户在新增配置时,增加请求前预处理配置,通过jsonpath、xpath从请求报文中取值写入全局变量,从全局变量中取值拼接执行sql,在请求接口前执行预处理sql,从而实现对所述目标接口的所述请求报文的节点的数据进行修改。请求前预处理是对所述目标接口的所述请求报文的节点的数据进行修改,例如,在接口测试过程中,测试数据(如订单数据)可能需要修改后才能达到处理的条件。

调用模块4,用于基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;

本实施例中,为提升接口对比速度,根据任务id取余分配执行机器,多行程请求接口。

对比模块5,用于将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。

对比模块5,还用于判断所述当前响应报文及所述历史响应报文的节点是否相同且相同的所述节点仅有一个,若是,则对相同的所述节点进行自动匹配映射,以输出所述当前响应报文及所述历史响应报文的比对结果;若否,则输出人工匹配映射信号,以提示人工匹配映射。

第二写入模块6,用于将所述对比结果写入数据库中;

本实施例中,将对比结果写入es(elasticsearch)中,es是一个基于lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restfulweb接口。

第二获取模块7,用于从所述数据库中获取所述对比结果的数据;

统计模块8,用于基于所述对比结果的数据,统计所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点;

输出模块9,用于输出所述当前响应报文及所述历史响应报文的不一致节点、缺失节点及忽略节点。

如图6所示,本实施例中第一获取模块1包括:

获取单元11,用于从数据库中获取所述目标接口的数据;

第一写入单元12,用于将所述目标接口的数据写入内存作为全局变量;

替换单元13,用于从所述全局变量中取值替换所述请求报文的模板中的字段,以得到所述请求报文。

如图7所示,本实施例中第一写入模块2包括:

修改单元21,用于对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改;

第二写入单元22,用于将修改后的请求报文写入队列表中。

本实施例中,用户在新增配置时,增加自定义处理请求配置,实现扩展功能,用户可以在接口调用前,对请求报文进行二次修改,例如,请求报文依赖其他接口的数据,或者从日志中拉取的情况请求报文不是合法的json字符串,需要二次清理等等,实现对所述目标接口的请求报文的字段节点及所述请求报文的节点的数据进行修改。进而实现javainterface,将实现类与对比配置进行绑定,执行时取出当前配置的实例对象进行逻辑处理。以低耦合的方式基于本系统进行扩展,以满足不同的需求。

本实施例中,通过获取接口的契约,将相同路径相同名称的节点自动匹配,对jsonpath路径的映射关系保存下来,后续对比时,根据映射关系,取出当前响应报文及所述历史响应报文两个版本报文的值进行对比。

本实施例中设计的数据库表包括:interface_monitor_config数据库表、interface_monitor_batch数据库表、interface_monitor_result数据库表。其中,interface_monitor_config用于存储流程图中的两种获取请求报文的配置。如果是sql传参的方式则存储sql、请求报文模板等。如果是从日志系统中获取请求报文则主要存储拉取日志的配置。interface_monitor_batch每次触发任务写表,用于记录当前批次的报告接收人,对比后的统计结果等。interface_monitor_result主要存储每一个对比任务的a、b两个版本的请求url,请求报文,以及对比完成后的响应报文。

以下具体示出interface_monitor_config数据库表(如下表一)、interface_monitor_batch数据库表(如下表二)、interface_monitor_result数据库表(如下表三)。以下三种数据库表仅是一个示例,并不仅限于此。

表一

表二

表三

本实施例公开了接口对比测试的系统,通过配置目标接口,获取所述目标接口的请求报文及所述目标接口的请求地址;将所述目标接口的请求报文及所述目标接口的请求地址写入队列表中;基于所述队列表,请求目标接口并调用所述目标接口对应的当前响应报文及历史响应报文;其中,所述当前相应报文为所述目标接口迭代后的响应报文,所述历史响应报文为所述目标接口迭代前的响应报文;将所述当前响应报文及所述历史响应报文进行对比,以获取对比结果并进行输出。相较于现有技术,本发明能够自动对接口进行对比测试,快速构建大批量请求报文进行接口响应报文对比测试,能够快速发现当前迭代与上一版本的差异,提高了工作效率,同时也解决了回归测试中场景不够丰富的问题,增加了覆盖的测试场景。

实施例3

图8为本发明实施例3提供的一种电子设备的结构示意图。所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1所提供的接口对比测试的方法。图8显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图8所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。

总线33包括数据总线、地址总线和控制总线。

存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。

存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1所提供的接口对比测试的方法。

电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

实施例4

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1所提供的接口对比测试的方法的步骤。

其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。

在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1所提供的接口对比测试的方法中的步骤。

其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1