CN111045942A - 应用测试方法、系统、存储介质及电子设备 - Google Patents
应用测试方法、系统、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111045942A CN111045942A CN201911271046.6A CN201911271046A CN111045942A CN 111045942 A CN111045942 A CN 111045942A CN 201911271046 A CN201911271046 A CN 201911271046A CN 111045942 A CN111045942 A CN 111045942A
- Authority
- CN
- China
- Prior art keywords
- test
- request
- application
- response
- tested
- 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
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
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种应用测试方法、系统、存储介质及电子设备。
背景技术
目前对应用进行测试,主要有以下几种方式:
1、进行流量录制,将录制的数据在完全为测试搭建的环境中重放,从而避免影响线上生产环境。该方式只能在相对简单的环境中使用,当环境庞大而复杂的时候,搭建成本太高。
2、将被测试应用部署在生产环境中,被测试应用所依赖的其他应用都是生产环境中的应用。该方式只能支持对其他应用进行读操作(写操作需要根据录制数据进行模仿),如果对上游进行了写操作将导致生产数据被污染。该方式中,由于对其他应用进行的操作是否会造成写数据需要人工保障,从而导致容易出错,成本高。而且读写操作也存在协调问题。
因此,需要一种新的应用测试方法、系统、存储介质及电子设备,以模拟线上环境对应用测试。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本发明提供一种应用测试方法、系统、存储介质及电子设备,以模拟线上环境对应用测试。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的一方面,提供一种应用测试方法,其中,所述方法包括:向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;将所述被测应用发出的第二测试请求重定向到模拟应用中;通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
在本发明的一些示例性实施例中,基于前述方案,所述方法还包括:获取关联关系数据;获取关联关系数据,包括:对所述被测应用接收的第一请求、发送的第二请求、接收的所述第二请求的第二响应以及发送的所述第一请求的第一响应进行流量录制,获取分配有标识的所述第一请求、第一响应、第二请求以及第二响应的关联关系数据。
在本发明的一些示例性实施例中,基于前述方案,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一请求发出的第二测试请求中之前,所述方法还包括:从所述关联关系数据中提取第一请求,以获取第一测试请求,所述第一测试请求中包括所述关联关系数据的标识。
在本发明的一些示例性实施例中,基于前述方案,通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用,包括:将所述第二测试请求中的标识与所述关联关系数据进行匹配,获取与所述标识匹配的关联关系数据;从所述关联关系数据中提取第二响应,以获取所述第二测试响应;按照所述第二响应的响应时间将所述第二测试响应返回所述被测应用。
在本发明的一些示例性实施例中,基于前述方案,基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果,包括:获取与所述第一测试请求中的标识对应的关联关系数据;将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果;将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果;基于所述请求比对结果以及所述响应比对结果获取所述被测应用的测试结果。
在本发明的一些示例性实施例中,基于前述方案,将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果,包括:将所述第二测试请求与所述关联关系数据中的第二请求的内容以及发送时间进行比对,获取请求比对结果;将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果,包括:将所述第一测试响应与所述关联关系数据中的第一响应的内容以及响应时间进行比对,获取响应比对结果。
在本发明的一些示例性实施例中,基于前述方案,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中,包括:通过重放应用向所述被测应用发送所述第一测试请求;通过代理服务将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中。
根据本发明实施例的另一方面,提供一种应用测试系统,其中,所述系统包括:标记模块,配置为向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;重定向模块,配置为将所述被测应用发出的第二测试请求重定向到模拟应用中;返回模块,配置为通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;接收模块,配置为接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;获取模块,配置为基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
在本发明的一些示例性实施例中,基于前述方案,所述系统还包括:数据获取模块,配置为获取关联关系数据;所述数据获取模块,配置为对所述被测应用接收的第一请求、发送的第二请求、接收的所述第二请求的第二响应以及发送的所述第一请求的第一响应进行流量录制,获取分配有标识的所述第一请求、第一响应、第二请求以及第二响应的关联关系数据。
在本发明的一些示例性实施例中,基于前述方案,所述系统还包括:提取模块,配置为从所述关联关系数据中提取第一请求,以获取第一测试请求,所述第一测试请求中包括所述关联关系数据的标识。
在本发明的一些示例性实施例中,基于前述方案,所述返回模块,配置为将所述第二测试请求中的标识与所述关联关系数据进行匹配,获取与所述标识匹配的关联关系数据;从所述关联关系数据中提取第二响应,以获取所述第二测试响应;按照所述第二响应的响应时间将所述第二测试响应返回所述被测应用。
在本发明的一些示例性实施例中,基于前述方案,所述获取模块,配置为获取与所述第一测试请求中的标识对应的关联关系数据;将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果;将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果;基于所述请求比对结果以及所述响应比对结果获取所述被测应用的测试结果。
在本发明的一些示例性实施例中,基于前述方案,所述获取模块,配置为将所述第二测试请求与所述关联关系数据中的第二请求的内容以及发送时间进行比对,获取请求比对结果;所述获取模块,配置为:将所述第一测试响应与所述关联关系数据中的第一响应的内容以及响应时间进行比对,获取响应比对结果。
根据本发明实施例的再一方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现第一方面所述的方法步骤。
根据本发明实施例的再一方面,提供一种电子设备,其中,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面所述的方法步骤。
本发明实施例中,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;将所述被测应用发出的第二测试请求重定向到模拟应用中;通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。实现了模拟线上环境对应用测试,无需为测试搭建多个其他应用,一方面,降低了测试成本,提升了测试整体效率,另一方面,避免在对被测应用进行测试时,对其他应用的数据污染。再一方面,在网络层面进行其他应用的模拟,相比较于直接返回结果,提升了测试结果的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是根据一示例性实施例示出的一种应用测试方法的流程图;
图2是根据一示例性实施例示出的一种流量录制方法的流程图;
图3是根据一示例性实施例示出的一种应用测试的系统架构图;
图4是根据一示例性实施例示出的一种应用测试系统的结构示意图;
图5是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
下面结合具体的实施例,对本发明实施例提出的应用测试方法进行详细的说明。需要说明的是,执行本发明实施例的执行主体可以包括具有计算处理能力的装置执行,例如:服务器和/或终端设备,但本发明并不限于此。
需要指出的是,本发明实施例中的应用(如被测应用、重放应用、模拟应用)可以是集成于同一台终端的各个客户端,也可以是设置于不同终端的各个客户端。
图1是根据一示例性实施例示出的一种应用测试方法的流程图。
如图1所示,该方法可以包括但不限于以下步骤:
在S110中,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中。
本发明实施例中,预先对该被测应用的流量进行录制。具体的,对被测应用接收的第一请求、发送的第二请求、接收的所述第二请求的第二响应以及发送的所述第一请求的第一响应进行流量录制,获取分配有标识的所述第一请求、第一响应、第二请求以及第二响应的关联关系数据。
本发明实施例中,在流量被录制以后,在测试环境中重放,观察重放时的运行效果,以达到测试的目的(在流量回放的时候不应该对生产环境造成损伤)。
本发明实施例中,可以通过JavaAgent(Java代理)对发送到该被测应用的第一请求、该被测应用基于该第一请求而发起的第二请求、该被测应用接收的该第二请求的第二响应以及该被测应用返回的第一请求的第一响应进行流量录制,并为录制的该条数据分配标识,从而获取到分配有标识的所述第一请求、第一响应、第二请求以及第二响应的关联关系数据。其中,JavaAgent技术结合一些字节码增强技术,可以在不修改Java源代码的情况下,对Java的方法进行切入,可以在切入处实现调用参数、返回结果的捕获,也可以在切入处实现模仿mock,调用其他的代码以后直接返回(越过原本要执行的代码)。
需要指出的是,每条关联关系数据中可以包括一个标识,一个第一请求,多个第二请求,与第二请求数目相同的第二响应以及一个第一响应。
例如,表1为本发明实施例提供的部分关联关系数据的数据表:
表1
需要说明的是,关联关系数据中还可以包括第一请求、第二请求、第二响应以及第一响应的路径/服务名,方法,参数,异常返回值/正常返回值,请求/响应的消耗的时间等。
根据本发明实施例,在获取录制的关联关系数据后,从关联关系数据中提取第一请求,将该请求作为第一测试请求,以获取第一测试请求,该第一测试请求中包括JavaAgent为该关联关系数据分配的标识。例如,可以从关联关系数据中提取随机提取第一请求,作为第一测试请求。
需要说明的是,可以从多条关联关系数据中提取出多个第一请求,以获取到多个第一测试请求,利用多个第一测试请求对该被测应用的性能进行测试,例如,被测试应用在各种TPS(Transaction Per Second,每秒处理的消息数)下的表现,或者在指定时延范围内能够支持的最大TPS值,在被测应用过载的情况下,会产生什么样的表现,以及在过载被撤销以后,被测应用会在什么样的条件下恢复。
需要注意的是,相比于在第一请求被截获的位置进行第一请求回放,当回放过程中有第二请求被调用的,通过模仿mock技术直接通过录制数据返回的方案,本发明实施例中,通过网络协议的模拟,使被测应用的CPU、内存、网络IO都被产生了如真实环境一下的消耗,提升了测试结果的准确性,对环境的依赖小,便于部署,不仅能用于对被测应用进行功能验证,还能对被测应用进行性能验证(如处理大规模数据、请求的效率等)。
根据本发明实施例,可以通过重放应用向所述被测应用发送所述第一测试请求,并通过代理服务JavaAgent将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中。例如,可以从表1中提取第一请求H1作为第一测试请求,当被测应用基于该第一测试请求H1发起第二测试请求时,将该第一请求H1的标识Q1标记到该被测应用基于该第一测试请求H1发起的所有第二测试请求中。
需要说明的是,第一测试请求可以通过请求协议的扩展,在第一测试请求中携带上第一请求的标识。第二测试请求中标记的标识可以通过在第二测试请求的扩展机制上标记或者对第二测试请求进行非标准订制,以标记上第一测试请求的标识。
本发明实施例中,被测应用可以基于第一测试请求发出多个第二测试请求,每个第二测试请求中均标记有该第一测试请求中的也就是JavaAgent分配的标识。
根据本发明实施例,第一测试请求可以包括但不限于:超文本传输协议http请求,dubbo(java的分布式开源框架)接口请求,第二测试请求可以包括但不限于:http请求,dubbo接口请求,数据库请求,redis(一种key-value存储系统)请求等。第二测试请求为被测应用基于第一测试请求向其他应用发起的,例如,被测应用接收到下游应用(指被测应用的调用者、请求者,依赖于被测应用)发送的第一测试请求,被测应用为完成该第一测试请求,需要向上游应用(指被测应用完成请求所依靠的供应者,被测应用所依赖的应用)发送第二测试请求。
在S120中,将所述被测应用发出的第二测试请求重定向到模拟应用中。
本发明实施例中,在被测试应用向上游应用发送第二测试请求的时候,通过端口重定向技术,将网络连接转发到另外一个目的地上—模拟应用上,该模拟应用用于模拟上游应用提供的服务。
需要指出的是,模拟应用为针对多种类型的第二测试请求,开发出的网络协议兼容的模拟应用,可以用于模拟该被测应用的所有上游应用,在进行测试时,将被测应用发出的所有第二测试请求重定向到模拟应用,模拟应用模拟该被测应用的所有真实上游应用对第二测试请求进行响应。
本发明实施例中,无需为测试而搭建被测应用的真实上游应用,避免搭建真实上游应用而造成的高成本。而且,也不需要对被测应用进行修订,被测应用也不会感知连接被端口重定向,避免在对被测应用进行测试时,对其真实的上游应用的数据污染。
在S130中,通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用。
根据本发明实施例,可以将第二测试请求中的标识与关联关系数据进行匹配,获取与所述标识匹配的关联关系数据,从而从关联关系数据中提取第二响应,以获取所述第二测试响应,并按照所述第二响应的响应时间将所述第二测试响应返回所述被测应用。
根据本发明实施例,模拟应用在接收到被测应用发起的第二测试请求后,基于第二测试请求中的标识,与关联关系数据进行匹配,获取到与标识匹配的关联关系数据,从中提取第二响应,作为第二测试响应,并按照所述第二响应的响应时间将所述第二测试响应返回所述被测应用。
需要说明的是,关联关系数据中记录有第二响应的响应时间信息,在获取到第二响应后,按照该响应时间将第二测试响应返回给被测应用。
例如,第一测试请求包括的标识为Q1,被测应用发起的第二测试请求为h11、h12以及h13,则按照如表1所示的关联关系的数据表,获取到标识为Q1的所有第二请求与第二响应的对应关系,从中进一步提取到每个第二测试请求所对应的第二响应,作为第二测试响应,分别为a11、a12以及a13,则按照每个响应的响应时间将第二测试响应返回给被测应用,假设a11的响应时间为3秒,a12为2秒,a13为1秒,则模拟应用以接收到h11、h12以及h13的时间为起始点,延迟各自的响应时间将各个响应返回给被测应用。
上述实施例中,模拟了第二测试请求的响应时延,使得测试结果更准确。
需要说明的是,被测应用发起的第二测试请求还可以多于或者少于关联关系数据中的第二请求,例如,录制时间存在特定的第二请求,如与促销相关的请求,在测试时被测应用可能不会发起该第二测试请求,因此,测试时被测应用发起的第二测试请求与关联关系数据中的第二请求不对应。
在S140中,接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应。
根据本发明实施例,被测应用接收到第二测试响应后,对第二测试响应进行处理,例如,统计、计算等,生成第一测试响应,并将第一测试响应返回给重放应用。
在S150中,基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
本发明实施例中,在对被测应用进行测试时也进行流量录制,记录第一测试请求、第二测试请求、第二测试响应以及第一测试响应的数据流量。
根据本发明实施例,在被测应用返回第一测试响应后,获取与所述第一测试请求中的标识对应的关联关系数据,将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果,将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果,基于所述请求比对结果以及所述响应比对结果获取所述被测应用的测试结果。
根据本发明实施例,在将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果时,可以将所述第二测试请求与所述关联关系数据中的第二请求的内容以及发送时间进行比对,获取请求比对结果。在将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果时,可以将所述第一测试响应与所述关联关系数据中的第一响应的内容以及响应时间进行比对,获取响应比对结果。
例如,第一测试请求包括的标识为Q1,被测应用发起的第二测试请求为h11、h12以及h13,被测应用返回的第一测试响应为A1,通过查找关联关系数据,确定标识为Q1的第一请求对应的第二请求也为h11、h12以及h13,被测应用发起的各第二测试请求的发送时间与关联关系数据中记录的被测应用发起的各第二请求的发送时间均延迟1秒,则请求比对结果为:第二测试请求与第二请求内容相同,发送时间均延迟1秒。而第一响应也为A1,且响应时间相同,则响应比对结果为:第一测试响应与第一响应内容相同,响应时间相同。测试结果具体可以为:第二测试请求与第二请求内容相同,发送时间均延迟1秒;第一测试响应与第一响应内容相同,响应时间相同。
本发明实施例中,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;将所述被测应用发出的第二测试请求重定向到模拟应用中;通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。实现了模拟线上环境对应用测试,无需为测试搭建多个其他应用,一方面,降低了测试成本,提升了测试整体效率,另一方面,避免在对被测应用进行测试时,对其他应用的数据污染。再一方面,在网络层面进行其他应用的模拟,相比较于直接返回结果,使被测应用的CPU、内存、网络IO都被产生了如真实环境一下的消耗,提升了测试结果的准确性。
在一个实施例中,当被测应用发起的第二测试请求多于或者少于关联关系数据中的第二请求时,依然按照关联关系数据返回第二测试响应。例如,当上述示例中,第二测试请求不存在h13,则依然返回a13,若第二测试请求中还包括h14,由于关联关系数据中并不存在h14对应的第二响应,则不需要返回其对应的第二测试响应。
上述实施例中,通过将第二测试请求中的标识与关联关系数据进行匹配,按照关联关系数据返回第二测试响应,使得被测应用不会因发送的第二测试请求存在错误而导致测试终止,提升了测试的连续性。
本发明通过java代理的方式在线上录制第一请求与对应的第二请求的流量。在测试环境中通过重放应用将录制的流量重放,在重放期间将所有第二请求重定向到模拟应用中,模拟应用根据录制的第二请求的响应数据进行请求应答,期间还模拟了请求应答的时延,使被测试程序在不做修改的情况下达到线上运行的模拟效果。对请求的应答进行比对和统计,以反映被测试程序的正确性,性能和问题。
在一个实施例中,可以通过以下流程实现对被测应用的流量进行录制。图2是根据一示例性实施例示出的一种流量录制方法的流程图。
如图2所示,该方法可以包括但不限于:
在S210中,通过JavaAgent对被测应用的第一请求进行第一请求数据录制。其中,该第一请求数据包括:第一请求、第一响应的路径/服务名,方法,参数,异常返回值/正常返回值,请求/响应的消耗的时间等。
在S220中,通过JavaAgent,对线上应用的第二请求进行第二请求数据录制。其中,该第二请求数据包括:第二请求、第二响应的路径/服务名,方法,参数,异常返回值/正常返回值,请求/响应的消耗的时间等。
在S230中,将第一请求数据与第二请求数据关联存储,获取关联关系数据。
在S240中,为每条关联关系数据分配标识。
图3是根据一示例性实施例示出的一种应用测试的系统架构图。如图3所示,该系统中可以包括:
录制模块,可以从线上应用(被测应用的上游应用以及下游应用中),收集被测应用接收的第一请求以及发送的第二请求,并进行流量录制,并将包括标识的录制数据存储到存储模块中。
存储模块,可以保存来自录制模块的录制数据,以供后续重放模块按照第一测试请求的标识来拉取录制数据。通过存储模块可以实现将长时间录制的请求在短时间内回放而形成压力效果,以实现对被测应用的性能测试。
重放模块:通过录制数据存储模块加载录制数据,然后支持并发的向被测应用发送第一测试请求,并且通过第一测试请求协议的扩展,在请求中携带上请求的标识。重放模块还可以支持对第一测试请求的应答与录制数据比对,来检查与录制数据的一致性,和统计出被测应用的性能。
流量标签透传模块:通过JavaAgent将被测应用中,第一测试请求的标识标记在所有的第二测试请求上(通过第二测试请求的协议扩展或者对第二测试请求的协议进行定制)。
重定向模块:控制被测应用的第二测试请求连接,将第二测试请求的连接重定向到模拟应用上,使被测应用“误以为”是在访问真正的上游应用。
模拟应用:通过兼容的网络协议,模拟各种第二测试请求的上游应用。根据协议中携带的第二测试请求标识来匹配第一请求,再在第一请求中匹配第二请求。匹配到第二请求以后,模拟应用会根据录制数据模拟第二请求的时延,并根据录制数据对第二测试请求进行响应。
需要说明的是,重放模块以及模拟应用为了避免同步录制数据而造成的开销,可以在一个进程中实现(合并成一个可执行程序)。
如图3所示,流量走向为:从线上应用中对被测应用接收的第一请求以及发送的第二请求进行流量录制,并将包括标识的录制数据存储到存储模块中。重放系统(限容器环境内)内的重放应用从存储模块中获取第一测试请求(带标识),并发送至被测应用。其中,第一测试请求可以包括:超文本传输协议http请求,dubbo(java的分布式开源框架)接口请求。被测应用通过流量标签透传模块将标识标记到被测应用基于第一测试请求发起的第二测试请求中,其中,第二测试请求可以包括但不限于:http请求,dubbo接口请求,数据库(Mysql)请求,redis(一种key-value存储系统)请求,Java请求。第二测试请求基于重定向模块,通过IP信息包过滤系统(iptables)+协议栈将第二测试请求重定向到模拟应用。模拟应用与重放应用共享存储模块内的录制数据。接下来(以下流程可能未体现在图3中),模拟应用查找到对应的第二测试响应,并返回给被测应用,被测应用向重放应用返回第一测试响应。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。
下述为本发明装置实施例,可以用于执行本发明方法实施例。在下文对系统的描述中,与前述方法相同的部分,将不再赘述。
图4是根据一示例性实施例示出的一种应用测试系统的结构示意图,其中,所述系统400包括:
标记模块410,配置为向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中。
重定向模块420,配置为将所述被测应用发出的第二测试请求重定向到模拟应用中。
返回模块430,配置为通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用。
接收模块440,配置为接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应。
获取模块450,配置为基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
本发明实施例中,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;将所述被测应用发出的第二测试请求重定向到模拟应用中;通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。实现了模拟线上环境对应用测试,无需为测试搭建多个其他应用,一方面,降低了测试成本,提升了测试整体效率,另一方面,避免在对被测应用进行测试时,对其他应用的数据污染。再一方面,在网络层面进行其他应用的模拟,相比较于直接返回结果,提升了测试结果的准确性。
图5是根据一示例性实施例示出的一种电子设备的结构示意图。需要说明的是,图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的终端中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括标记模块、重定向模块、返回模块、接收模块以及获取模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
以上具体示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种应用测试方法,其特征在于,所述方法包括:
向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;
将所述被测应用发出的第二测试请求重定向到模拟应用中;
通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;
接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;
基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:获取关联关系数据;
获取关联关系数据,包括:
对所述被测应用接收的第一请求、发送的第二请求、接收的所述第二请求的第二响应以及发送的所述第一请求的第一响应进行流量录制,获取分配有标识的所述第一请求、第一响应、第二请求以及第二响应的关联关系数据。
3.如权利要求2所述的方法,其特征在于,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一请求发出的第二测试请求中之前,所述方法还包括:
从所述关联关系数据中提取第一请求,以获取第一测试请求,所述第一测试请求中包括所述关联关系数据的标识。
4.如权利要求2所述的方法,其特征在于,通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用,包括:
将所述第二测试请求中的标识与所述关联关系数据进行匹配,获取与所述标识匹配的关联关系数据;
从所述关联关系数据中提取第二响应,以获取所述第二测试响应;
按照所述第二响应的响应时间将所述第二测试响应返回所述被测应用。
5.如权利要求2所述的方法,其特征在于,基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果,包括:
获取与所述第一测试请求中的标识对应的关联关系数据;
将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果;
将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果;
基于所述请求比对结果以及所述响应比对结果获取所述被测应用的测试结果。
6.如权利要求5所述的方法,其特征在于,将所述第二测试请求与所述关联关系数据中的第二请求进行比对,获取请求比对结果,包括:
将所述第二测试请求与所述关联关系数据中的第二请求的内容以及发送时间进行比对,获取请求比对结果;
将所述第一测试响应与所述关联关系数据中的第一响应进行比对,获取响应比对结果,包括:
将所述第一测试响应与所述关联关系数据中的第一响应的内容以及响应时间进行比对,获取响应比对结果。
7.如权利要求1所述的方法,其特征在于,向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中,包括:
通过重放应用向所述被测应用发送所述第一测试请求;
通过代理服务将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中。
8.一种应用测试系统,其特征在于,所述系统包括:
标记模块,配置为向被测应用发送第一测试请求,将所述第一测试请求中的标识标记到所述被测应用基于所述第一测试请求发出的第二测试请求中;
重定向模块,配置为将所述被测应用发出的第二测试请求重定向到模拟应用中;
返回模块,配置为通过所述模拟应用从关联关系数据中获取到所述第二测试请求中的标识对应的第二测试响应,并将所述第二测试响应返回所述被测应用;
接收模块,配置为接收所述被测应用基于所述第二测试响应返回的所述第一测试请求对应的第一测试响应;
获取模块,配置为基于所述第一测试响应以及所述第二测试请求获取所述被测应用的测试结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911271046.6A CN111045942A (zh) | 2019-12-12 | 2019-12-12 | 应用测试方法、系统、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911271046.6A CN111045942A (zh) | 2019-12-12 | 2019-12-12 | 应用测试方法、系统、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111045942A true CN111045942A (zh) | 2020-04-21 |
Family
ID=70235909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911271046.6A Pending CN111045942A (zh) | 2019-12-12 | 2019-12-12 | 应用测试方法、系统、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045942A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769941A (zh) * | 2021-01-14 | 2021-05-07 | 中国工商银行股份有限公司 | 分布式系统流量切换验证方法和装置 |
CN113094290A (zh) * | 2021-05-21 | 2021-07-09 | 珠海金山网络游戏科技有限公司 | 程序测试系统及方法 |
CN113326184A (zh) * | 2021-05-11 | 2021-08-31 | 前海飞算云智软件科技(深圳)有限公司 | 接口测试方法、装置、存储介质及电子设备 |
CN114500674A (zh) * | 2022-03-22 | 2022-05-13 | 康键信息技术(深圳)有限公司 | 分布式系统数据透传方法、装置、存储介质及系统 |
WO2024104535A1 (en) * | 2022-11-17 | 2024-05-23 | Maersk A/S | A method for enabling an electronic device to test a program in a performance testing environment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622296A (zh) * | 2012-02-21 | 2012-08-01 | 百度在线网络技术(北京)有限公司 | 搜索引擎模块的测试方法、系统及其装置 |
CN107171889A (zh) * | 2017-05-27 | 2017-09-15 | 北京金山安全软件有限公司 | 网络应用接口的测试方法、装置及电子设备 |
CN108170612A (zh) * | 2018-01-23 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 一种自动化测试方法、装置及服务器 |
CN109271325A (zh) * | 2018-10-26 | 2019-01-25 | 携程旅游网络技术(上海)有限公司 | 应用的测试方法、系统、电子设备和存储介质 |
CN110445670A (zh) * | 2019-06-26 | 2019-11-12 | 网宿科技股份有限公司 | 一种服务器加速服务效果的测试方法及系统 |
-
2019
- 2019-12-12 CN CN201911271046.6A patent/CN111045942A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622296A (zh) * | 2012-02-21 | 2012-08-01 | 百度在线网络技术(北京)有限公司 | 搜索引擎模块的测试方法、系统及其装置 |
CN107171889A (zh) * | 2017-05-27 | 2017-09-15 | 北京金山安全软件有限公司 | 网络应用接口的测试方法、装置及电子设备 |
CN108170612A (zh) * | 2018-01-23 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 一种自动化测试方法、装置及服务器 |
CN109271325A (zh) * | 2018-10-26 | 2019-01-25 | 携程旅游网络技术(上海)有限公司 | 应用的测试方法、系统、电子设备和存储介质 |
CN110445670A (zh) * | 2019-06-26 | 2019-11-12 | 网宿科技股份有限公司 | 一种服务器加速服务效果的测试方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769941A (zh) * | 2021-01-14 | 2021-05-07 | 中国工商银行股份有限公司 | 分布式系统流量切换验证方法和装置 |
CN113326184A (zh) * | 2021-05-11 | 2021-08-31 | 前海飞算云智软件科技(深圳)有限公司 | 接口测试方法、装置、存储介质及电子设备 |
CN113326184B (zh) * | 2021-05-11 | 2022-05-17 | 前海飞算云智软件科技(深圳)有限公司 | 接口测试方法、装置、存储介质及电子设备 |
CN113094290A (zh) * | 2021-05-21 | 2021-07-09 | 珠海金山网络游戏科技有限公司 | 程序测试系统及方法 |
CN113094290B (zh) * | 2021-05-21 | 2024-02-23 | 珠海金山数字网络科技有限公司 | 程序测试系统及方法 |
CN114500674A (zh) * | 2022-03-22 | 2022-05-13 | 康键信息技术(深圳)有限公司 | 分布式系统数据透传方法、装置、存储介质及系统 |
WO2024104535A1 (en) * | 2022-11-17 | 2024-05-23 | Maersk A/S | A method for enabling an electronic device to test a program in a performance testing environment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111045942A (zh) | 应用测试方法、系统、存储介质及电子设备 | |
CN107391359B (zh) | 一种业务测试方法及装置 | |
CN108984389B (zh) | 一种应用程序测试方法及终端设备 | |
CN109857404B (zh) | Sdk接口的封装方法及装置、存储介质、电子设备 | |
CN111858296B (zh) | 接口测试方法、装置、设备和存储介质 | |
CN111597110B (zh) | 页面测试方法、装置、电子设备及存储介质 | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
CN113076251A (zh) | 测试方法和装置 | |
CN116627849B (zh) | 系统测试方法、装置、设备及存储介质 | |
CN112860538B (zh) | 基于线上日志进行接口回归测试的方法和装置 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN107247661B (zh) | 支持对应用的安装包进行自动化验证的方法和系统 | |
CN115016995A (zh) | 接口测试方法、计算机设备及计算机存储介质 | |
CN114416597A (zh) | 测试用例记录的生成方法和装置 | |
US11074069B2 (en) | Replaying interactions with transactional and database environments with re-arrangement | |
CN115276968A (zh) | 一种第三方平台http回调分发方法、系统、电子设备和存储介质 | |
CN111159003B (zh) | 一种批处理测试方法及装置 | |
CN110471708B (zh) | 基于可重用组件的配置项获取的方法及装置 | |
CN110532186B (zh) | 利用验证码进行测试的方法、装置、电子设备和存储介质 | |
CN113238940A (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN110365627B (zh) | 应用程序同步方法、装置、计算设备以及存储介质 | |
CN113760715A (zh) | 一种对系统进行测试的方法和装置 | |
CN112948195A (zh) | 接口测试的方法、装置、电子设备和存储介质 | |
CN112131611A (zh) | 数据正确性验证方法、装置、设备、系统及存储介质 | |
CN110851254A (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 |