CN113468041A - 一种接口对比测试方法和装置 - Google Patents
一种接口对比测试方法和装置 Download PDFInfo
- Publication number
- CN113468041A CN113468041A CN202010237645.2A CN202010237645A CN113468041A CN 113468041 A CN113468041 A CN 113468041A CN 202010237645 A CN202010237645 A CN 202010237645A CN 113468041 A CN113468041 A CN 113468041A
- Authority
- CN
- China
- Prior art keywords
- interface
- return value
- comparison
- original
- request parameter
- 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
- 238000010998 test method Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012360 testing method Methods 0.000 claims abstract description 27
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 238000005516 engineering process Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 238000005538 encapsulation Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 239000003795 chemical substances by application Substances 0.000 description 45
- 238000007726 management method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 17
- 238000013500 data storage Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000007547 defect Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
技术领域
本发明涉及计算机技术领域,尤其涉及一种接口对比测试方法和装置。
背景技术
因技术和业务发展需要,业务系统需要不断的迭代更新。业务系统的迭代更新涉及到新旧系统的替换,由于旧系统的在线使用,常规的替换方法是开发新系统,且新系统的新接口需要适配旧系统的接口,对新接口进行测试,测试通过后再整体替换。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
测试过程无法覆盖所有测试用例,影响测试结果的准确性,导致新旧系统的替换风险较大;在测试过程中需要实时对比新旧接口的返回值,影响旧系统的性能;每新增一个接口对比,均需要修改旧系统的代码后进行上线。
发明内容
有鉴于此,本发明实施例提供一种接口对比测试方法和装置,在原始接口收到调用请求时,使用代理类拦截原始接口得到第一请求参数和第一返回值,之后基于第一请求参数组装调用对比接口所需的第二请求参数,并调用对比接口得到第二返回值,进而比较两个返回值的异同,能够覆盖所有要测试的原始接口,保证测试结果的准确性,降低新旧系统的替换风险。
为实现上述目的,根据本发明实施例的一个方面,提供了一种接口对比测试方法。
本发明实施例的一种接口对比测试方法,包括:当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值;其中,所述代理类是根据配置的接口拦截信息,生成的用于拦截所述原始接口的对象;根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值;将所述第一返回值和所述第二返回值进行对比,得到对比结果。
可选地,所述方法还包括:获取通过管理页面配置的所述接口拦截信息;根据所述接口拦截信息,生成用于拦截所述原始接口的代理类,包括:根据所述接口拦截信息,使用字节码技术动态生成用于拦截所述原始接口的代理类。
可选地,根据所述接口拦截信息,使用字节码技术动态生成用于拦截所述原始接口的代理类,包括:将所述接口拦截信息所包含的原始接口的接口名、实现所述原始接口的方法名和所述原始接口的返回值拼接成字符串;编译所述字符串生成所述代理类。
可选地,所述代理类采用面向切面编程或者侵入业务程序硬编码的方式拦截所述原始接口。
可选地,获取所述调用请求的第一请求参数和第一返回值的步骤之后,所述方法还包括:所述代理类使用第一工作线程把所述第一请求参数和所述第一返回值存放到临时队列;所述代理类使用第二工作线程读取所述临时队列的第一请求参数和第一返回值,调用消息中间件输出所述第一请求参数和所述第一返回值。
可选地,根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数的步骤之后,所述方法还包括:按照所述对比接口的接口协议所支持的传输方式的入参要求,进行协议封装。
可选地,将所述第一返回值和所述第二返回值进行对比的步骤之前,所述方法还包括:根据设定数据格式,对所述第一返回值进行格式转换;按照所述数据格式,对所述第二返回值进行格式转换;将所述第一返回值和所述第二返回值进行对比,包括:将格式转换后的所述第一返回值和所述第二返回值进行对比。
为实现上述目的,根据本发明实施例的另一方面,提供了一种接口对比测试装置。
本发明实施例的一种接口对比测试装置,包括:第一获取模块,用于当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值;其中,所述代理类是根据配置的接口拦截信息,生成的用于拦截所述原始接口的对象;第二获取模块,用于根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值;对比模块,用于将所述第一返回值和所述第二返回值进行对比,得到对比结果。
可选地,所述装置还包括:第三获取模块,用于获取通过管理页面配置的所述接口拦截信息;生成模块,用于根据所述接口拦截信息,使用字节码技术动态生成用于拦截所述原始接口的代理类。
可选地,所述生成模块,还用于将所述接口拦截信息所包含的原始接口的接口名、实现所述原始接口的方法名和所述原始接口的返回值拼接成字符串;编译所述字符串生成所述代理类。
可选地,所述代理类采用面向切面编程或者侵入业务程序硬编码的方式拦截所述原始接口。
可选地,所述装置还包括:异步输出模块,用于在获取所述调用请求的第一请求参数和第一返回值之后,所述代理类使用第一工作线程把所述第一请求参数和所述第一返回值存放到临时队列;所述代理类使用第二工作线程读取所述临时队列的第一请求参数和第一返回值,调用消息中间件输出所述第一请求参数和所述第一返回值。
可选地,所述装置还包括:协议封装模块,用于在根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数之后,按照所述对比接口的接口协议所支持的传输方式的入参要求,进行协议封装。
可选地,所述装置还包括:格式转换模块,用于在将所述第一返回值和所述第二返回值进行对比之前,根据设定数据格式,对所述第一返回值进行格式转换;以及按照所述数据格式,对所述第二返回值进行格式转换;所述对比模块,还用于:将格式转换后的所述第一返回值和所述第二返回值进行对比。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种接口对比测试方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种接口对比测试方法。
上述发明中的一个实施例具有如下优点或有益效果:在原始接口收到调用请求时,使用代理类拦截原始接口得到第一请求参数和第一返回值,之后基于第一请求参数组装调用对比接口所需的第二请求参数,并调用对比接口得到第二返回值,进而比较两个返回值的异同,能够覆盖所有要测试的原始接口,保证测试结果的准确性,降低新旧系统的替换风险;通过管理页面灵活配置接口拦截信息,能够通过一次改造实现多次接口比对;采用字节码技术动态生成代理类,增加开发的灵活性;使用AOP的方式拦截原始接口,大大降低对旧系统的代码侵入;通过异步输出第一请求参数和第一返回值,降低对旧系统运行性能的影响;通过封装协议保证与第二接口的成功通信;统一第一返回值和第二返回值的数据格式,保证两者对比结果的正确性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一实施例的接口对比测试方法的主要步骤的示意图;
图2是根据本发明再一实施例的接口对比测试方法的主要流程示意图;
图3是根据本发明再一实施例的接口对比测试方法的管理页面的示意图;
图4是根据本发明又一实施例的接口对比测试方法的系统架构示意图;
图5是根据本发明又一实施例的接口对比测试方法的主要流程示意图;
图6是根据本发明实施例的接口对比测试装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适用于来实现本发明实施例的电子设备的计算机装置的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明一实施例的接口对比测试方法的主要步骤的示意图。如图1所示,本发明实施例的接口对比测试方法,主要包括如下步骤:
步骤S101:当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值。其中,原始接口为旧系统所包含的接口;代理类是根据管理员在管理页面配置的接口拦截信息,生成的用于拦截原始接口的对象。实施例中,接口拦截信息包括要拦截的原始接口的接口名、实现原始接口的方法名和原始接口的返回值。
当获取到接口拦截信息后,为接口拦截信息包含的原始接口生成代理类。该代理类采用AOP(Aspect Oriented Programming,面向切面编程)方式或者侵入业务程序硬编码的方式拦截原始接口。如果原始接口接收到调用请求,则会触发代理类对该原始接口进行拦截,得到调用请求包含的第一请求参数和原始接口反馈的第一返回值。拦截原始接口后,继续旧系统的业务处理流程。
步骤S102:根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值。对比接口为用于替换原始接口的新系统所包含的接口。获取第一请求参数后,按照对比接口的参数格式进行组装得到第二请求参数。之后调用对比接口,并在调用对比接口的同时传递第二请求参数,即可获取对比接口反馈的第二返回值。
步骤S103:将所述第一返回值和所述第二返回值进行对比,得到对比结果。统一第一返回值和第二返回值的数据格式,将统一格式后的第一返回值和第二返回值进行对比,得到对比结果。如果对比不一致,则说明对比接口对应的代码存在缺陷,可以输出不一致的返回值。如果对比一致,则说明对比接口对应的代码不存在缺陷,后续可用于替换原始接口。
图2是根据本发明再一实施例的接口对比测试方法的主要流程示意图。如图2所示,本发明实施例的接口对比测试方法,由接口对比测试装置实现,主要包括如下步骤:
步骤S201:获取通过管理页面配置的接口拦截信息。管理员根据业务需求,在管理页面配置接口拦截信息,之后下发至接口对比测试装置。
图3是根据本发明再一实施例的接口对比测试方法的管理页面的示意图。如图3所示,接口拦截信息包括要拦截的原始接口的接口名、实现原始接口的方法名、原始接口的返回值、拦截方式、接口描述、对比标识和操作。
其中,操作包括至少一个启用按钮和至少一个停用按钮。启用按钮可用于下发配置好的接口拦截信息、下发接口对比启动指令等,停止按钮可用于停止下发接口拦截信息、下发接口对比停止指令等。这些按钮使得接口拦截信息的配置可以随启随停,灵活性好,便于管理。
步骤S202:根据接口拦截信息,使用字节码技术动态生成用于拦截原始接口的代理类。该步骤使用Javassist字节码技术动态生成代理类。具体地,将接口拦截信息所包含的原始接口的接口名、实现原始接口的方法名和原始接口的返回值拼接成字符串,编译字符串生成代理类。其中,Javassist是一个开源的分析、编辑和创建Java字节码的类库。拼接生成的字符串包含AOP拦截配置。
步骤S203:当原始接口接收到调用请求时,触发代理类拦截原始接口,获取调用请求的第一请求参数和第一返回值。原始接口接收到调用请求,比如TCP请求、HTTP请求,触发代理类采用AOP的AfterReturning进行拦截,以获取调用请求的第一请求参数和第一返回值,拦截后继续旧系统的业务处理流程。
AfterReturning是标记在代理代码的方法级别上的,在待测方法(即原始接口的方法)被代理后,一旦发生调用完成就会触发代理类的AfterReturning标注的处理方法进行拦截。
步骤S204:根据对比接口的参数格式组装第一请求参数,得到第二请求参数。第二请求参数为调用对比接口时所需的入参。对比接口的参数格式根据接口不同进行不同实现,比如包括3个字符串类型参数或者2个对象类型、1个数字类型参数。按照对比接口的参数格式组装第一请求参数,即可得到第二请求参数。
步骤S205:按照对比接口的接口协议所支持的传输方式的入参要求,进行协议封装。对比接口的接口协议可以是TCP协议、HTTP协议等。以HTTP协议为例,其所支持的传输方式包括Post、Get等,按照Post、Get方法的入参要求进行协议封装,以保证与对比接口之间能够成功通信。
步骤S206:调用对比接口,同时将第二请求参数传递至对比接口,获取第二返回值。调用对比接口,将第二请求参数传递至对比接口,获取对比接口返回的第二返回值。
步骤S207:将第一返回值和第二返回值分别转换为指定数据格式,对比格式转换后的第一返回值和第二返回值,输出对比结果。将第一返回值和第二返回值均转换为Json格式,或者XML格式。其中,Json的全称为JavaScript Object Notation,是一种轻量级的数据交换格式;XML的全称为Extensible Markup Language,可扩展标记语言。
实施例中,将第一返回值和第二返回值均转换为Json格式,转换后得到对应的第一字符串和第二字符串,且两个字符串均包括键名(Key)和对应的键值(Value)。使用对比API(Application Programming Interface,应用程序接口)比对两个字符串中相同Key对应Value,确定两个字符串是否相同。如果存在相同Key对应两个Value不同,则输出该Key和Value。其中,对比API是使用Java编写的Json对比工具类。
图4是根据本发明又一实施例的接口对比测试方法的系统架构示意图。如图4所示,本发明实施例的接口对比测试方法由改进后的旧系统和控制系统实现。旧系统在原有功能模块(即原始接口接入模块和原始接口业务处理模块)的基础上,增加接口拦截Agent(代理)和代理类;控制系统包括原始数据存储模块、对比调用模块、对比数据存储模块、对比结果输出模块和对比管理端。
图中虚线为新旧系统原有的处理流程。旧系统中原始接口接入模块在接收到调用请求后,转发至原始接口业务处理模块,由原始接口接入模块进行相应业务处理;新系统中对比接口接入模块在接收到调用请求后,转发至对比接口业务处理模块,由对比接口业务处理模块进行相应业务处理。
实线为本发明实施例的动态拦截流程。下面对涉及的各个模块的功能做出说明。
对比管理端,用于维护管理页面,包括配置接口拦截信息,通过启用按钮启用配置下发、启用接口对比,通过停用按钮停止配置下发、停止接口对比等。其中,管理页面的示意图如图3所示。
接口拦截Agent,集成到旧系统,对外提供rest或者http接口来接收对比管理端下发的接口拦截信息,之后根据接口拦截信息,使用字节码技术动态生成代理类。
代理类,当原始接口接收到调用请求(比如TCP请求)后,代理类采用AOP的AfterReturning方法进行拦截,获取调用请求中的第一请求参数和第一返回值,之后把第一请求参数和第一返回值拼装成Json格式后,调用消息中间件发送至原始数据存储模块。代理类拦截后继续旧系统的业务处理流程。
原始数据存储模块,接收Json格式的第一请求参数和第一返回值,转换为数据库格式后存储到数据库。其中,数据库可以采用MySQL、ES(ElasticSearch)或者HBase。
对比调用模块,在接收到对比管理端发送的接口对比启动指令后,从数据库获取原始接口数据(包括数据库格式的第一请求参数和第一返回值),按照对比接口的参数格式组装第一请求参数,得到第二请求参数;封装对比接口协议,调用对比接口,获取第二返回值,将第二请求参数和第二返回值发送至对比数据存储模块。
对比数据存储模块,接收第二请求参数和第二返回值,转换成数据库格式进行存储。
对比结果输出模块,读取第一返回值和第二返回值,使用对比API进行对比,输出对比报表并呈现。
图5是根据本发明又一实施例的接口对比测试方法的主要流程示意图。如图5所示,本发明实施例的接口对比测试方法,基于图4所示的系统架构,主要包括以下步骤:
步骤S501:对比管理端将管理员通过管理页面配置的接口拦截信息下发至接口拦截Agent。其中,管理页面的示意图如图3所示。接口拦截信息包括要拦截的原始接口的接口名、实现原始接口的方法名、原始接口的返回值、拦截方式、接口描述、对比标识和操作。
步骤S502:接口拦截Agent通过rest或者http接口接收接口拦截信息,根据接口拦截信息,使用字节码技术动态生成代理类。rest或者http接口的接口协议简单,可以跨平台调用。接口拦截Agent将接口名、方法名和返回值拼接成java源码字符串(含AOP拦截配置),然后通过Javassit技术动态编译生成代理类。如果原始接口发生调用会触发调用代理类实现拦截。
步骤S503:当原始接口接收到调用请求后,代理类采用AOP的AfterReturning方法拦截原始接口,获取调用请求中的第一请求参数和第一返回值。采用AOP的AfterReturning进行拦截,能够在原始接口的方法调用结束后,触发代理类进行拦截,对旧系统的代码侵入性较小。代理类拦截后继续旧系统的业务处理流程。
步骤S504:代理类把第一请求参数和第一返回值拼装成Json格式后,调用消息中间件发送至原始数据存储模块。消息中间件会将原始接口的接口标识、接口名、第一请求参数和第一返回值通过报文发送至原始数据存储模块。
在一优选的实施例中,代理类使用第一工作线程把第一请求参数和第一返回值存放到临时队列;之后使用第二工作线程读取临时队列的第一请求参数和第一返回值,在调用消息中间件输出第一请求参数和所述第一返回值。该实施例实现了数据异步输出,降低对旧系统运行性能的影响。
步骤S505:原始数据存储模块将Json格式的第一请求参数和第一返回值转换为数据库格式后,存储到数据库。
步骤S506:对比管理端向对比调用模块下发接口对比启动指令。
步骤S507:对比调用模块接收到接口对比启动指令后,从数据库获取第一请求参数和第一返回值,按照对比接口的参数格式组装第一请求参数,得到第二请求参数。组装的具体实现与步骤S204相同,此处不再赘述。
步骤S508:对比调用模块封装对比接口协议,调用对比接口,获取第二返回值,将第一至第二请求参数和第一至第二返回值发送至对比数据存储模块。协议封装的具体实现与步骤S205相同,此处不再赘述。下面举例说明。
假设旧系统有一个佣金比例值查询业务,现在上线了一个新系统,用于对旧系统进行重构。由于佣金比例设置逻辑比较复杂,业务逻辑是动态组合,所以通过测试很难覆盖全部测试用例,故采用本发明实施例的方式进行测试。
旧系统的原始接口传入的第一请求参数是订单编号、商品编号、类目编号,新系统的对比接口传入的第二请求参数是订单编号、订单类型、国家代码、商品编号、类目编号。第二请求参数包含的字段即对比接口的参数格式,经步骤S507处理后,即可将第一请求参数包装成第二请求参数。
之后,调用对比接口,获取第二返回值。新旧系统要求都返回佣金比例,旧系统返回佣金比例和业务类型(即第一返回值),新系统返回佣金比例和业务身份(即第二返回值)。其中,业务类型和业务身份有对应关系。
步骤S509:对比数据存储模块存储第一至第二请求参数和第一至第二返回值。将第二请求参数和第二返回值转换成数据库格式后进行存储。
步骤S510:对比结果输出模块从对比数据存储模块读取第一返回值和第二返回值,使用对比API进行对比,输出对比报表并呈现。对比的具体实现与步骤S207相同,此处不再赘述。经过上述处理,如果原始接口和对比接口的返回值相同,说明对比接口对应的代码不存在缺陷,可以用对比接口替换原始接口,解决了新建业务系统或者重构业务系统原始接口平滑切换的问题,保证了接口切换数据的准确性。
通过本发明实施例的接口对比测试方法可以看出,在原始接口收到调用请求时,使用代理类拦截原始接口得到第一请求参数和第一返回值,之后基于第一请求参数组装调用对比接口所需的第二请求参数,并调用对比接口得到第二返回值,进而比较两个返回值的异同,能够覆盖所有要测试的原始接口,保证测试结果的准确性,降低新旧系统的替换风险;通过管理页面灵活配置接口拦截信息,能够通过一次改造实现多次接口比对;采用字节码技术动态生成代理类,增加开发的灵活性;使用AOP的方式拦截原始接口,大大降低对旧系统的代码侵入;通过异步输出第一请求参数和第一返回值,降低对旧系统运行性能的影响;通过封装协议保证与第二接口的成功通信;统一第一返回值和第二返回值的数据格式,保证两者对比结果的正确性。
图6是根据本发明实施例的接口对比测试装置的主要模块的示意图。如图6所示,本发明实施例的接口对比测试装置600,主要包括:
第一获取模块601,用于当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值。其中,原始接口为旧系统所包含的接口;代理类是根据管理员在管理页面配置的接口拦截信息,生成的用于拦截原始接口的对象。实施例中,接口拦截信息包括要拦截的原始接口的接口名、实现原始接口的方法名和原始接口的返回值。
当获取到接口拦截信息后,为接口拦截信息包含的原始接口生成代理类。该代理类采用AOP方式或者侵入业务程序硬编码的方式拦截原始接口。如果原始接口接收到调用请求,则会触发代理类对该原始接口进行拦截,得到调用请求包含的第一请求参数和原始接口反馈的第一返回值。拦截原始接口后,继续旧系统的业务处理流程。
第二获取模块602,用于根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值。对比接口为用于替换原始接口的新系统所包含的接口。获取第一请求参数后,按照对比接口的参数格式进行组装得到第二请求参数。之后调用对比接口,并在调用对比接口的同时传递第二请求参数,即可获取对比接口反馈的第二返回值。
对比模块603,用于将所述第一返回值和所述第二返回值进行对比,得到对比结果。统一第一返回值和第二返回值的数据格式,将统一格式后的第一返回值和第二返回值进行对比,得到对比结果。如果对比不一致,则说明对比接口对应的代码存在缺陷,可以输出不一致的返回值。如果对比一致,则说明对比接口对应的代码不存在缺陷,后续可用于替换原始接口。
另外,本发明实施例的接口对比测试装置600还可以包括:第三获取模块、生成模块、异步输出模块和格式转换模块。其中,第三获取模块,用于获取通过管理页面配置的接口拦截信息。生成模块,用于根据接口拦截信息,使用字节码技术动态生成用于拦截原始接口的代理类。
异步输出模块,用于在获取调用请求的第一请求参数和第一返回值之后,代理类使用第一工作线程把第一请求参数和第一返回值存放到临时队列;代理类使用第二工作线程读取临时队列的第一请求参数和第一返回值,调用消息中间件输出第一请求参数和第一返回值。
格式转换模块,用于在将第一返回值和第二返回值进行对比之前,根据设定数据格式,对第一返回值进行格式转换;以及按照数据格式,对第二返回值进行格式转换。
从以上描述可以看出,在原始接口收到调用请求时,使用代理类拦截原始接口得到第一请求参数和第一返回值,之后基于第一请求参数组装调用对比接口所需的第二请求参数,并调用对比接口得到第二返回值,进而比较两个返回值的异同,能够覆盖所有要测试的原始接口,保证测试结果的准确性,降低新旧系统的替换风险。
图7示出了可以应用本发明实施例的接口对比测试方法或接口对比测试装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如管理员利用终端设备701、702、703发送的调用请求进行处理的后台管理服务器。后台管理服务器可以拦截原始接口获取第一返回值,调用对比接口获取第二返回值,对比第一返回值和第二返回值,并将处理结果(例如对比结果)反馈给终端设备。
需要说明的是,本申请实施例所提供的接口对比测试方法一般由服务器705执行,相应地,接口对比测试装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种接口对比测试方法。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种接口对比测试方法。
下面参考图8,其示出了适用于来实现本发明实施例的电子设备的计算机系统800的结构示意图。图8示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有计算机系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一获取模块、第二获取模块和对比模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一获取模块还可以被描述为“当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值;其中,所述代理类是根据配置的接口拦截信息,生成的用于拦截所述原始接口的对象;根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值;将所述第一返回值和所述第二返回值进行对比,得到对比结果。
根据本发明实施例的技术方案,在原始接口收到调用请求时,使用代理类拦截原始接口得到第一请求参数和第一返回值,之后基于第一请求参数组装调用对比接口所需的第二请求参数,并调用对比接口得到第二返回值,进而比较两个返回值的异同,能够覆盖所有要测试的原始接口,保证测试结果的准确性,降低新旧系统的替换风险。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种接口对比测试方法,其特征在于,包括:
当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值;其中,所述代理类是根据配置的接口拦截信息,生成的用于拦截所述原始接口的对象;
根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值;
将所述第一返回值和所述第二返回值进行对比,得到对比结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取通过管理页面配置的所述接口拦截信息;
根据所述接口拦截信息,生成用于拦截所述原始接口的代理类,包括:
根据所述接口拦截信息,使用字节码技术动态生成用于拦截所述原始接口的代理类。
3.根据权利要求2所述的方法,其特征在于,根据所述接口拦截信息,使用字节码技术动态生成用于拦截所述原始接口的代理类,包括:
将所述接口拦截信息所包含的原始接口的接口名、实现所述原始接口的方法名和所述原始接口的返回值拼接成字符串;
编译所述字符串生成所述代理类。
4.根据权利要求2所述的方法,其特征在于,所述代理类采用面向切面编程或者侵入业务程序硬编码的方式拦截所述原始接口。
5.根据权利要求1所述的方法,其特征在于,获取所述调用请求的第一请求参数和第一返回值的步骤之后,所述方法还包括:
所述代理类使用第一工作线程把所述第一请求参数和所述第一返回值存放到临时队列;
所述代理类使用第二工作线程读取所述临时队列的第一请求参数和第一返回值,调用消息中间件输出所述第一请求参数和所述第一返回值。
6.根据权利要求1所述的方法,其特征在于,根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数的步骤之后,所述方法还包括:
按照所述对比接口的接口协议所支持的传输方式的入参要求,进行协议封装。
7.根据权利要求1所述的方法,其特征在于,将所述第一返回值和所述第二返回值进行对比的步骤之前,所述方法还包括:
根据设定数据格式,对所述第一返回值进行格式转换;
按照所述数据格式,对所述第二返回值进行格式转换;
将所述第一返回值和所述第二返回值进行对比,包括:将格式转换后的所述第一返回值和所述第二返回值进行对比。
8.一种接口对比测试装置,其特征在于,包括:
第一获取模块,用于当原始接口接收到调用请求时,触发代理类拦截所述原始接口,获取所述调用请求的第一请求参数和第一返回值;其中,所述代理类是根据配置的接口拦截信息,生成的用于拦截所述原始接口的对象;
第二获取模块,用于根据对比接口的参数格式组装所述第一请求参数,得到第二请求参数,调用所述对比接口并将所述第二请求参数传递至所述对比接口,获取第二返回值;
对比模块,用于将所述第一返回值和所述第二返回值进行对比,得到对比结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010237645.2A CN113468041A (zh) | 2020-03-30 | 2020-03-30 | 一种接口对比测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010237645.2A CN113468041A (zh) | 2020-03-30 | 2020-03-30 | 一种接口对比测试方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113468041A true CN113468041A (zh) | 2021-10-01 |
Family
ID=77864924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010237645.2A Pending CN113468041A (zh) | 2020-03-30 | 2020-03-30 | 一种接口对比测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468041A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124880A (zh) * | 2021-11-29 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 基于公有云的保密通信方法、装置及计算机设备及存储介质 |
Citations (8)
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 |
US20050050548A1 (en) * | 2003-08-28 | 2005-03-03 | Sun Microsystems, Inc. | Application internationalization using dynamic proxies |
CN108345535A (zh) * | 2017-12-26 | 2018-07-31 | 阿里巴巴集团控股有限公司 | mock测试方法、装置及设备 |
CN108694104A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 一种接口功能对比测试方法、装置、电子设备和储存介质 |
US10305962B1 (en) * | 2015-12-30 | 2019-05-28 | EMC IP Holding Company LLC | Unit testing clients of web services |
CN109828914A (zh) * | 2018-12-28 | 2019-05-31 | 宁波瓜瓜农业科技有限公司 | 全流程分布式系统自动化测试方法以及测试系统 |
CN110147326A (zh) * | 2019-05-23 | 2019-08-20 | 四川新网银行股份有限公司 | 基于Redis数据库的微服务自动化测试方法 |
CN110196813A (zh) * | 2019-06-06 | 2019-09-03 | 北京百度网讯科技有限公司 | 接口测试方法、装置、设备和介质 |
-
2020
- 2020-03-30 CN CN202010237645.2A patent/CN113468041A/zh active Pending
Patent Citations (8)
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 |
US20050050548A1 (en) * | 2003-08-28 | 2005-03-03 | Sun Microsystems, Inc. | Application internationalization using dynamic proxies |
US10305962B1 (en) * | 2015-12-30 | 2019-05-28 | EMC IP Holding Company LLC | Unit testing clients of web services |
CN108694104A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 一种接口功能对比测试方法、装置、电子设备和储存介质 |
CN108345535A (zh) * | 2017-12-26 | 2018-07-31 | 阿里巴巴集团控股有限公司 | mock测试方法、装置及设备 |
CN109828914A (zh) * | 2018-12-28 | 2019-05-31 | 宁波瓜瓜农业科技有限公司 | 全流程分布式系统自动化测试方法以及测试系统 |
CN110147326A (zh) * | 2019-05-23 | 2019-08-20 | 四川新网银行股份有限公司 | 基于Redis数据库的微服务自动化测试方法 |
CN110196813A (zh) * | 2019-06-06 | 2019-09-03 | 北京百度网讯科技有限公司 | 接口测试方法、装置、设备和介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124880A (zh) * | 2021-11-29 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 基于公有云的保密通信方法、装置及计算机设备及存储介质 |
CN114124880B (zh) * | 2021-11-29 | 2023-07-18 | 北京天融信网络安全技术有限公司 | 基于公有云的保密通信方法、装置及计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090423B (zh) | 一种webhook框架系统和实现主动调用、实现事件触发的方法 | |
CN111400061A (zh) | 一种数据处理方法和系统 | |
CN109815107B (zh) | 自动化测试的方法和装置 | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN112631590B (zh) | 组件库生成方法、装置、电子设备和计算机可读介质 | |
CN113076153B (zh) | 一种接口调用方法和装置 | |
CN113076294A (zh) | 一种信息分享方法和装置 | |
CN111309375A (zh) | 生成远程过程调用工具包的方法、装置、介质和电子设备 | |
CN113821352A (zh) | 一种远程服务的调用方法和装置 | |
CN110704200A (zh) | 转换调用接口的方法和装置 | |
CN113360377B (zh) | 一种测试方法和装置 | |
CN112015383A (zh) | 一种登录方法和装置 | |
CN109981546B (zh) | 获取应用模块间的远程调用关系的方法和装置 | |
CN113468041A (zh) | 一种接口对比测试方法和装置 | |
CN113760736A (zh) | 一种测试方法、装置和系统 | |
CN113779122B (zh) | 导出数据的方法和装置 | |
CN112783903B (zh) | 生成更新日志的方法和装置 | |
CN114327404A (zh) | 一种文件处理方法、装置、电子设备及计算机可读介质 | |
CN112131095B (zh) | 压力测试方法和装置 | |
CN112929453A (zh) | 一种共享session数据的方法和装置 | |
CN113704079A (zh) | 基于Protobuf的接口测试方法和装置 | |
CN113779018A (zh) | 一种数据处理方法和装置 | |
CN112860447A (zh) | 一种不同应用间的交互方法和系统 | |
CN113448602A (zh) | 版本更新的方法和装置 | |
CN113407229A (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 |