CN115185841A - ***重构测试方法、装置、设备及存储介质 - Google Patents
***重构测试方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115185841A CN115185841A CN202210809361.5A CN202210809361A CN115185841A CN 115185841 A CN115185841 A CN 115185841A CN 202210809361 A CN202210809361 A CN 202210809361A CN 115185841 A CN115185841 A CN 115185841A
- Authority
- CN
- China
- Prior art keywords
- result
- service
- attribute information
- request
- call
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明申请提供一种***重构测试方法、装置、设备及储介质,该方法包括发起原始版本***服务的流量请求,解析流量请求的属性信息,基于属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;基于属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;比对第一调用结果和第二调用结果是否一致来确定重构***服务的测试结果,通过发起原始版本***的服务流量请求,将服务流量请求转变为原始版本开发语言的HTTP调用和重构版本开发语言的HTTP调用,返回2个调用结果并比对,根据比对结果快速验证重构后的逻辑及返回数据和结果是否正确,方便比对重构前、后版本***的数据差异,减少人工参与,提升测试效率和效果。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及***重构技术领域,提供一种***重构测试方法、装置、设备及计算机存储介质。
背景技术
一个软件总是为解决某种特定的需求而产生,时代在发展,客户的业务也在发生变化。有的需求相对稳定一些,有的需求变化的比较剧烈,还有的需求已经消失了,或者转化成了别的需求。在这种情况下,软件必须相应的改变,重构***以提高***的处理业务性能和稳定性,例如qps、cpu、容灾、降级、限流、可扩展性、可维护性等等。***除了要应付大量的并发请求,还必须快速支持各种业务需求,以提升用户的使用体验。
重构的业务***版本需要测试通过后才能投入使用,业务***重构可能需要转变开发语言,在新开发语言重构历史语言***的过程中,开发人员可能对历史业务不熟悉、或对历史开发语言不熟悉,对自己重构后的代码正确与否无法判断,重构完一个接口都是简单自测几单大体流程没问题就提交测试,细节问题难以发现,即便有问题也没有一个自动提醒的机制,容易造成重构逻辑不对。
并且,重构后场景是否覆盖全面无法知道,若需要测试人员深入理解历史业务,对每个接口梳理逻辑,编写所有场景的测试用例,则测试非常耗时耗力,并且效果仍然难以保证。
发明内容
为了解决上述问题,本发明的目的是提供一种***重构测试方法、装置、计算机设备及计算机可读存储介质,该方法可以快速的验证重构后***的逻辑是否正确,返回的数据是否正确,方便比对重构前、后的数据差异,减少人工比对。
基于此,本发明提供了一种***重构测试方法,所述方法包括:
发起原始版本***服务的流量请求,
解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;
基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;
比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。
进一步地,在所述发起原始版本***服务的流量请求的步骤之后,所述方法还包括:
获取流量重试比对配置参数,根据所述配置判断所述流量请求是否需要转发,若是,获取所述流量请求的属性信息并封装在消息体中;若否,直接返回所述流量请求的响应结果。
进一步地,所述解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果的步骤包括:
解析所述消息体中的属性信息;
基于所述属性信息第一构建所述原始版本***服务的HTTP请求;
执行所述第一HTTP请求,获取第一调用结果。
进一步地,所述在根据所述流量重试比对配置参数判断所述流量请求需要转发后,所述方法还包括:
设置采样率,计算所述流量请求经过生成随机散列值是否在采样率范围内。
进一步地,所述解析所述消息体中的属性信息的步骤之后还包括:
对解析的数据进行校验和过滤。
进一步地,所述基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果的步骤包括:
重置所述流量请求并再次解析所述流量请求的属性信息;
获取目标服务参数;
根据所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用;
执行所述第二HTTP调用获取第二调用结果。
进一步地,所述比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果的步骤包括:
对所述第一调用结果和所述第二调用结果进行json比对;
根据预设的比对规则获取比对结果;
记录所述比对结果。
本发明还提供了一种***重构测试装置,包括:
业务发起单元,用于发起原始版本***服务的流量请求;
流量重试单元,用于解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;以及
基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;
结果比对单元,用于比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。
本发明还提供了一种计算机设备,包括存储器、处理器和网络接口,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现网约车平台风险评估方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现***重构测试方法的步骤。
在本发明中,提供一种***重构测试方法,该方法包括发起原始版本***服务的流量请求,解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。本发明通过发起原始版本***的服务流量请求,在请求返回结果之前将所述服务流量请求转变为原始版本开发语言的HTTP调用和重构版本开发语言的HTTP调用,返回2个调用结果并比对,根据比对结果快速验证重构后的逻辑是否正确,返回的数据是否正确,方便比对重构前、后版本***的数据差异,减少人工参与,提升测试效率和效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例可以应用于其中的示例性***架构图;
图2是本发明实施例提供的重构***测试方法一种应用场景的示意图;
图3本发明实施例提供的一种重构***测试方法的流程图;
图4是本发明实施例提供的一种重构***测试方法的垂直框架流程图;
图5是本发明实施例提供的重构***测试装置的结构示意图;
图6是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的一些关键名词进行解释:
重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。重构不改变***的外部功能,只对内部的结构进行重新的整理,使***对于需求的变更始终具有较强的适应能力。重构可以降低项目的耦合度,使项目更加模块化,有利于项目的开发效率和后期的维护。重构可以包括业务***后台的协议重构,增加新功能、或者其他方面的版本重构。
流量:指***的访问量,用户对***的请求,***内部服务之间的请求都可以通过线上流量获取。通过线上流量分析,开发人员迅速了解清楚待重构的服务及接口清单,测试场景覆盖率高。
HTTP调用:API接口的调用是向容器服务的服务端地址发送HTTP请求,并按照接口说明在请求中加入相应请求参数形成特定形式的消息体,调用后***会返回处理结果。请求及返回结果都使用UTF-8字符集进行编码。
以网约车***为例,业务重构时一般要求保证新版本***的执行逻辑与旧版本一致。而相关技术中对于网约车***的重构版本进行人工测试时,需要开发人员梳理全部业务逻辑,编写所有场景的测试用例,人工测试的效率极低,且容易出错,无法保证测试效果。
鉴于此,本申请实施例提供一种***重构测试方法,在该方法中,通过发起原始版本***的服务流量请求,在请求返回结果之前将所述服务流量请求转变为原始版本开发语言的HTTP调用和重构版本开发语言的HTTP调用,返回2个调用结果并比对,根据比对结果快速验证重构后的逻辑是否正确,返回的数据是否正确,方便比对重构前、后版本***的数据差异,减少人工参与,提升测试效率和效果。
此外,本申请实施例中,无论是对重构***特定接口的针对性测试还是平时开发人员的自测走单,只要配置了对某个原始版本***服务的流量重试比对配置,都能将平时公司的走单结果记录,相当于提高了测试场景的覆盖率。
在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
本申请实施例提供的方案可以适用于大多数版本重构后的测试场景中,如图1所示,为本申请实施例提供的一种应用场景示意图,在该场景中,可以包括终端设备101、服务器102、测试设备103和数据库104。
终端设备101和测试设备103可以是平板电脑(PAD)、手机、笔记本电脑或者个人计算机(Personal Computer,PC)等设备,当然,也可以为其他可能的设备,本发明实施例对此不做限制。终端设备101上安装有被测业务***的客户端,可以从客户端上发起目标业务。具体的,原始版本的业务***中访问业务***业务,发起目标服务的流量请求。
测试设备103上可以安装测试客户端。在实际应用中,为了方便测试,终端设备101上的客户端可以通过测试设备103控制自动发起业务,即测试设备103测试开始后,则可以自动控制客户端发起目标业务。当然,终端设备101和测试设备103亦可以设置为同一设备,那么可通过测试客户端调用原始版本业务服务,例如业务***为网约车***时,则可以将网约车***的约车应用中发起***服务的流量请求,以便后续根据流量重试配置将所述流量请求转换为相应的HTTP调用获取调用结果。
测试设备103可以包括一个或多个处理器、存储器、与服务器102和终端设备101交互的I/O接口、显示面板等。其中,测试设备103的存储器中可以存储本申请实施例提供的对比方法的程序指令,这些程序指令被处理器执行时能够用以实现本申请实施例提供的业务***的版本重构测试方法的步骤,以对业务***进行新旧版本的对比测试。
服务器102可以为业务***的后台服务器,在发起业务时,相应的,则会向服务器102发起业务请求,服务器102则可以实现相应的业务,并返回业务响应。同时,业务***在执行目标业务时会同步产生运行日志,例如服务器102为实现目标业务,需要执行目标业务的业务逻辑,即需要调用业务涉及的协议接口实现整个流程,其生成的日志可存储至数据库104中。
在一种可能的实施方式中,测试设备103上安装的测试客户端可以实现测试人员的可视化交互,而测试逻辑可部署于服务器上,利用服务器的计算资源实现测试逻辑,即测试人员可通过测试客户端远程发起测试,使得服务器上部署的测试工具开始测试,即,从数据库104中读取相应的数据,调用原始版本***和重构版本***获取调用结果,根据调用返回结果的比对确定新版本与旧版本的逻辑是否一致,以及执行结果是否一致等,而测试客户端可以同步显示测试过程。
上述的各个设备之间可以通过一个或者多个网络进行直接或间接的通信连接。该网络可以是有线网络,也可以是无线网络,例如无线网络可以是移动蜂窝网络,或者可以是无线保真(Wireless-Fidelity,WIFI)网络,当然还可以是其他可能的网络,本申请实施例对此不做限制。
当然,本申请实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其他可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
在介绍测试方法流程之前,首先对本申请实施例提供的测试客户端的架构进行介绍。如图2所示,为测试客户端的测试架构示意图,在该架构中,主要包括如下的几个模块:
(1)终端设备
终端设备主要由通信接口控制装置与专用或选定的输入输出装置组合而成,是用户与应用***之间能以人机交互作用或会话方式进行***业务数据处理作业的设备。终端设备可以是客户端或测试设备,终端设备中的应用***为原始版本***,用于输入作业指令和/或请求参数,发起流量请求,以便后续抓取流量请求。
(2)apollo配置
apollo配置提供统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置,通过命名空间(namespace)可以很方便地支持原始版本***和重构版本***共享同一份配置,同时还允许两个版本的应用对共享的配置进行覆盖。
在本申请的一些可能的实施例中,apollo配置重构***的目的接口、采样率等重构***的参数信息。
(3)第三方服务
第三方服务是重构***的自有服务器,用于抓取终端设备的流量,用户对***的请求,***内部服务之间的请求都可以第三方服务线上流量获取,用户流量充当***级别的回归测试用例,***内部之间服务间的流量可以充当服务级别的回归测试用例。每次流量采样都能对接口覆盖率,测试量级做到按需控制,为自动化回归测试提供便利。
第三方服务根据apollo配置判断请求接口是否要进行流量重试比对,若要比对,将终端设备发起的流量请求的请求参数,方法名,url,请求方式等信息封装到消息提中。第三方服务还用于对调用比对工具,比较原始版本***的调用结果和重构版本的调用结果,并记录比对结果。
(4)消息队列
终端设备发起的流量请求消息发送到消息队列,消息队列作是消息中间件,用于保存终端设备发送的流量请求,实现第三方服务与终端设备的通讯。
在本申请的一些可能的实施例中,所述消息队列为Kafka,它的每条消息都有唯一的offset,用来表示消息在分区中对应的位置。对于消费者而言,它也有一个offset的概念,消费者使用offset来表示消费到分区中某个消息所在的位置。
(5)工具模块
工具模块包括测试过程中涉及的多个工具,各个工具被调用以实现相应的功能。例如,工具模块可以包括解析工具、封装工具、远程控制工具、加密/解密工具、格式转换工具和比对工具,当然,也可以包括其他可能的工具,本申请实施例对此不做限制。
解析工具用于解析从消息队列获取的消息以及消息数据。
封装工具,用于将解析工具解析出的数据按照预设的格式或规则封装成HTTP调用请求,执行HTTP请求并获取调用结果。
远程控制工具可以辅助实现远程控制功能,例如可以为安全外壳协议(SecureShell Protocol,SSH Client)工具。
加密/解密工具(Encrypt Manager)用于对待传输的内容进行加密和解密,在本申请实施例中,主要用于解析消息队列的消息数据。
格式转换(convert)工具用于将解析得到日志数据设定的格式进行存储,例如可以按照JSON(Java Script Object Notation)格式进行存储,JSON是一种轻量的数据表示方法,采用key-value的方式记录数据,更为直观简洁。
比对工具(Compare Manager)用于在日志解析文件的比对阶段,对两个版本的日志解析文件按照设定比对规则进行比对。
请参见图3,为本申请实施例提供的***重构测试方法的流程示意图,该方法可以通过图1所示应用场景来执行,该方法的流程介绍如下。
步骤301:发起原始版本***服务的流量请求。
步骤302:分解析流量请求的属性信息,基于属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果。
步骤303:基于属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果。
步骤304:比对第一调用结果和第二调用结果是否一致来确定重构***服务的测试结果。
本申请实施例中,所述流量请求是原始版本***中的一种业务请求,所述流量请求请求的是原始***的服务请求,在被原始***响应之前,读取重试比对配置参数,判断本次流量请求是否需要转发,加入到比对服务,若需要流量比对,将所述流量请求的请求参数、URL、响应结果等参数封装在消息体中,将消息转发到消息队列中。若不需要流量比对,则直接返回响应结果。
具体的,本申请实施例采用apollo配置设置重试比对配置参数,在重构***发起所述流量请求后,从所述apollo配置读取重试比对配置参数,判断所述流量请求是否需要流量转发。
在其他的一些实施方式中,所述重试比对配置参数可以在终端设备发起流量请求时设置此参数,比如在发起流量请求时输入参数指令,本申请实施例对此不做限制。
进一步的,由于业务量大,所述apollo配置还包括采样率,支持流量采样,动态调整有多少百分比的流量能打到重构***,并计算所述流量请求经过生成随机散列值是否在采样率范围内。当所述重试比对配置参数需要重试比对且本次流量请求落在采样空间时,将本次流量请求加入到比对服务中,将所述流量请求的请求参数、URL、响应结果等关键参数封装在消息体中并由原始版本***推送到消息队列中。
需要说明的是,本申请实施例所述消息队列为kafka,具有高吞吐量分布式发布订阅消息队列,可以处理消费者在网站中的所有动作流数据,当消息发布到主题后,只会被投递给订阅它的每个消费组中的一个消费者,不同消费组之间互不影响。
在本申请的一个实施例中,kafka采用点对点(P2P,Point-to-Point)模式和发布/订阅(Pub/Sub)模式接收原始***推送的消息体。其中,点对点模式是基于队列的,原始版本***封装的消息体推送到kafka中,消息消费者可以从kafka中接收所述消息体。发布订阅模式则定义了如何向一个内容节点的主题(Topic)发布和订阅所述流量请求的消息体信息,主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题中,而消息订阅者从主题中订阅消息。主题使得消息的订阅者和发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用。
进一步的,每个消费者都有一个对应的消费组。按照Kafka默认的规则,每一个消费者会被分配到1个分区,每个消费者只能消费所分配到的分区中的消息体。换言之,每一个分区只能被一个消费组中的一个消费者所消费。
进一步的,所述消息体使用map(Message Application Part,消息应用部分)结构包装,封装所述流量请求的属性信息,所述属性信息包括所述流量请求的请求参数、方法名、URL、响应结果等关键参数数据,以使后续调用获取准确结果。
需要说明的是,在消费kafka中的信息体后,解析所述消息体中所封装的属性信息,基于所述数据信息构建原始版本***服务的第一HTTP请求,并执行所述第一HTTP请求获取第一调用结果。
需要说明的是,所解析出的数据经过数据校验、过滤等前置处理,以提高数据准确率,提升测试效果。
需要说明的是,所述目标服务参数包括目的服务器及目的接口,用于指定重构***的目标服务器和接口ID,如此,无论是对重构***特定接口的针对性测试还是平时开发人员的自测走单,只要配置了对某个原始***的流量重试比对配置,都能将平时公司的走单结果记录,相当于提高了测试场景的覆盖率,并提高测试效率。
在本申请的一个实施例方式中,所述目标服务参数设置在pollo配置中,当所述流量请求需要转发时,指定当请求所述流量请求原始版本***的接口的时候流量还要再重试请求到重构***对应的接口。
需要说明的是,本申请实施例重置所述流量请求,基于处置后的数据信息再次解析,然后根据所述目标服务参数信息,构建重构版本***服务的第二HTTP请求,并执行所述第二HTTP请求获取第二调用结果。
进一步的,对两次返回的调用结果进行比对,通过预设的比对模式、比对规则得到比对结果,并记录到数据库中。通过比较可以很清楚的分析出应用重构前后的是否逻辑是否一致,返回的数据是否正确,无需人工干预操作,极大提高了测试效率。
进一步的,当比对结果不一致时需要发送消息及时通知开发和测试人员,具体的,可以通过企业办公软件,如飞书、钉钉、企业微信、邮箱或其他内部办公程序或进行通知,通过比对结果的通知机制,可以及时处理有差异的重构接口,第一时间发现问题,避免带问题上线。
综上所述,本申请实施例的测试方案无需人工干预,快速高效的完成重构版本测试,后续的提测非重构版本,也可以借助于此方案,快速的发现错误,提高测试效率,为编写自动化提供了完整的参数请求示例。
请参阅图4,本申请另一实施例提供的***重构测试方法的垂直跨职能流程图,其中端上APP为终端设备或测设设备的网约车应用程序,原始***是PHP语言开发的,重构***是基于JAVA语言开发的。在其他可能实现的方式中,该方法也适用于其他语言开发***中,如go,Python,C++,C#等语言***间的重构***的测试场景中,测试设备上安装终端APP应用程序,发起原始语言统的服务流量请求,获取原始***和重构***两种语言的HTTP调用结果进行比对,根据比对结果确认重构***业务逻辑是否正确,返回结果是否准确。
在本申请实施例中,所述重构测试方法包括以下步骤:
1.php服务把消息发送kafka中。
2.新建的流量重试比对服务消费到kafka消息,解析消息并进行数据的校验、过滤等前置处理。
3.流量重试比对服务重新解析的数据构建出请求php服务的http请求,发起请求并获取第一响应结果。
4.流量重试比对服务重新解析的数据,和读取关于该php接口要请求到目标java服务的目标接口的配置,构建出请求java服务的http请求,发起请求并获取第二响应结果。
5.将第一响应结果和第二响应结果结果进行json比对,根据服务自身设置的比对模式、可以忽略比对字段等配置,得到比对结果,并记录数据库。
需要说明的是,本实施例通过重构的所述JAVA***服务自有的第三方服务捕获原始PHP***的流量请求,当原始PHP***发起请求,产生访问流量时,在所述流量请求返回响应结果前,获取重试比对配置参数。
需要说明的是,本申请实施例由端上APP发起请求,请求所述原始***中的某项PHP服务,比如司机或乘客发起订单请求,产生流量到原始***PHP服务,原始***PHP服务经业务逻辑处理后,在响应所述请求前,获取所述流量请求的重试比对配置参数,判断所述流量请求是否需要重试比对,若不需要,直接返回所述流量请求的响应结果,结束比对服务。若所述进行流量比对,将所述流量请求加入比对服务中,则将所述流量请求发送到kafka消息队列中,通过消费kafka消息队列中的消息,并解析消息中请求参数、方法名、URL等参数或数据,基于解析的参数或数据构建一个请求原PHP服务的第一HTTP调用,执行所述第一HTTP调用并获取第一调用结果。
进一步地,重置所述流量请求,根据获取所述流量请求所要转发到重构***中的目标JAVA服务器和目标接口的ID或其他识别码,构建出一个JAVA服务的第二HTTP调用,执行所述第二HTTP调用并获取第二调用结果。
进一步地,对PHP服务的第一调用结果和所述JAVA服务的第二调用结果进行比对,按照预设的比对模式、比对规则得到比对结果,并记录数据库。例如,将所述第一调用结果和所述J第二调用结果进行json比对,根据服务自身设置的比对模式、可以忽略比对字段等配置判断比对结果。比如可以设置严格检查模式或者宽松检查模式,设置返回结果中的某些字段或信息的验证宽松程度,又或者重构***中针对某些字段信息返回重新设定需要忽略,或字段排序结果可以忽略的。
以下是一些对比对策略举例、说明,用于根据这些参数设置比对结果比对的宽松程度:
{
"compare_mode":"STRICT",//STRICT、LENIENT、NON_EXTENSIBLE、STRICT_ORDER比对模式
"ignore_field":["a.b.c","a.b.d"]//忽略字段
"ignore_array_value":[{"path":"b.a","value":"a[*].id"}}]
}
模式说明:
STRICT:严格检查。不可扩展(字段名和数量要完全一样),且数组顺序严格LENIENT:宽松检查。可扩展(字段名和数量要可以不一样),非严格的数组排序
NON_EXTENSIBLE:不可扩展检查。不可扩展,且数组排序不严格
STRICT_ORDER:严格的顺序检查。可扩展且严格的数组顺序
需要说明的是,在判断所述PHP服务的流量请求是否需要重试比对时,所述方案中还设置采样率,计算本次请求是否落在采样空间,当在采样区间时将本次流量请求加入到比对服务中。
需要说明的是,当确认所述流量请求需要重试比对,发送消息到到消息队列时,对所述流量请求进行解析,将流量请求参数、方法名、URL、响应结果等封装在消息体中,通过消费所述消息体中的消息解析出流量请求的属性信息和数据。
进一步地,所述消息体的构造采用map结构包装,主要包括以下属性信息:
from-代表消息的来源,即php服务
method-代表请求的controller方法名
version-代表controller中的具体方法名
url-代表请求的路径url
req_type-代表请求类型是post还是get
post_body-代表当req_type为post时的请求体
driver_id-代表在业务中司机主键,在不同公司业务中视情况使用自己的业务主键
event_type-代表消息类型,本业务中代表这个消息是用来做回放用的以下是一种具体示例的实现代码:
{
"from":"bfe-dappweb-api",--消息来源
"method":"recruit",--controller方法名
"version":"index",--具体方法名
"url":"/index.php/?_m=recruit&_a=index&token=3843D545FDA75CF64F60D4B1BF642AD24BDBE74B4C68E0504D73EBB23CA06023AA1C47297ABEC4FB4644EFB904958CCB&driver_md5=d0ffadd4b0285b51b97ba41c0f662b85&revision=6152&client_type=ios_app&_su=1637822513414616060",--url
"req_type":"post",
"post_body":"xxxx",
"driver_id":2135,
"event_type":"dtool_replay"
}
说明需要的是,所述比对结果存储在数据库中。所述数据库创建服务请求的回放配置表和回放记录表,所述回放配置表包括以下属性:id主键,源php服务、源php服务method名、源php服务具体方法名、目标java服务、目标服务controller、目标服务具体方法名、比对策略、创建时间、更新时间等等属性信息。所述回放记录表包括主键id、原始记录id、配置id(对应回放配置表的主键id)、消息体中的url、源response(php服务的response)、目标response(java服务的response)、比对结果是否成功、比对结果详情等属性信息。
请参见图5,基于同一发明构思,本申请实施例还提供了一种重构***测试装置500,该装置包括:
业务发起单元501,用于发起原始版本***服务的流量请求;
流量重试单元502,用于解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;以及
基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;
结果比对单元503,用于比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。
所述重构***测试装置500还包括显示模块(图未示),所述显示模块用于显示所述重构***测试装置500的业务请求处理界面。
所述重构***测试装置500还可以包括输入模块(图未示),所述输入模块与所述显示模块相连,所述输入模块可包括按键,可用于输入用户id的账号、密码、名称等信息,所述软件开发过程操作页面可以在所述软件开发装置中的显示模块中显示,并且所述显示模块还可以显示所述用户的其他信息,并将此信息存储起来,方便用户随时进行查看。
所述重构***测试装置500还可以包括交互模块(图未示),所述交互模块可提供给用户选择功能的方法、传递出导向元素和它所导向内容之间的关系,以及提供司机用户和乘客用户联系的媒介。
需要说明的是,本实施例的重构***测试装置500,与方法实施例的属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在本实施例中均对应适用,此处不再赘述。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图6,图6为本实施例计算机设备基本结构框图。
所述计算机设备6包括通过***总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件61-63的计算机设备6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器61可以是所述计算机设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,所述存储器61也可以是所述计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器61还可以既包括所述计算机设备6的内部存储单元也包括其外部存储设备。本实施例中,所述存储器61通常用于存储安装于所述计算机设备6的操作***和各类应用软件,例如***重构测试方法的程序代码等。此外,所述存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器62在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制所述计算机设备6的总体操作。本实施例中,所述处理器62用于运行所述存储器61中存储的程序代码或者处理数据,例如运行所述***重构测试方法的程序代码。
所述网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在所述计算机设备6与其他电子设备之间建立通信连接。
本发明的实施例还提出一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现网约车平台风险评估方法的步骤。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (10)
1.一种***重构测试方法,其特征在于,所述测试方法包括:
发起原始版本***服务的流量请求,
解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;
基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;
比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。
2.如权利要求1所述的***重构测试方法,其特征在于,在所述发起原始版本***服务的流量请求的步骤之后,所述方法还包括:
获取流量重试比对配置参数,根据所述配置判断所述流量请求是否需要转发,若是,获取所述流量请求的属性信息并封装在消息体中;若否,直接返回所述流量请求的响应结果。
3.如权利要求2所述的***重构测试方法,其特征在于,所述解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果的步骤包括:
解析所述消息体中的属性信息;
基于所述属性信息第一构建所述原始版本***服务的HTTP请求;
执行所述第一HTTP请求,获取第一调用结果。
4.如权利要求2所述的***重构测试方法,其特征在于,所述在根据所述流量重试比对配置参数判断所述流量请求需要转发后,所述方法还包括:
设置采样率,计算所述流量请求经过生成随机散列值是否在采样率范围内。
5.如权利要求3所述***重构测试的方法,其特征在于,所述解析所述消息体中的属性信息的步骤之后还包括:
对解析的数据进行校验和过滤。
6.如权利要求2所述的***重构测试方法,其特征在于,所述基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果的步骤包括:
重置所述流量请求并再次解析所述流量请求的属性信息;
获取目标服务参数;
根据所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用;
执行所述第二HTTP调用获取第二调用结果。
7.如权利要求1所述的***重构测试方法,其特征在于,所述比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果的步骤包括:
对所述第一调用结果和所述第二调用结果进行json比对;
根据预设的比对规则获取比对结果;
记录所述比对结果。
8.一种***重构测试装置,其特征在于,所述装置包括:
业务发起单元,用于发起原始版本***服务的流量请求;
流量重试单元,用于解析所述流量请求的属性信息,基于所述属性信息构建对应原始版本***服务的第一HTTP调用并获取第一调用结果;以及
基于所述属性信息和目标服务参数,构建对应重构***服务的第二HTTP调用并获取第二调用结果;
结果比对单元,用于比对所述第一调用结果和所述第二调用结果是否一致来确定所述重构***服务的测试结果。
9.一种计算机设备,包括存储器、处理器和网络接口,其特征在于,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现***重构测试方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,
该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210809361.5A CN115185841A (zh) | 2022-07-11 | 2022-07-11 | ***重构测试方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210809361.5A CN115185841A (zh) | 2022-07-11 | 2022-07-11 | ***重构测试方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115185841A true CN115185841A (zh) | 2022-10-14 |
Family
ID=83516992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210809361.5A Pending CN115185841A (zh) | 2022-07-11 | 2022-07-11 | ***重构测试方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185841A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009112A (zh) * | 2023-08-31 | 2023-11-07 | 深圳市小赢信息技术有限责任公司 | 业务处理方法、装置、智能设备和存储介质 |
-
2022
- 2022-07-11 CN CN202210809361.5A patent/CN115185841A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009112A (zh) * | 2023-08-31 | 2023-11-07 | 深圳市小赢信息技术有限责任公司 | 业务处理方法、装置、智能设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107370786B (zh) | 一种基于微服务架构的通用信息管理*** | |
CN111083225B (zh) | 在物联网平台中的数据处理方法、装置及物联网平台 | |
CN108415832B (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
WO2015074554A1 (zh) | 消息同步方法和装置 | |
CN112051993A (zh) | 状态机模板的生成及任务处理方法、装置、介质及设备 | |
CN111556158A (zh) | 物联网平台的接入方法、接入装置、接入设备及存储介质 | |
CN111858727A (zh) | 一种基于模板配置的多数据源数据导出***及方法 | |
KR101086620B1 (ko) | 스마트 오피스 시스템 및 운용을 위한 서버 및 운용 방법 | |
CN115185841A (zh) | ***重构测试方法、装置、设备及存储介质 | |
CN111125681A (zh) | 业务处理方法、装置及存储介质 | |
US20230267430A1 (en) | Data processing method and device, and computer-readable storage medium | |
CN115328997B (zh) | 数据同步方法、***、设备及存储介质 | |
KR20140037605A (ko) | Cim 스키마 및 시스템 토폴로지 정보를 이용한 ami의 동적 운영 방법 | |
CN114500268B (zh) | chart资源的部署方法、装置、服务器及存储介质 | |
CN111294404A (zh) | 适应多种外部短信服务处理方法及装置、计算机设备、介质 | |
CN111949472A (zh) | 一种记录应用日志的方法及装置 | |
CN110990280A (zh) | 一种测试数据自动生成***及方法 | |
CN113031960B (zh) | 代码编译方法、装置、服务器及存储介质 | |
WO2020053635A1 (zh) | 近场传输中的资源推荐方法及其装置 | |
CN117061582B (zh) | 基于数据中心的车辆管理***交互方法、计算机设备 | |
Gao | On Provisioning and configuring ensembles of IoT, network functions and cloud resources | |
CN111723088B (zh) | 一种推送汇总层表的方法和装置 | |
CN116805974A (zh) | 媒资数据分发方法及装置、存储介质及电子设备 | |
CN115914053A (zh) | 基于mqtt协议的接口测试方法及装置 | |
CN116414685A (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 |