CN111552632B - 一种接口测试方法及装置 - Google Patents
一种接口测试方法及装置 Download PDFInfo
- Publication number
- CN111552632B CN111552632B CN202010232228.9A CN202010232228A CN111552632B CN 111552632 B CN111552632 B CN 111552632B CN 202010232228 A CN202010232228 A CN 202010232228A CN 111552632 B CN111552632 B CN 111552632B
- Authority
- CN
- China
- Prior art keywords
- interface
- tested
- test
- result
- test environment
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 405
- 238000012795 verification Methods 0.000 claims abstract description 73
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000004891 communication Methods 0.000 claims description 19
- 238000004519 manufacturing process Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 16
- 230000006399 behavior Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000010998 test method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013509 system migration Methods 0.000 description 1
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
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
本发明实施例提供了一种接口测试方法及装置,所述方法包括:获取各个待测试接口以及与待测试接口对应的请求参数;在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据请求参数对所述待测试接口进行返回值校验,得到校验结果;当校验结果为一致时,获取在第一测试环境中针对待测试接口的第一返回信息,以及在第二测试环境中针对待测试接口的第二返回信息;对第一返回信息和第二返回信息进行对比操作,并根据对比结果得到测试结果。无论在待测试接口为读接口还是写接口的情况下,对待测试接口进行数据库日志层面上的对比,实现对待测试接口的内部逻辑方面提供细节上的校验,提高对接口测试正确性的保证度。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种接口测试方法,以及一种接口测试装置。
背景技术
在软件测试行业,测试人员除了会遇到针对新功能的接口测试外,还会涉及到接口回归。在不了解原有存量接口的逻辑,且当底层语言或者实现架构发生更改的情况下,测试人员一般选择接口Diff(Diff命令,比较文本文件)的方法,该方法主要是通过接口的流量回放,来对比新老文本的返回值是否一致,从而对接口进行测试,即比对相同接口在不同版本或不同环境下面的返回内容是否符合预期。
接口Diff是一种针对上述情况有效的解决方法,但是传统的接口Diff只是单一地对返回值进行比较,而且,校验返回值的方法对读接口测试比较有效,但对于写功能接口来说,当对写功能接口进行检验返回值时,验证效果比较有限。现有的接口diff,无论对于写接口还是读接口,在针对接口的内部逻辑方面缺乏细节上的校验,而且缺乏对接口进行丰富且全方位地测试,对接口正确性的保证度不高。
发明内容
本发明实施例的目的在于提供一种接口测试方法及装置,以实现从丰富且全方位的角度上保证接口的正确性。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种接口测试方法,所述方法包括:
获取各个待测试接口以及与所述待测试接口对应的请求参数;
在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果。
可选地,所述第一返回信息包括所述第一测试环境的数据库日志中的第一执行语句集;所述第二返回信息包括所述第二测试环境的数据库日志中的第二执行语句集;
所述对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果,包括:
对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作,得到第一对比结果;
从所述第一执行语句集中获取第一预设字段,并从所述第二执行语句集中获取第二预设字段;
对所述第一预设字段和所述第二预设字段按照字段层面进行对比操作,得到第二对比结果;
根据所述第一对比结果和所述第二对比结果,生成针对所述待测试接口的测试结果。
可选地,所述根据所述第一对比结果和所述第二对比结果,生成针对所述待测试接口的测试结果,包括:
当所述第一对比结果和所述第二对比结果均为一致时,生成针对所述待测试接口的测试结果为通过;
当所述第二对比结果为不一致时,生成针对所述待测试接口的测试结果为不通过;
当所述第一对比结果为不一致且所述第二对比结果为一致时,生成针对所述待测试接口的测试结果为需进行二次校验。
可选地,所述在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果,包括:
在所述第一测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第一返回值;
在所述第二测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第二返回值;
对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果。
可选地,所述待测试接口包括读接口;所述对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果,包括:
获取所述第一返回值的第一关键字,以及获取所述第二返回值的第二关键字;
对所述第一关键字和所述关键字进行校验,得到针对所述读接口的校验结果。
可选地,所述待测试接口包括写接口;所述对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果,包括:
对所述第一返回值和所述第二返回值进行校验,得到针对所述写接口的校验结果。
在本发明实施的第二方面,还提供了一种接口测试装置,所述装置包括:
测试接口获取模块,用于获取各个待测试接口;
请求参数获取模块,用于获取与所述待测试接口对应的请求参数;
返回值校验模块,用于在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
返回信息获取模块,用于当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;
测试结果生成模块,用于对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果。
可选地,所述第一返回信息包括所述第一测试环境的数据库日志中的第一执行语句集;所述第二返回信息包括所述第二测试环境的数据库日志中的第二执行语句集;
所述测试结果生成模块包括:
第一对比子模块,用于对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作,得到第一对比结果;
预设字段获取子模块,用于从所述第一执行语句集中获取第一预设字段,并从所述第二执行语句集中获取第二预设字段;
第二对比子模块,用于对所述第一预设字段和所述第二预设字段按照字段层面进行对比操作,得到第二对比结果;
测试结果生成子模块,用于根据所述第一对比结果和所述第二对比结果,生成针对所述待测试接口的测试结果。
可选地,所述测试结果生成子模块包括:
第一测试结果生成单元,用于当所述第一对比结果和所述第二对比结果均为一致时,生成针对所述待测试接口的测试结果为通过;
第二测试结果生成单元,用于当所述第二对比结果为不一致时,生成针对所述待测试接口的测试结果为不通过;
第三测试结果生成单元,用于当所述第一对比结果为不一致且所述第二对比结果为一致时,生成针对所述待测试接口的测试结果为需进行二次校验。
可选地,所述返回值校验模块包括:
第一返回值获取子模块,用于在所述第一测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第一返回值;
第二返回值获取子模块,用于在所述第二测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第二返回值;
校验结果生成子模块,用于对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果。
可选地,所述待测试接口包括读接口;所述校验结果生成子模块包括:
关键字获取单元,用于获取所述第一返回值的第一关键字,以及获取所述第二返回值的第二关键字;
第一校验结果生成单元,用于对所述第一关键字和所述关键字进行校验,得到针对所述读接口的校验结果。
可选地,所述待测试接口包括写接口;所述校验结果生成子模块包括:
第二校验结果生成单元,用于对所述第一返回值和所述第二返回值进行校验,得到针对所述写接口的校验结果。
在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现任一所述接口测试方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的接口测试方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的接口测试方法。
本发明实施例提供的接口测试方法及装置,通过部署具有不同版本代码且同等的两个测试环境,将同一待测试接口分别在两个不同的测试环境中,根据同一请求参数进行测试操作,在比较待测试接口在两个不同测试环境中的返回值后,还可以获取待测试接口在两个不同测试环境中的返回信息,并比较两个测试环境的返回信息,根据其比较结果得到待测试接口的测试结果。无论待测试接口为读接口还是写接口,可以通过比较在不同测试环境中的返回信息,对待测试接口进行数据库日志层面上的对比,对待测试接口的内部逻辑方面提供细节上的校验,提高对接口测试正确性的保证度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中一种接口测试方法实施例一的步骤流程图;
图2为本发明实施例中一种接口测试方法实施例二的步骤流程图;
图3为本发明实施例中一种接口测试方法的处理流程图;
图4为本发明实施例中一种SQL一致性比较器的结构示意图;
图5为本发明实施例中的一种接口测试装置实施例的结构示意图;
图6为本发明实施例中的一种电子设备实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例公开了一种接口测试方法及装置,以解决在对接口进行Diff测试时,无法对接口的内部逻辑方面提供细节上的校验的问题,大大提高对接口测试正确性的保证度。
在本发明实施例中提供的接口测试方法,可以在不同的测试环境中进行的。具体的,可以预先部署两个不同的测试环境,且这两个不同的测试环境之间为同等关系,这两个不同且同等的测试环境可以是第一测试环境和第二测试环境。
在本发明的一种实施例中,预先部署两个不同的测试环境,可以获取原有生产环境依赖的数据源以及其服务代码,并根据原有生产环境依赖的数据源,以及与其同等的服务代码,部署第一测试环境;可以根据原有生产环境依赖的数据源,以及改动之后的即将上线的业务代码,部署第二测试环境;其中,服务代码与业务代码为不同版本的代码,即第一测试环境和第二测试环境是依赖数据源的数据内容保持一致,但具有不同版本的代码的两个不同的测试环境。
需要说明的是,第一测试环境和第二测试环境依赖的数据源版本、配置是保持一致的,且两个测试环境中系统依赖的基本原始数据也是保持一致的;第一测试环境和第二测试环境需要进行数据隔离,即两个测试环境分别具有独立的数据库,两者之间互不影响,且两者数据库与真实生产环境的数据库是隔离开来的,不会对真实用户的数据进行篡改;第一测试环境和第二测试环境的应用服务以及数据源,可针对Diff系统正常进行访问,且保持网络请求的低时延。
本发明实施例提供了一种接口测试方法,如图1所示,其示出了本发明一种接口测试方法实施例一的步骤流程图,具体可以包括如下步骤:
步骤101,获取各个待测试接口以及与所述待测试接口对应的请求参数;
在本发明的一种实施例中,对某接口进行Diff测试,可以获取用于待测试的各个待测试接口,以及与待测试接口对应的调用请求参数,在预先部署的具有不同版本代码的第一测试环境和第二测试环境中,根据与待测试接口对应的调用请求参数,对待测试接口进行调用,以便对待测试接口进行测试操作。
在实际应用中,获取的各个待测试接口可以是在针对一个项目进行底层框架、构架重构,或者重大项目的逻辑变更时,保留的一部分逻辑不作任何更改的HTTP/HTTPS(即超文本协议)接口;与待测试接口对应的请求参数可以来自真实生产环境的真实数据,且与真实生产环境的请求保持一致;获取与待测试接口对应的请求参数的方法可以通过生产环境反向代理服务器(比如:Nginx)获取待测试接口的访问日志,包括访问Headers、URI(Uniform Resource Identifier,统一资源标识符)、RequestBody等全量访问信息,以备流量回放使用。
步骤102,在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
在本发明的一种实施例中,分别在部署的两个不同的测试环境中对待测试接口进行Diff测试,此时可以分别得到针对同一待测试接口根据同一请求参数返回的返回值,对返回值进行校验,以便生成待测试接口的返回值校验结果。
在实际应用中,可以利用TestNG测试框架(该测试框架为一套利用注释来强化测试功能的一个测试框架)对待测试接口运行测试,由于测试用例集数据比较大且每个测试用例都是独立的,即每个待测试接口对应于一个测试用例,可以启用TestNG测试框架的并行测试,对多个待测试接口在同一时间被同时执行测试;对于某个待测试接口的Diff测试,在第一测试环境中,根据请求参数对某个待测试接口进行调用,接收第一测试环境调用某个待测试接口返回的返回值;在第二测试环境中,根据同一请求参数对同一待测试接口进行调用,接收第二测试环境调用同一待测试接口返回的返回值。
步骤103,当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;
在本发明的一种实施例中,在第一测试环境和第二测试环境对同一待测试接口按照同一调用请求进行调用,并对返回的返回值进行校验后,若其返回值校验结果为一致时,可以获取在第一测试环境中针对待测试接口的第一返回信息,以及在第二环境中针对待测试接口的第二返回信息。
在实际应用中,在利用并行测试根据请求参数在第一测试环境和第二测试环境同时对部分待测试接口进行测试时,由于接口在运行过程基本会涉及到对MySQL数据源的操作,可以获取待测试接口在运行过程中根据请求参数产生的SQL语句(指的是一种数据库查询和程序设计语言),即获取待测试接口在第一测试环境中根据请求参数产生的SQL语句,即第一返回信息,以及待测试接口在第二测试环境中根据同一请求参数产生的SQL语句,即第二返回信息。
步骤104,对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果。
在本发明的一种实施例中,对某待测试接口进行Diff测试,将获取到的待测试接口和与其对应的调用参数,分别在部署的两个不同的测试环境中进行Diff测试,并分别得到第一测试环境和第二测试环境根据请求参数调用待测试接口返回的返回值;对返回值进行校验后,可以分别获取第一测试环境中的第一返回信息,以及第二测试环境中的第二返回值信息,以便对第一返回信息和第二返回信息进行对比操作,根据对比结果生成待测试接口的测试结果,完成对待测试接口的Diff测试。
本发明实施例中,通过部署具有不同版本代码且同等的两个测试环境,将同一待测试接口分别在两个不同的测试环境中,根据同一请求参数进行测试操作,在比较待测试接口在两个不同测试环境中的返回值后,还可以获取待测试接口在两个不同测试环境中的返回信息,并比较两个测试环境的返回信息,根据其比较结果得到待测试接口的测试结果。无论待测试接口为读接口还是写接口,可以通过比较在不同测试环境中的返回信息,对待测试接口进行数据库日志层面上的对比,对待测试接口的内部逻辑方面提供细节上的校验,提高对接口测试正确性的保证度。
本发明实施例提供了一种接口测试方法,如图2所示,其示出了本发明一种接口测试方法实施例二的步骤流程图,具体可以包括如下步骤:
在本发明实施例中,部署不同版本代码的第一测试环境和第二测试环境,部署的第一测试环境可以具有与真实生产环境相同版本的代码,部署的第二测试环境可以具有较真实生产环境的代码更改之后的新版本的代码,以便确定待测试接口在该具有新版本的代码的测试环境的返回值,确定待测试接口在该具有新版本的代码的测试环境的返回值一致,以及确定待测试接口在该具有新版本的代码的测试环境的返回信息,是否与在具有与真实环境相同版本的代码的测试环境的返回信息一致,完成对待测试接口的Diff测试。
步骤201,获取待测试接口,以及与待测试接口对应的请求参数;
在本发明的一种实施例中,在部署不同版本的两个测试环境之后,可以获取在底层框架、构架重建,或者重大项目的逻辑变更时,保留的一部分不作任何改变的HTTP/HTTPS且为读功能的接口,即获取部分待测试接口;由于手工准备的测试用例数据较少,不能覆盖全部的使用场景,可以使用真实生产环境的真实流量对部分待测试接口进行Diff测试,即通过线上日志流量回放的方式对部分待测试接口进行Diff测试。
在实际应用中,可以把用户访问系统时造成的数据传输定义为流量,而线上日志流量回放方式指的是当用户在对系统进行访问时,将用户对系统进行流进和流出的数据进行复制,可以将复制下来的流进和流出的数据,即复制下来的流量,按照接收时间的顺序,将它们一条一条地传输到待测试的服务中,让测试服务根据传输的流量进行响应,相当于在利用真实用户进行测试。
其中,该复制下来的流量可以保存在真实生产环境的日志收集器中,可以利用真实生产环境的日志收集器,通过Python(指一种计算机程序设计语言)解析脚本过滤出部分待测试接口的Nginx(即反向代理服务器)接入层的请求参数,以便在部署的不同版本的两个测试环境中,根据获取到的待测试接口对应的请求参数,对待测试接口进行Diff测试。获取的请求参数尽量选择最新一段时间的样本数据,且将获取到的样本数据解析成特定格式,并使其作为下游接口Diff的输入。
步骤202,在第一测试环境和第二测试环境中,根据请求参数得到针对待测试接口返回值校验的校验结果;
在本发明的一种实施例中,在获取部分不作任何逻辑变更的待测试接口之后,对该不作任何逻辑变更的部分待测试接口进行Diff测试,即在第一测试环境中采用对应的请求参数对待测试接口进行调用,得到返回值,且在第二测试环境中采用同一请求参数对同一待测试接口进行调用,得到返回值,以便比较两个返回值是否一致,生成返回值的校验结果,以及根据其校验结果获取相应的第一返回信息和第二返回信息。
在实际应用中,可以启用TestNG测试框架的并行测试,根据对应的请求参数对部分待测试接口进行Diff测试,即利用并行测试根据请求参数在第一测试环境和第二测试环境同时对部分待测试接口进行测试。每个待测试接口对应于一个测试用例,可以启用TestNG测试框架的并行测试,对多个待测试接口在同一时间被同时执行测试。
步骤203,当返回值校验的校验结果为一致时,获取针对待测试接口的第一返回信息以及第二返回信息;
在本发明的一种实施例中,在获取部分不作任何逻辑变更的待测试接口之后,对该不作任何逻辑变更的部分待测试接口进行Diff测试,在一种情况下,当返回值校验的结果为一致时,表示该待测试接口在第一测试环境和第二测试环境中的逻辑/行为是一致的,但无法确认待测试接口在内部处理逻辑细节上是否正确,此时可以获取针对待测试接口的第一返回信息以及第二返回信息。
在另一种情况下,当返回值校验的校验结果为不一致时,表示该待测试接口在第一测试环境和第二测试环境中的逻辑/行为是不一致的,此时可以不需要对待测试接口继续进行Diff测试,即无需对待测试接口进行内部处理逻辑细节上的校验,直接退出针对待测试结果的测试操作,并生成针对待测试接口的测试结果为不通过。
在实际应用中,在利用并行测试根据请求参数在第一测试环境和第二测试环境同时对部分待测试接口进行测试时,由于接口在运行过程基本会涉及到对MySQL数据源的操作,可以获取待测试接口在运行过程中根据请求参数产生的SQL语句(指的是一种数据库查询和程序设计语言),即获取待测试接口在第一测试环境中根据请求参数产生的SQL语句,即第一返回信息,以及待测试接口在第二测试环境中根据同一请求参数产生的SQL语句,即第二返回信息。
其中,获取待测试接口运行过程中的SQL语句的方法,可以是通过修改修改MySQL数据源的配置项,开启general_log(即查询日志),将SQL操作语句记录到表中,具体包括操作时间、操作类型、具体的SQL语句等信息,以便获取接口在两个测试环境中执行期间涉及的SQL语句和比较获取到的SQL语句,在内部处理逻辑上校验接口的一致性;且由于general_log的记录量较大,可以适时删减日志表中过期的数据。需要说明的是,获取待测试接口运行过程中的SQL语句的方法还可以是通过解析MySQL的二进制binlog文件(指的是一种二进制文件),恢复待测试接口在运行过程中的SQL语句,本发明实施例对此并不加以限制。
步骤204,比较第一返回信息和第二返回信息,得到针对待测试接口的测试结果。
在本发明的一种实施例中,在对第一返回值和第二返回值进行比较,根据比较结果从第一测试环境的查询日志中得到第一返回信息,和从第二测试环境的查询日志中得到第二返回信息之后,可以对第一返回值信息和第二返回信息进行比较,以便根据其比较结果确定待测试接口在更改之后代码的环境中实现实现的逻辑功能或内部处理是否一致,并生成针对该待测试接口的测试结果,完成对待测试接口的Diff测试。
在本发明的一种实施例中,步骤202可以包括如下子步骤:
子步骤S11,在所述第一测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第一返回值;
在本发明的一种实施例中,在获取部分不作任何逻辑变更的待测试接口和与该部分待测试接口对应的请求参数,同时启用TestNG测试框架的并行测试和开启general_log之后,对部分待测试接口进行Diff测试。对于某个待测试接口的Diff测试,可以根据某个请求参数,在第一测试环境中调用与请求参数对应的某个待测试接口,并接收调用待测试接口返回的返回值,以便继续完成对待测试接口的Diff测试。
子步骤S12,在所述第二测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第二返回值;
在本发明的一种实施例中,在获取部分不作任何逻辑变更的待测试接口和与该部分待测试接口对应的请求参数,同时启用TestNG测试框架的并行测试和开启general_log之后,对部分待测试接口进行Diff测试。对于某个待测试接口的Diff测试,可以根据与第一测试环境中相同的请求参数,在第二测试环境中调用与请求参数对应的与第一测试环境中相同的待测试接口,并接收调用该待测试接口返回的返回值信息,以便根据该返回值信息完成对待测试接口的Diff测试。
子步骤S13,对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果。
在本发明的一种实施例中,对于某个待测试接口的Diff测试,针对同一请求参数在不同版本的测试环境中对同一待测试接口进行调用,在第一测试环境中接收调用后返回的第一返回值,在第二测试环境中接收调用后返回的第二返回值,可以对比接收到的第一返回值和第二返回值,以便根据其对比结果获取第一返回信息和第二返回信息,即根据对比结果获取两个不同版本的测试环境,在调用待测试接口时运行的SQL语句,继续对待测接口进行测试。
其中,第一返回信息指的是在第一测试环境调用待测试接口时运行的SQL语句,其运行的SQL语句可以在第一测试环境的查询日志中获取;第二返回信息指的是在第二测试环境调用待测试接口时运行的SQL语句,其运行的SQL语句可以在第二测试环境的查询日志中获取。
在本发明的一种实施例中,所述待测试接口可以包括读接口;子步骤S13可以包括如下子步骤:
子步骤S131,获取所述第一返回值的第一关键字,以及获取所述第二返回值的第二关键字;
在本发明的一种实施例中,若在第一测试环境和第二测试环境中根据请求参数调用的某个待测试接口为读接口,即分别在第一测试环境和第二测试环境中对数据读取接口进行流量回放,数据读取接口可以根据流量回放所采用的请求参数,分别返回第一返回值和第二返回值;其中,由于待测试接口为读接口,返回的第一返回值和第二返回值可以包括调用该读接口需要的所有信息,此时可以获取返回值的所有信息中的关键字内容,即分别在第一返回值中获取第一关键字,以及在第二返回值中获取第二关键字。
子步骤S132,对所述第一关键字和所述第二关键字进行校验,得到针对所述读接口的校验结果。
在本发明的一种实施例中,在第一测试环境中采用对应的请求参数对待测试接口进行调用,得到第一返回值,且在第二测试环境中采用同一请求参数对同一待测试接口进行调用,得到第二返回值之后,可以对第一返回值和第二返回值返回的关键字内容进行JSON-Scheme(主要用于实例验证)匹配,即比较两个返回值是否一致,以确定在不同版本代码的测试环境中该数据读取接口的逻辑/行为是否正确,以便生成返回值的校验结果,以及根据其校验结果获取相应的第一返回信息和第二返回信息。
在实际应用中,对第一返回值和第二返回值返回的关键字内容进行JSON-Scheme匹配,在一种情况下,当第一返回值和第二返回值返回的关键字内容一致时,表示该数据读取接口在第一测试环境和第二测试环境中的逻辑/行为是一致的,但无法确认该写接口在内部处理逻辑细节上是否正确,需要继续对该数据读取接口进行测试。
在另一种情况下,当第一返回值和第二返回值返回的关键字内容不一致时,表示该数据读取接口在第一测试环境和第二测试环境中的逻辑/行为是不一致的,直接退出对于该数据读取接口的测试操作,无需继续对该数据读取接口进行测试,并生成针对该数据读取接口的测试结果为不通过,自动记录针对该请求参数调用的该读接口的这一个测试用例的请求参数、接口返回值以及测试结果。
在本发明的一种实施例中,所述待测试接口还可以包括写接口;子步骤S13还可以包括如下子步骤:
子步骤S133,对所述第一返回值和所述第二返回值进行校验,得到针对所述写接口的校验结果。
在本发明的一种实施例中,若在第一测试环境和第二测试环境中根据请求参数调用的某个待测试接口为写接口,即分别在第一测试环境和第二测试环境中对数据写入接口进行流量回放,数据写入接口可以根据流量回放所采用的请求参数,分别返回第一返回值和第二返回值;其中,由于待测试接口为写接口,返回的第一返回值和第二返回值可以包括调用该写接口返回的成功或失败等信息,对第一返回值和第二返回值返回的内容进行简单对比,得到针对该数据写入接口的检验结果。
在实际应用中,对第一返回值和第二返回值返回的内容进行简单对比,在一种情况下,当第一返回值和第二返回值返回的内容一致时,还不能确认该数据写入接口在第一测试环境和第二测试环境中的逻辑/行为是否一致,需要继续对该数据写入接口进行测试。
在另一种情况下,当第一返回值和第二返回值返回的内容不一致时,直接退出对于该数据写入接口的测试操作,无需继续对该数据写入接口进行测试,并生成针对该数据写入接口的测试结果为不通过,自动记录针对该请求参数调用的该写接口的这一例测试用例的请求参数、接口返回值以及执行结果。
需要说明的是,由于数据写入接口根据调用请求参数返回值所返回的内容为调用成功或失败等信息,从第一返回值和第二返回值的信息上无法确认写接口在第一测试环境和第二测试环境中的逻辑/行为是否正确,也无法确认该写接口在内部处理逻辑细节上是否正确。
在本发明的一种实施例中,所述第一返回信息可以包括所述第一测试环境的数据库日志中的第一执行语句集;所述第二返回信息可以包括所述第二测试环境的数据库日志中的第二执行语句集;
在获取部分不作任何逻辑变更的待测试接口和与该部分待测试接口对应的请求参数,同时启用TestNG测试框架的并行测试和开启general_log之后,对部分待测试接口进行Diff测试。对于某个待测试接口的Diff测试,在两个不同版本的测试环境根据同一请求参数对同一待测试接口进行调用,接收返回的第一返回值和第二返回值,当第一返回值的关键字与第二返回值的关键字一致,或,第一返回值与第二返回值一致时,可以获取某个待测试接口在第一测试环境中的第一返回信息,该第一返回信息包括第一执行语句集,即获取根据某个请求参数调用某个待测试接口的过程中涉及到的SQL语句。
在本发明的一种实施例中,对于某个待测试接口的Diff测试,由于在对待测试接口进行Diff测试之前开启了general_log,该general_log可以记录接口在运行过程中对MySQL数据源的操作,获取SQL语句的方法可以通过第一测试环境的MySQL数据库的查询日志,根据待测试接口运行的start-time和end-time从general_log表中选择对应的SQL语句,即选择根据某个请求参数调用某个待测试接口过程中所产生的SQL语句。
步骤204可以包括如下子步骤:
子步骤S21,对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作,得到第一对比结果;
在本发明的一种实施例中,对于某个待测试接口的Diff测试,待测试接口无论是数据读取接口还是数据写入接口,在获取到某个待测试接口在第一测试环境的数据库日志中的第一执行语句集和在第二测试环境的数据库日志中的第二执行语句集之后,可以直接对比第一执行语句集和第二执行语句集,即从执行语句的字符串层面上进行对比,判断待测试接口在两个不同版本的测试环境中执行语句是否一致,以便得到第一对比结果,进一步确认待测试接口在内部处理逻辑细节是否正确,继续完后对待检测接口的Diff测试。
子步骤S22,从所述第一执行语句集中获取第一预设字段,并从所述第二执行语句集中获取第二预设字段;
在本发明的一种实施例中,在获取到某个待测试接口在第一测试环境的数据库日志中的第一执行语句集,和在第二测试环境的数据库日志中的第二执行语句集之后,可以对比第一执行语句集和第二执行语句集,由于第一执行语句集和第二执行语句集为两个集合,可以提取两个集合中SQL语句的关键字列表,即从第一执行语句集中获取第一预设字段,即第一关键字列表,从第二执行语句集中获取第二预设字段,即第二关键字列表,以便在执行语句的关键字层面上进行对比,进一步确认待测试接口在内部处理逻辑细节是否正确,继续完成对待测试接口的Diff测试。
子步骤S23,对所述第一预设字段和所述第二预设字段按照字段层面进行对比操作,得到第二对比结果;
在本发明的一种实施例中,在提取第一执行语句集的第一关键字列表和第二执行语句集的第二关键字列表之后,可以从执行语句的关键字层面上进行进一步地对比,判断待测试接口在两个不同版本的测试环境中执行语句的关键字列表是否一致,以便得到第二对比结果,进一步确认待测试接口在内部处理逻辑细节是否正确,继续完成对待检测接口的Diff测试。
子步骤S24,根据所述第一对比结果和所述第二对比结果,生成针对所述待测试接口的测试结果。
在本发明的一种实施例中,可以获取对于某个待测试接口在两个测试环境中的执行语句集,根据在字符串层面上执行语句集的对比结果,以及在关键字层面上执行语句集的对比结果,生成针对待测试接口的测试结果,以便完成对待测试接口的Diff测试。
在本发明的一种实施例中,子步骤S24可以包括如下子步骤:
子步骤S241,当所述第一对比结果和所述第二对比结果均为一致时,生成针对所述待测试接口的测试结果为通过;
在本发明的一种实施例中,对于某个待测试接口的Diff测试,可以根据其在两个不同版本的测试环境中所产生的执行语句的对比结果,生成针对某个待测试接口的测试结果。当执行语句集在字符串层面的对比结果为一致,且该执行语句集在关键字层面的对比结果也为一致时,生成针对该待测试接口的测试结果为通过,自动记录针对该请求参数调用的该待测试接口的这一个测试用例的请求参数、接口返回值,请求使用的SQL以及测试结果。
子步骤S242,当所述第二对比结果为不一致时,生成针对所述待测试接口的测试结果为不通过;
在本发明的一种实施例中,当执行语句集在字符串层面的对比结果为不一致时,无论该执行语句集在关键字层面的对比结果是否一致,生成针对该待测试接口的测试结果为不通过,自动记录针对该请求参数调用的该待测试接口的这一个测试用例的请求参数、接口返回值,请求使用的SQL以及测试结果。
子步骤S243,当所述第一对比结果为不一致且所述第二对比结果为一致时,生成针对所述待测试接口的测试结果为需进行二次校验。
在本发明的一种实施例中,当执行语句集在字符串层面的对比结果为不一致,且该执行语句集在关键字层面的对比结果为一致时,生成针对该待测试接口的测试结果为需要进行二次校验;由于执行语句集仅在字符串层面上不一致,但在关键字层面上是一致的,进行的二次校验需要人工来进行,根据人工进行二次核对后的结果,来生成该待测试接口的测试结果,此时自动记录针对该请求参数调用的该待测试接口的这一个测试用例的请求参数、接口返回值,请求使用的SQL以及测试结果。
本发明实施例中,通过部署具有不同版本代码且同等的两个测试环境,将同一待测试接口分别在两个不同的测试环境中,根据同一请求参数进行测试操作,在比较待测试接口在两个不同测试环境中的返回值后,还可以获取待测试接口在两个不同测试环境中的返回信息,并比较两个测试环境的返回信息,根据其比较结果得到待测试接口的测试结果。无论待测试接口为读接口还是写接口,可以通过比较在不同测试环境中的返回信息,对待测试接口进行数据库日志层面上的对比,对待测试接口的内部逻辑方面提供细节上的校验,提高对接口测试正确性的保证度。
本发明实施例提供了一种接口测试方法,如图3所示,其示出了本发明的一种接口测试方法的处理流程图,具体处理流程可以包括:
1)进行对接口测试的准备工作:首先需要部署新老版本的环境,两个版本的环境要做到数据隔离、互不影响,其中两个环境的数据源的数据内容要保持一致,以避免数据不一致带来的干扰;然后由于需要在新老版本的环境中对待测试的接口进行线上日志流量回放,此时需要获取真实生产环境的日志回放文件,该日志回放文件可以利用真实生产环境的日志收集器进行收集;由于需要通过对比MySQL的general-log中SQL语句的方式,对写接口通过对比的方式进行回归,以提高测试验证的完备性,在开启general-log之后可以通过获取新老环境的MySQL日志地址来获取SQL语句。
2)对接口运行测试:利用TestNG测试框架执行测试用例的运行,由于测试用例集数据比较大,启用TestNG的并行测试。可以利用JSON-Schema首先自动比较在新老环境中接口根据同一请求的返回值,如果返回值不一致,直接退出;如果返回值一致,则进一步根据接口运行的start-time和end-time,从MySQL的general-log表中选择出对应的SQL语句,并通过SQL一致性比较器按照SQL的关键字层面和字符串层面逐一对SQL语句进行对比。
在本发明的一种实施例中,如图4所示,其示出了本发明的一种SQL一致性比较器的结构示意图,SQL一致性比较器具体可以包括:
根据接口运行的start-time和end-time,从MySQL的general-log表中选择出对应的SQL语句,例如在新老环境的日志地址中按照运行时间选择SQL语句A以及SQL语句B,可以通过MySQL关键字提取器提取SQL语句A的关键字列表以及SQL语句B的关键字列表,按照SQL的关键字层面逐一对SQL语句,得到对比结果1;并可以对SQL语句A以及SQL语句B进行直接比较,按SQL的照字符串层面逐一对SQL语句进行对比,得到对比结果2。最后,根据对比结果1跟对比结果2,得到待测试接口的测试结果。
3)测试结果记录与展示:根据某个请求对某个待测试接口进行接口Diff测试,当每个测试用例执行完毕后,可以自动记录下用例的执行结果、接口返回值、SQL语句,并通过自定义报告格式,能方便的看到Case(即测试用例)运行总数、Pass的Case总数、Fail的Case总数以及Fail的详情。
本发明实施例通过部署具有不同版本代码的新老测试环境,将同一待测试接口分别在新老测试环境中,根据同一请求参数进行测试操作,并获取待测试接口在新老测试环境中的返回信息,并比较新老测试环境在执行过程中的SQL语句,根据其比较结果得到待测试接口的测试结果。无论待测试接口为读接口还是写接口,可以通过比较在不同测试环境中调用接口时所涉及到的执行语句集,在字符串层面和关键字层面对执行语句集进行对比,对待测试接口的内部逻辑方面提供了细节上的校验,提高了对接口测试正确性的保证度。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
本发明还提供了一种接口测试装置,如图5所示,其示出了本发明的一种接口测试装置实施例的结构示意图,本实施例的装置可以包括:
测试接口获取模块501,用于获取各个待测试接口;
请求参数获取模块502,用于获取与所述待测试接口对应的请求参数;
返回值校验模块503,用于在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
返回信息获取模块504,用于当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;
测试结果生成模块505,用于对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果。
在本发明的一种实施例中,返回值校验模块503可以包括如下子模块:
第一返回值获取子模块,用于在所述第一测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第一返回值;
第二返回值获取子模块,用于在所述第二测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第二返回值;
校验结果生成子模块,用于对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果。
在本发明的一种实施例中,所述待测试接口包括读接口;校验结果生成子模块可以包括如下单元:
关键字获取单元,用于获取所述第一返回值的第一关键字,以及获取所述第二返回值的第二关键字;
第一校验结果生成单元,用于对所述第一关键字和所述关键字进行校验,得到针对所述读接口的校验结果。
在本发明的一种实施例中,所述待测试接口包括写接口;校验结果生成子模块可以包括如下单元:
第二校验结果生成单元,用于对所述第一返回值和所述第二返回值进行校验,得到针对所述写接口的校验结果。
在本发明的一种实施例中,所述第一返回信息包括所述第一测试环境的数据库日志中的第一执行语句集;所述第二返回信息包括所述第二测试环境的数据库日志中的第二执行语句集;
测试结果生成模块505可以包括如下子模块:
第一对比子模块,用于对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作,得到第一对比结果;
预设字段获取子模块,用于从所述第一执行语句集中获取第一预设字段,并从所述第二执行语句集中获取第二预设字段;
第二对比子模块,用于对所述第一预设字段和所述第二预设字段按照字段层面进行对比操作,得到第二对比结果;
测试结果生成子模块,用于根据所述第一对比结果和所述第二对比结果,生成针对所述待测试接口的测试结果。
在本发明的一种实施例中,测试结果生成子模块可以包括如下单元:
第一测试结果生成单元,用于当所述第一对比结果和所述第二对比结果均为一致时,生成针对所述待测试接口的测试结果为通过;
第二测试结果生成单元,用于当所述第二对比结果为不一致时,生成针对所述待测试接口的测试结果为不通过;
第三测试结果生成单元,用于当所述第一对比结果为不一致且所述第二对比结果为一致时,生成针对所述待测试接口的测试结果为需进行二次校验。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,本发明提出的一种接口测试方法及装置,基于HTTP/HTTPS协议的流量回放验证读接口的响应Diff,通过流量回放服务端进行读、写MySQL产生的general_log验证操作数据库的Diff。基于发明专利的技术特点和使用场景,使用了HTTP/HTTPS协议接口、接口对应服务端在业务逻辑处理中使用数据库为MySQL的IT/通讯行业的公司,均可以使用此专利;且可以使用本发明提出的接口测试方法,对不了解的系统进行更新后的验证,比如交接中的项目,还可以将测试由全手动,升级到自动或者半自动的执行方式,提高产出效率;对于复杂写接口的验证,提出了更创新更高效的方式,特别适用于系统迁移,以及底层模块更新重构的情况。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
获取各个待测试接口以及与所述待测试接口对应的请求参数;
在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的接口测试方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的接口测试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种接口测试方法,其特征在于,所述方法包括:
获取各个待测试接口以及与所述待测试接口对应的请求参数;所述请求参数为真实生产环境的真实数据;
在预先部署的第一测试环境以及与所述第一测试环境具有不同版本代码且同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;所述返回信息用于指示所述待测试接口基于所述请求参数产生的内部处理逻辑,所述第一返回信息和所述第二返回信息分别包括所述第一测试环境的数据库日志中的第一执行语句集和所述第二测试环境的数据库日志中的第二执行语句集;
对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果;所述测试结果包括第一对比结果和第二对比结果,其中,所述第一对比结果基于对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作得到,所述第二对比结果基于从所述第一执行语句集中获取的第一预设字段和从所述第二执行语句集中获取的第二预设字段按照字段层面进行对比操作得到。
2.根据权利要求1所述的方法,其特征在于,所述根据对比结果得到测试结果,包括:
当所述第一对比结果和所述第二对比结果均为一致时,生成针对所述待测试接口的测试结果为通过;
当所述第二对比结果为不一致时,生成针对所述待测试接口的测试结果为不通过;
当所述第一对比结果为不一致且所述第二对比结果为一致时,生成针对所述待测试接口的测试结果为需进行二次校验。
3.根据权利要求1所述的方法,其特征在于,所述在预先部署的第一测试环境以及与所述第一测试环境同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果,包括:
在所述第一测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第一返回值;
在所述第二测试环境中,根据所述请求参数,对所述待测试接口进行测试操作,得到第二返回值;
对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果。
4.根据权利要求3所述的方法,其特征在于,所述待测试接口包括读接口;所述对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果,包括:
获取所述第一返回值的第一关键字,以及获取所述第二返回值的第二关键字;
对所述第一关键字和所述关键字进行校验,得到针对所述读接口的校验结果。
5.根据所述权利要求3所述的方法,其特征在于,所述待测试接口包括写接口;所述对所述第一返回值和所述第二返回值进行校验,得到针对所述待测试接口的校验结果,包括:
对所述第一返回值和所述第二返回值进行校验,得到针对所述写接口的校验结果。
6.一种接口测试装置,其特征在于,所述装置包括:
测试接口获取模块,用于获取各个待测试接口;
请求参数获取模块,用于获取与所述待测试接口对应的请求参数;所述请求参数为真实生产环境的真实数据;
返回值校验模块,用于在预先部署的第一测试环境以及与所述第一测试环境具有不同版本代码且同等的第二测试环境中,根据所述请求参数对所述待测试接口进行返回值校验,得到校验结果;
返回信息获取模块,用于当所述校验结果为一致时,获取在所述第一测试环境中针对所述待测试接口的第一返回信息,以及在所述第二测试环境中针对所述待测试接口的第二返回信息;所述返回信息用于指示所述待测试接口基于所述请求参数产生的内部处理逻辑,所述第一返回信息和所述第二返回信息分别包括所述第一测试环境的数据库日志中的第一执行语句集和所述第二测试环境的数据库日志中的第二执行语句集;
测试结果生成模块,用于对所述第一返回信息和所述第二返回信息进行对比操作,并根据对比结果得到测试结果;所述测试结果包括第一对比结果和第二对比结果,其中,所述第一对比结果基于对所述第一执行语句集和所述第二执行语句集按照字符串层面进行对比操作得到,所述第二对比结果基于从所述第一执行语句集中获取的第一预设字段和从所述第二执行语句集中获取的第二预设字段按照字段层面进行对比操作得到。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的接口测试方法步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的接口测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232228.9A CN111552632B (zh) | 2020-03-27 | 2020-03-27 | 一种接口测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232228.9A CN111552632B (zh) | 2020-03-27 | 2020-03-27 | 一种接口测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111552632A CN111552632A (zh) | 2020-08-18 |
CN111552632B true CN111552632B (zh) | 2024-03-19 |
Family
ID=72002362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232228.9A Active CN111552632B (zh) | 2020-03-27 | 2020-03-27 | 一种接口测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552632B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214395A (zh) * | 2020-09-02 | 2021-01-12 | 浙江大搜车融资租赁有限公司 | 基于流量数据的接口测试方法、电子装置及存储介质 |
CN112363944A (zh) * | 2020-11-20 | 2021-02-12 | 上海悦易网络信息技术有限公司 | 一种用于多环境接口返回值对比的方法及设备 |
CN115174495B (zh) * | 2022-06-20 | 2023-06-16 | 平安银行股份有限公司 | 基于并行路由的资源分配方法及相关设备 |
CN115774990A (zh) * | 2023-02-10 | 2023-03-10 | 成都萌想科技有限责任公司 | 基于配置文件的RESTfulAPI对比方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701408A (en) * | 1995-07-10 | 1997-12-23 | International Business Machines Corporation | Method for testing computer operating or application programming interfaces |
CN104360920A (zh) * | 2014-12-02 | 2015-02-18 | 微梦创科网络科技(中国)有限公司 | 一种接口自动化测试方法及装置 |
CN108694104A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 一种接口功能对比测试方法、装置、电子设备和储存介质 |
CN110750434A (zh) * | 2018-07-23 | 2020-02-04 | 北京奇虎科技有限公司 | 接口测试方法、装置、电子设备和计算机可读存储介质 |
-
2020
- 2020-03-27 CN CN202010232228.9A patent/CN111552632B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701408A (en) * | 1995-07-10 | 1997-12-23 | International Business Machines Corporation | Method for testing computer operating or application programming interfaces |
CN104360920A (zh) * | 2014-12-02 | 2015-02-18 | 微梦创科网络科技(中国)有限公司 | 一种接口自动化测试方法及装置 |
CN108694104A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 一种接口功能对比测试方法、装置、电子设备和储存介质 |
CN110750434A (zh) * | 2018-07-23 | 2020-02-04 | 北京奇虎科技有限公司 | 接口测试方法、装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111552632A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552632B (zh) | 一种接口测试方法及装置 | |
CN109062809B (zh) | 一种线上测试用例生成方法、装置及电子设备 | |
CN108459962B (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
CN109062794B (zh) | 一种软件测评结果的确定方法、装置及电子设备 | |
CN112100052B (zh) | 一种接口测试场景的回放方法及装置 | |
CN112052172B (zh) | 第三方通道的快速测试方法、装置和电子设备 | |
CN110879781B (zh) | 程序调试方法、装置、电子设备及计算机可读存储介质 | |
US20190079854A1 (en) | Systems and methods for executing tests | |
CN112540924A (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN107451058B (zh) | 一种软件开发方法和装置 | |
CN109684204A (zh) | 一种http接口自动测试方法 | |
CN111367807A (zh) | 一种日志分析的方法、系统、设备及介质 | |
CN114528201A (zh) | 异常代码定位方法、装置、设备及介质 | |
CN113505059A (zh) | 页面监控方法、装置、计算机设备及存储介质 | |
CN109376285B (zh) | 基于json格式的数据排序验证方法、电子设备及介质 | |
CN115396501B (zh) | 一种信息处理方法、装置、电子设备及可读存储介质 | |
CN116016270A (zh) | 一种交换机测试管理方法、装置、电子设备和存储介质 | |
CN105302731A (zh) | 网站架构升级测试系统和方法 | |
CN114500348B (zh) | 一种cdn网关测试方法及系统 | |
CN110442370B (zh) | 一种测试用例查询方法及装置 | |
CN114546749A (zh) | 一种芯片随机测试用例回归方法、装置、设备及可读介质 | |
CN107682224B (zh) | 一种网络web页面的测试方法及装置 | |
CN111444538A (zh) | 一种信息脱敏方法、装置、电子设备及存储介质 | |
CN111813665A (zh) | 一种基于python的大数据平台接口数据测试方法和系统 | |
CN110618943A (zh) | 安防服务测试方法、装置、电子设备及可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |