CN112637005B - 流量回放方法、装置、计算机设备和存储介质 - Google Patents

流量回放方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN112637005B
CN112637005B CN202011444326.5A CN202011444326A CN112637005B CN 112637005 B CN112637005 B CN 112637005B CN 202011444326 A CN202011444326 A CN 202011444326A CN 112637005 B CN112637005 B CN 112637005B
Authority
CN
China
Prior art keywords
flow
request
traffic
sub
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.)
Active
Application number
CN202011444326.5A
Other languages
English (en)
Other versions
CN112637005A (zh
Inventor
陈剑君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Pinwei Software Co Ltd
Original Assignee
Guangzhou Pinwei Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN202011444326.5A priority Critical patent/CN112637005B/zh
Publication of CN112637005A publication Critical patent/CN112637005A/zh
Application granted granted Critical
Publication of CN112637005B publication Critical patent/CN112637005B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种流量回放方法、装置、计算机设备和存储介质,所述方法包括:识别待回放流量的目标服务请求;获取目标服务请求的服务请求接口的目标请求流量;获取目标服务请求的子调用请求的中间件流量;将目标请求流量以及中间件流量进行流量回放。上述方法能够实现将服务请求的完整流量进行流量回放。

Description

流量回放方法、装置、计算机设备和存储介质
技术领域
本申请涉及流量处理技术领域,特别是涉及一种流量回放方法、装置、计算机设备和存储介质。
背景技术
目前基于各种协议的业务服务接口中,根据业务逻辑的操作行为将接口分为读接口和写接口。读接口的主要操作逻辑为:接口业务逻辑中对业务数据仅做读取操作,不进行任何数据变更。写接口的主要操作逻辑为:接口业务逻辑中对业务数据有变更,对业务数据存在新增、修改、删除行为,不具备重复执行的条件。
一般对接口流量录制以及流量回放的操作中,只针对读接口进行相同环境下的入口服务的流量录制以及回放,难以满足不同环境的读接口流量录制以及回放,或相同/不同环境的写接口流量录制以及回放。主要瓶颈在于流量录制阶段缺少记录用于记录业务原始数据状态的中间件数据流量,进而导致针对不同环境的读接口和/或所有环境的写接口的流量回放时缺少原始外部数据而造成无法回放完整的服务请求。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现将服务请求的完整流量进行流量回放的流量回放方法、装置、计算机设备和存储介质。
一种流量回放方法,该方法包括:识别待回放流量的目标服务请求;获取目标服务请求的服务请求接口的目标请求流量;获取目标服务请求的子调用请求的中间件流量;将目标请求流量以及中间件流量进行流量回放。
在其中一个实施例中,获取目标服务请求的服务请求接口的目标请求流量,包括:识别目标服务请求的第一流量类型;获取服务请求接口的多个服务请求的待处理请求流量,多个服务请求包括目标服务请求;根据第一流量类型从待处理请求流量中筛选目标请求流量,以获得目标请求流量。
在其中一个实施例中,获取目标服务请求的子调用请求的中间件流量,包括:获取子调用请求的第二流量类型以及目标服务请求的链路标识信息;根据第二流量类型和链路标识信息获取子调用请求的中间件流量。
优选地,根据第二流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型识别目标服务请求的服务进程的拦截位置;在拦截位置注入拦截代码,拦截代码用于拦截子调用请求的请求入参;根据请求入参以及链路标识信息从存储空间中获取录制流量中请求入参对应的响应返参;将请求入参和响应返参作为子调用请求的中间件流量。
在其中一个实施例中,根据流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,多个待选流量包括中间件流量;若根据流量匹配结果确定出多个待选流量中的一条子调用流量,将子调用流量作为中间件流量;若根据流量匹配结果确定出多个待选流量中的多条子调用流量,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将匹配成功的子调用流量作为所述中间件流量。
在其中一个实施例中,第一入参为多个,一种流量回放方法还包括:接收参数过滤指示,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参;将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,包括:将目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
在其中一个实施例中,将目标请求流量以及中间件流量进行流量回放,包括:识别目标服务请求的流量回放环境;将目标请求流量以及中间件流量调用到流量回放环境进行流量回放。
在其中一个实施例中,一种流量回放方法还包括:获取流量回放得到的测试结果信息;获取录制目标请求流量以及中间件流量时记录的录制结果信息;将测试结果信息与录制结果信息进行匹配;若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息;若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。
在其中一个实施例中,一种流量回放方法还包括:获取服务请求接口的目标服务请求的多个第一待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第一待处理流量进行流量筛选,从多个第一待处理流量中筛选出第一有效流量;获取目标服务请求的服务请求接口的目标请求流量,包括:从第一有效流量中获取目标请求流量;
和/或,一种流量回放方法还包括:获取子调用请求的多个第二待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第二待处理流量进行流量筛选,从多个第二待处理流量中筛选出第二有效流量;获取目标服务请求的子调用请求的中间件流量,包括:从第二有效流量中获取中间件流量。
一种流量回放装置,该装置包括:识别模块,用于识别待回放流量的目标服务请求;第一获取模块,用于获取目标服务请求的服务请求接口的目标请求流量;第二获取模块,用于获取目标服务请求的子调用请求的中间件流量;回放模块,用于将目标请求流量以及中间件流量进行流量回放。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述流量回放方法、装置、计算机设备和存储介质,服务器接收到流量回放请求时,识别待回放流量的目标服务请求,进一步获取目标服务请求的服务请求接口的目标请求流量以及目标服务请求的子调用请求的中间件流量,最终将目标请求流量以及中间件流量进行流量回放。因此,在执行流量回放时,不仅能够获取到读接口中服务请求接口的目标服务请求的目标请求流量,还能获取到各个写接口中处理目标服务请求的子调用请求的中间件的中间件流量,从而使得在回放目标服务请求的流量时,能够回放目标服务请求的完整的流量,避免因缺少目标服务请求的中间件的数据流量而导致服务请求的流量回放失败。
附图说明
图1为一个实施例中一种流量回放方法的应用环境图;
图2为一个实施例中一种流量回放方法的流程示意图;
图3为一个实施例中获取目标请求流量的代码实现的示意图;
图4为一个实施例中获取中间件流量的代码实现的示意图;
图5为一个实施例中子调用请求的流量获取的代码实现的示意图;
图6为另一个实施例中子调用请求的流量获取的代码实现的示意图;
图7为一个实施例中参数过滤功能的代码实现的示意图;
图8为一个实施例中流量回放测试执行器的代码实现的示意图;
图9为一个实施例中流量回放失败时的回放测试失败信息的示意图;
图10为一个实施例中流量回放成功时的回放通过信息的示意图;
图11为一个具体实施例中一种流量回放方法的流程示意图;
图12为一个实施例中一种流量回放装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种流量回放方法,应用于如图1所示的应用环境中。流量回放系统10用于实现本申请的一种流量回放方法。服务器102用于实现本申请的流量录制与流量回放。其中,通过在服务器102上安装包含实现流量录制的程序模块和实现流量回放的程序模块的程序包以使得该服务器102具备流量录制功能和流量回放功能。实现流量录制的程序模块独立实现流量录制功能,实现流量回放的程序模块独立实现流量回放功能。流量分析服务器104用于分析和存储已经录制的目标服务请求的服务请求接口的目标请求流量,以及分析和存储已经录制的录制目标服务请求的子调用请求的中间件流量。其中,目标服务请求的服务请求接口的目标请求流量和子调用请求的中间件流量由服务器102进行流量录制得到。服务器102在处理流量录制时,将录制得到的目标请求流量和中间件流量发送到流量分析服务器104中已进行存储。
当服务器102接收到终端106发送的回放目标服务请求的流量的指示时,从流量分析服务器104中获取目标服务请求的服务请求接口的目标请求流量以及获取目标服务请求的子调用请求的中间件流量,将目标请求流量以及中间件流量进行流量回放处理。因此,在回放目标服务请求的流量时,能够回放目标服务请求的完整的流量,避免因缺少目标服务请求的中间件的数据流量而导致服务请求的流量回放失败。
针对服务器102,还需要说明的是:服务器102不仅用于流量录制与流量回放,还用于处理目标服务请求。也即是,服务器102在接收目标服务请求时,对目标服务请求进行处理。如,服务器102通过服务请求接口接收目标服务请求,并在处理目标服务请求时根据请求处理需求向中间件发送子调用请求以获取中间件的数据。此时,服务器102对处理目标服务请求产生的流量记录进行录制,进而对录制的流量进行回放。
在一个实施例中,如图2所示,提供了一种流量回放方法,以该方法应用于图1中的流量回放系统10为例进行说明,包括以下步骤:
S102,识别待回放流量的目标服务请求。
在本实施例中,服务器102可以回放用户指定播放的目标服务请求的流量。具体地,用户通过终端向服务器102发送用于指示播放目标服务请求的流量的指令。服务器102接收到指令时,根据指令识别出待回放流量的目标服务请求。其中,目标服务请求可以指代任一服务类型的请求,也可以指代任一服务接口接收到的请求。例如,目标服务请求为请求查询订单信息这一服务类型的请求,或者目标服务请求为OSP(venus-osp,开放服务平台)服务接口接收到的请求。
S104,获取目标服务请求的服务请求接口的目标请求流量。
在本实施例中,目标服务请求的服务请求接口指的是服务器102中用于接收目标服务请求的接口。一般地,目标服务请求的服务请求接口为服务器102的读接口。目标服务请求的服务请求接口的目标请求流量指的是:通过该服务请求接口接收目标服务请求的目标请求流量。目标请求流量指的是:目标服务请求在服务请求接口产生的流量。例如,目标服务请求为OSP服务请求,服务请求接口为服务器102中用于接收OSP服务请求的接口,目标请求流量指的是服务器102中通过该服务请求接口接收OSP服务请求产生的流量,如OSP服务请求的入参和返参。服务器102录制目标请求流量后,将目标请求流量发送到流量分析服务器104中进行存储。
服务器102在执行流量回放时,服务器102从流量分析服务器104中获取目标请求流量。获取的方式可以是:获取目标服务请求的标识信息,该标识信息可以是服务器102对目标请求流量进行流量录制时设置的标志,流量分析服务器104中存储的目标请求流量中记录有该标识信息。进而,通过标识信息服务器102从流量分析服务器104中拉取目标服务请求的目标请求流量。此外,该标识信息还可以是目标服务请求的入参。服务器102在执行流量回放时,从服务请求接口中拦截目标服务请求的流量得到目标服务请求的入参,进而通过该入参从流量分析服务器104中拉取目标服务请求的目标请求流量。
S106,获取目标服务请求的子调用请求的中间件流量。
在本实施例中,服务器102接收到目标服务请求时,根据目标服务请求的处理需求,通过子调用请求的接口向中间件发送子调用请求,以向中间件请求获取对应的数据信息。同时,通过子调用请求的接口接收中间件向服务器102反馈对应的数据信息。一般地,子调用请求的接口为写接口。其中,中间件可以是一个或多个数据库。在服务器102向中间件发送子调用请求以及中间件向服务器102反馈对应的数据信息的过程中,产生目标服务请求的子调用请求的中间件流量。例如,中间件流量包括子调用请求的调用参数相关的流量,以及子调用请求的返参相关的流量。服务器102通过在对应的子调用请求的接口进行流量拦截可获得目标服务请求的子调用请求的中间件流量,并将中间件流量发送到流量分析服务器104中。
服务器102在执行流量回放时,从流量分析服务器104中获取目标服务请求的子调用请求的中间件流量。获取的方式可以是:获取目标服务请求的标识信息,该标识信息可以是服务器102对子调用请求的中间件流量进行流量录制时设置的标志。流量分析服务器104存储的子调用请求的中间件流量中记录有该标识信息。进而,服务器102通过标识信息从流量分析服务器104中拉取目标服务请求的子调用请求的中间件流量。此外,该标识信息还可以是子调用请求的入参。服务器102通过从子调用请求的接口中拦截子调用请求的流量得到子调用请求的入参,进而通过该入参从流量分析服务器104中拉取子调用请求的中间件流量。
S108,将目标请求流量以及中间件流量进行流量回放。
在本实施例中,服务器102将获取到的目标请求流量以及中间件流量进行流量回放。流量回放的方式可以是:服务器102配置目标服务请求的回放环境,将目标请求流量以及中间件流量作为测试用例调用到回放环境中进行流量回放。具体地,流量回放过程中,可以将目标服务请求的目标请求流量作为独立的测试用例进行流量回放。在执行该目标请求流量的测试用例过程,由于目标服务请求的业务处理中发起对其他中间件的子调用请求时,再将子调用请求的中间件流量进行回放。例如,对OSP服务请求的请求流量作为独立测试用例进行流量回放,并对流量回放过程的流量打上与录制阶段一致的业务链路标记traceId。在执行OSP服务请求的请求流量的测试用例过程,由OSP服务请求的业务处理中发起其他中间件的子调用时,将子调用请求的中间件流量进行流量回放。因此,在流量回放过程中,可以准确观测到目标服务请求以及各子调用请求的流量信息。当流量回放失败时,也可以清楚的观看到流量回放失败的节点。
上述流量回放方法,服务器接收到流量回放请求时,识别待回放流量的目标服务请求,进一步获取目标服务请求的服务请求接口的目标请求流量以及目标服务请求的子调用请求的中间件流量,最终将目标请求流量以及中间件流量进行流量回放。因此,在执行流量回放时,服务器102不仅能够获取到读接口中服务请求接口的目标服务请求的目标请求流量,还能获取到各个写接口中处理目标服务请求的子调用请求的中间件的中间件流量,从而使得在回放目标服务请求的流量时,能够回放目标服务请求的完整的流量,避免因缺少目标服务请求的中间件的数据流量而导致服务请求的流量回放失败。
在一实施例中,S104包括:识别目标服务请求的第一流量类型;获取服务请求接口的多个服务请求的待处理请求流量,多个服务请求包括目标服务请求;根据第一流量类型从待处理请求流量中筛选目标请求流量,以获得目标请求流量。
在该实施例中,服务器102中的目标服务请求的服务请求接口用于接收多个服务请求的待处理请求流量。服务器102从服务请求接口中录制各个服务请求的待处理请求流量,并采用流量类型对待处理请求流量进行标识,并对待处理请求流量进行存储。在执行流量回放时,服务器102识别目标服务请求的第一流量类型,通过第一流量类型从录制得到的待处理请求流量中筛选目标请求流量。例如,目标服务请求为OSP服务请求。服务请求接口为入口请求接口。服务器102从入口请求接口中录制多个服务请求的待处理请求流量。在执行流量回放时,服务器102通过第一流量类型的OSP字段信息从待处理请求流量筛选出OSP服务请求的目标请求流量,其目标请求流量可包含DataType.OSP标识信息。获取目标请求流量的代码实现如图3所示。因此,可提高目标请求流量的筛选的准确度。
在一实施例中,S106包括:获取子调用请求的第二流量类型以及目标服务请求的链路标识信息;根据第二流量类型和链路标识信息获取子调用请求的中间件流量。
在该实施例中,服务器102录制目标服务请求相关的子调用请求的中间件流量,并对中间件流量设置第二流量类型。第二流量类型用于指示子调用请求的中间件的流量属性,如中间件为MemCache数据库,第二流量类型为MemCache流量类型。此外,目标服务请求设置有链路标识信息,服务器102在处理目标服务请求产生的流量中均标注该链路标识信息,通过该链路标识信息可识别出目标服务请求相关的流量。例如,链路标识信息可以是字符串。在执行流量回放过程,服务器102通过第二流量类型和链路标识信息从流量分析服务器104获取子调用请求的中间件流量。获取中间件流量的代码实现如图4所示。例如,服务器102通过第二流量类型从子调用请求的子调用请求接口的子调用流量中筛选出待处理子调用流量,再根据链路标识信息从待处理子调用流量中筛选出目标服务请求相关的子调用请求的中间件流量。因此,服务器102可筛选出目标服务请求相关的子调用请求的中间件流量。
优选地,根据第二流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型识别目标服务请求的服务进程的拦截位置;在拦截位置注入拦截代码,拦截代码用于拦截子调用请求的请求入参;根据请求入参以及链路标识信息从存储空间中获取录制流量中请求入参对应的响应返参;将请求入参和响应返参作为子调用请求的中间件流量。
在该实施例中,服务器102在执行流量录制时,录制子调用请求的中间件流量包含子调用请求的入参和返参。当服务器102在执行流量回放时,拦截子调用请求的入参,也即是子调用请求的请求入参。通过请求入参从存储空间中获取录制流量中请求入参对应的响应返参,此处的响应返参也即是录制流量中子调用请求的返参,以得到子调用请求的中间件流量。其中,此处的存储空间可以是流量分析服务器104中用于存储中间件流量的存储空间。具体地,通过请求入参与录制流量中的入参进行匹配识别,识别出子调用请求的中间件流量。同时,在匹配识别过程,还基于链路标识信息进行匹配识别。因此,服务器102在流量回放时能够准确回放目标服务请求的中间件流量,实现模拟子调用请求的实际返回结果为录制结果,从而使得目标服务请求的外部数据条件在回放阶段与录制阶段保持一致。
在一实现方式中,拦截代码用于拦截子调用请求的请求入参和请求返参。将请求入参和响应返参作为子调用请求的中间件流量,包括:通过拦截代码将请求返参修改为响应返参后,将请求入参和响应返参作为子调用请求的中间件流量。
在该实现方式中,服务器102通过拦截代码拦截到请求入参和请求返参,并通过请求入参从存储空间中获取录制时记录的录制流量中的请求入参对应的响应返参,将请求返参修改为响应返参后,返回请求入参和响应返参,并将请求入参和响应返参设置为中间件流量。
例如,在识别OSP服务请求的子调用请求的流量请求中,通过AOP(AspectOriented Programming,面向切面编程)在服务器102的OSP服务进程中拦截所有的子调用请求的流量并进行返回值修改。此处,子调用请求的流量包括请求入参和请求返参,返回值修改指的是将请求返参修改为录制子调用请求时的返参。其中,通过AOP在服务器102的OSP服务进程中的拦截各个子调用请求的方式为:
外部OSP服务的子调用请求:流量拦截和修改返回值的接口拦截位置为:
请求参数:com.vip.osp.core.filter.client.send.ClientSendMessageFilter;
响应报文:com.vip.osp.core.filter.client.receive.ClientReceiveMessageFilter;
MySQL数据库的子调用请求:流量拦截的接口拦截位置为:
请求参数/响应报文:org.apache.ibatis.binding.MapperMethod;
Redis数据库的子调用请求:流量拦截的接口拦截位置为:
请求参数/响应报文:redis.clients.jedis.Jedis、redis.clients.jedis.BinaryJedis;
MemCache系统的子调用请求:流量拦截的接口拦截位置为:
请求参数/响应报文:net.rubyeye.xmemcached.XMemcachedClient、net.spy.memcached.MemcachedClient。
此处的请求参数指的是子调用请求的请求入参,响应报文指的是子调用请求的请求返参。修改返回值指的是将响应报文进行修改,修改为录制阶段时得到的请求参数对应的响应报文。
因此,实现了模拟子调用请求的实际返回结果为录制结果,从而使得目标服务请求的外部数据条件在回放阶段与录制阶段保持一致。
在一实施例中,根据流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,多个待选流量包括中间件流量;若根据流量匹配结果确定出多个待选流量中的一条子调用流量,将子调用流量作为中间件流量;若根据流量匹配结果确定出多个待选流量中的多条子调用流量,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将匹配成功的子调用流量作为中间件流量。
在该实施中,服务器102根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配。匹配的方式可以是:先根据第二流量类型对多个待选流量进行匹配,筛选出第二流量类型的第一流量。进一步地,从第一流量中筛选出包含链路标识信息的第二流量。当第二流量为多条子调用流量时,再根据子调用请求的第一入参进行再次匹配。当第二流量为一条子调用流量时,无需再执行匹配操作。
此外,在流量匹配过程中,还可包括:获取子调用请求中的service方法和method方法。根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,包括:根据第二流量类型、链路标识信息以及service方法和method方法对子调用请求的多个待选流量进行流量匹配。
服务器102在子调用请求的中间件流量的匹配过程中,按照子调用请求的流量类型type、业务的链路标识traceId、子调用请求的调用类service、调用方法method以及调用参数进行严格匹配,保证流量回放阶段的外部数据与录制流量阶段的外部数据条件保持一致。在该实施例中,当根据第二流量类型、链路标识信息以及service方法和method方法对子调用请求的多个待选流量进行流量匹配,得到一条子调用流量时将子调用流量作为中间件流量,此时不再执行子调用请求的调用参数的匹配。由于只有一条子调用流量,若再执行调用参数的匹配操作,有可能出现匹配不成功的情况而导致数据流量调用不成功,此时不再执行子调用请求的调用参数的匹配能够提高流量的匹配成功率。另外,在动态数据场景中,子调用请求的调用参数动态变化比较频繁,若匹配得到一条子调用流量时还执行后续的调用参数的匹配操作,容易导致数据流量调用不成功。因此,不再执行子调用请求的调用参数的匹配能够兼容绝大部分动态数据场景。例如,当且仅当同时满足流量记录中traceId,service,method完全一致且子调用请求中对应的流量记录只有一条时,代码实现方式如图5所示,此时不进行调用参数的匹配,以提高匹配成功率,并兼容绝大部分动态数据场景。
若根据流量匹配结果确定出多个待选流量中的多条子调用流量时,则说明子调用请求中存在多个调用记录。此时,需要获取子调用请求中的调用参数进行匹配筛选。具体地,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参。第一入参中可以包括多个参数,第二入参中可以包括多个参数。将第一入参与第二入参进行匹配,匹配成功的子调用流量作为中间件流量。例如,第一入参可以包括时间参数,第二入参中可以包括时间参数,当两者的时间参数匹配成功时,提取匹配成功的子调用流量作为中间件流量。因此,可以提高获取到的中间件流量的准确度。
如,当且仅当同时满足流量记录中traceId,service,method完全一致且子调用请求中对应的流量记录存在多条时,将流量记录的入参与本次查询的子调用请求的入参进行对比,仅返回入参匹配的子调用流量记录作为中间件流量。代码实现方式如图6所示。因此,对于采用相同方法的子调用请求但存在多组入参的情况下,获取子调用请求的中间件流量时可以避免流量匹配的错误。
在一实施例中,第一入参为多个,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量之前,还包括:接收参数过滤指示,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参。将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,包括:将目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
在该实施例中,服务器102支持参数过滤功能。当子调用请求的第一入参为多个时,提供参数过滤功能。参数过滤功能的实现代码如图7所示。当服务器102接收到参数过滤指示时,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参。其中,参数过滤指示可以是人为配置,参数过滤指示中包含过滤筛选掉的第一入参。服务器102根据参数过滤指示执行参数过滤,得到目标第一入参,进而再使用目标第一入参与各第二入参进行匹配,获得匹配成功的子调用流量。例如,在服务器102的入参匹配时,支持基于jsonpath的入参过滤,避免入参中存在动态参数而引起匹配失败。举例说明:当服务器102对目标服务请求执行第一次流量回放时,第一入参中包含时间参数这一动态参数,服务器102基于时间参数调用目标请求流量以及中间件流量进行流量回放。执行第二次流量回放时,第一入参中还包含时间参数这一动态参数,但第二流量回放时由于时间参数变动频率较大,此时根据时间参数可能导致目标服务请求的流量提取失败,因此可将第一入参中的时间参数进行过滤,从而避免流量回放时入参中存在动态参数而引起流量匹配失败。
在一实施例中,S108包括:识别目标服务请求的流量回放环境;将目标请求流量以及中间件流量调用到流量回放环境进行流量回放。优选地,流量回放之后,还包括:获取流量回放得到的测试结果信息;获取录制目标请求流量以及中间件流量时记录的录制结果信息;将测试结果信息与录制结果信息进行匹配;若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息;若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。
在该实施例中,终端106中设置有流量回放测试执行器FlowRepeaterService,流量回放测试执行器FlowRepeaterService中设置各服务请求的流量回放环境。流量回放测试执行器FlowRepeaterService提供流量回放入口,流量回放入口通过Jenkins/HttpApi对外封装以进行调用,指定回放环境空间noahEnvId、回放流量域名domainName、回放流量服务名service、回放流量接口列表methodList、回放流量请求数countLimit,由此可提供特定服务接口的流量回放。流量回放测试执行器的实现代码如图8所示。流量回放测试执行器FlowRepeaterService从服务器102中调用目标服务请求的目标请求流量以及中间件流量,将得到的目标请求流量以及中间件流量调用到流量回放环境进行流量回放。因此,可实现目标服务请求的流量回放。
当流量回放测试执行器FlowRepeaterService中进行单个服务请求接口的目标服务请求的流量回放时,从子调用请求的中间件中获取录制的目标服务请求的流量记录,将该流量记录作为测试用例调用到目标环境中,并将实际返回结果与录制预期结果进行比对,判断回放是否正确。具体地,获取流量回放得到的测试结果信息,若测试结果信息显示若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息。如,指定流量回放接口OrderAfterServBizService/createReturnApply的流量回放,回放的流量调用到编号为“t14136”的环境空间,存在回放结果比对异常,测试结果包含异常测试流量信息,回放测试失败信息,效果如图9所示。若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。如,指定流量回放接口OrderAfterServBizService/handleExchangeStockingQueueList的流量回放,回放的流量调用到编号为“t14136”的环境空间,所有测试用例执行通过结果如图10所示。因此,可通过记录回放结果提高测试人员的回归测试效率,减少了每个应用程序版本迭代的回归测试工作量。
在一实施例中,S104之前,还包括:获取服务请求接口的目标服务请求的多个第一待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第一待处理流量进行流量筛选,从多个第一待处理流量中筛选出第一有效流量。S104包括:从第一有效流量中获取目标请求流量。和/或,S106之前,还包括:获取子调用请求的多个第二待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第二待处理流量进行流量筛选,从多个第二待处理流量中筛选出第二有效流量。S106包括:从第二有效流量中获取中间件流量。
在该实施例中,流量分析服务器104服务器102中接收目标服务请求的录制流量时,对录制流量中的服务请求接口的目标服务请求的多个第一待处理流量以及目标服务请求的子调用请求的多个第二待处理流量进行有效流量的筛选。如筛选的方式为:流量分析服务器104获取目标服务请求的流量标识信息,流量标识信息用于唯一标识目标服务请求的流量。如,流量标识信息包括流量类型type、链路标识traceId、调用服务service、调用方法method、调用参数params、调用结果bRespond。流量分析服务器104将多个第一待处理流量中与流量标识信息匹配的第一待处理流量作为第一有效流量。多个第二待处理流量中与流量标识信息匹配的第二待处理流量作为第二有效流量。其中,匹配指的是第一待处理流量或第二待处理流量中记录有完整的上述流量标识信息。进而,服务器102在执行流量回放时,从流量分析服务器104的第一有效流量获取目标请求流量。如,直接根据目标服务请求的第一流量类型即可从第一有效流量中获取到满足流量回放条件的目标请求流量。服务器102从流量分析服务器104的第二有效流量获取目标请求流量。如,直接根据子调用请求的第二流量类型即可从第二有效流量中获取到满足流量回放条件的中间件流量。
举例说明:流量分析服务器104对于有效流量的筛选,检查每行流量记录是否合法,对于非法流量直接剔除。合法流量的检查规则为流量关键信息不能为空。关键信息指的是上述流量标识信息。关键信息包括:流量类型type、链路标识traceId、调用服务service、调用方法method、调用参数params、调用结果bRespond。例如,目标服务请求为OSP服务请求。OSP服务请求的目标请求流量的获取方式为:对OSP入口服务请求进行流量筛选。对上述第一有效流量中记录的type字段进行过滤,筛选得到的OSP入口请求的目标请求流量的流量类型的type字段均为DataType.OSP。OSP服务请求的中间件流量的获取方式为:对上述第二有效流量中记录的流量类型type与OSP入口服务请求的链路标识traceId字段进行过滤,仅保留存在对应OSP入口服务请求的子调用请求的流量。此外,从第二有效流量中获取中间件流量之后还包括:显示中间件流量的流量信息。具体地,流量分析服务器104提供子调用结果查询服务GetMockDataService。通过子调用结果查询服务GetMockDataService可以查看到调用的子调用请求的中间件流量。
在具体的实现过程中,服务器102上设置流量回放模块MockCommandEntry。流量回放模块MockCommandEntry回放的是OSP服务请求的流量。在一实现方式中,流量回放的流程参见图11所示。流量回放模块MockCommandEntry在不重启、无侵入OSP应用进程JVM的情况下实现控制子调用返回功能。在服务器102中加载流量回放模块MockCommandEntry的程序代码后可通过执行“/flow-mock/mockAll”命令对OSP子调用、MySQL子调用、Redis子调用、MemCache子调用、Pallas子调用进行子调用请求的中间件流量的流量回放模拟,从而控制流量回放过程中被测服务接口的业务处理逻辑。
流量分析服务器104上还设置有流量分析服务AnalyseDataFileService、子调用结果查询服务GetMockDataService。AnalyseDataFileService:对流量文件中的所有流量基于链路标识traceId进行业务链路分组以及链路完整性分析,仅保留链路完整的流量分组,并持久化到数据库中间件中,提供给服务器102的回放组件执行。因此,通过AnalyseDataFileService可实现目标请求流量以及中间件流量的分析以及提取。GetMockDataService:供流量回放模块MockCommandEntry调用。基于业务的子调用请求的三要素:链路标识traceId、子调用类型(OSP/MySQL/Redis/MemCache/Pallas)和请求参数进行子调用请求的参数和返回结果匹配,并向流量回放模块MockCommandEntry返回预期的子调用请求的结果。通过GetMockDataService可实现子调用请求的中间件流量的查询。
执行流量回放时,终端106上设置流量回放测试执行器FlowRepeaterService。FlowRepeaterService:根据用户指定的预期回放测试的OSP服务接口,查询数据中间件中持久化的完整的OSP服务请求流量,并通过TestNgtest suit形式驱动测试执行到指定的回放环境中,并将实际测试结果与录制预期结果进行比对,最终展示完整的回放测试结果。因此,通过FlowRepeaterService可实现目标服务请求的流量回放。
需要说明的是,本申请实施例中采用流量回放系统10执行本申请的一种流量回放方法。其中,由流量回放系统10的服务器102、流量分析服务器104以及终端106分别执行一种流量回放方法的一个或多个操作步骤。然而,本申请不排除在其他实施中采用同一设备执行一种流量回放方法的所有操作步骤。
综上,在前期的流量录制过程中,由于录制过程中服务器102同时记录了与环境强相关的中间件流量,在回放过程中可通过服务器102模拟外部中间件的返回特定数据,使得录制流量能回放到任意环境中,因此大大扩大了OSP服务请求的流量回放的可支持的服务接口范围和可执行环境范围,提高测试人员的回归测试效率,减少了每个应用程序迭代版本的回归测试工作量。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,附图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种流量回放装置,如图12所示,该装置包括识别模块10、第一获取模块20、第二获取模块30以及回放模块40。识别模块10,用于识别待回放流量的目标服务请求;第一获取模块20,用于获取目标服务请求的服务请求接口的目标请求流量;第二获取模块30,用于获取目标服务请求的子调用请求的中间件流量;回放模块40,用于将目标请求流量以及中间件流量进行流量回放。
在其中一个实施例中,第一获取模块20具体用于识别目标服务请求的第一流量类型;获取服务请求接口的多个服务请求的待处理请求流量,多个服务请求包括目标服务请求;根据第一流量类型从待处理请求流量中筛选目标请求流量,以获得目标请求流量。
在其中一个实施例中,第二获取模块30具体用于包括:获取子调用请求的第二流量类型以及目标服务请求的链路标识信息;根据第二流量类型和链路标识信息获取子调用请求的中间件流量。
优选地,根据第二流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型识别目标服务请求的服务进程的拦截位置;在拦截位置注入拦截代码,拦截代码用于拦截子调用请求的请求入参;根据请求入参以及链路标识信息从存储空间中获取录制流量中请求入参对应的响应返参;将请求入参和响应返参作为子调用请求的中间件流量。
在其中一个实施例中,根据流量类型和链路标识信息获取子调用请求的中间件流量,包括:根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,多个待选流量包括中间件流量;若根据流量匹配结果确定出多个待选流量中的一条子调用流量,将子调用流量作为中间件流量;若根据流量匹配结果确定出多个待选流量中的多条子调用流量,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将匹配成功的子调用流量作为中间件流量。
在其中一个实施例中,第一入参为多个,一种流量回放装置还包括过滤模块,过滤模块用于接收参数过滤指示,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参。将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,包括:将目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
在其中一个实施例中,回放模块40具体用于识别目标服务请求的流量回放环境;将目标请求流量以及中间件流量调用到流量回放环境进行流量回放。
在其中一个实施例中,一种流量回放装置还包括记录模块,记录模块用于获取流量回放得到的测试结果信息;获取录制目标请求流量以及中间件流量时记录的录制结果信息;将测试结果信息与录制结果信息进行匹配;若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息;若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。
在其中一个实施例中,一种流量回放装置还包括第一筛选模块,第一筛选模块用于获取服务请求接口的目标服务请求的多个第一待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第一待处理流量进行流量筛选,从多个第一待处理流量中筛选出第一有效流量。获取目标服务请求的服务请求接口的目标请求流量,包括:从第一有效流量中获取所述目标请求流量。
在其中一个实施例中,一种流量回放装置还包括第二筛选模块,第二筛选模块用于获取子调用请求的多个第二待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第二待处理流量进行流量筛选,从多个第二待处理流量中筛选出第二有效流量。获取目标服务请求的子调用请求的中间件流量,包括:从第二有效流量中获取中间件流量。
关于流量回放装置的具体限定可以参见上文中对于流量回放方法的限定,在此不再赘述。上述流量回放装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是支持流量回放系统10中的服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的中间件连接,以与中间件进行数据交互。该计算机程序被处理器执行时以实现一种流量回放方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:识别待回放流量的目标服务请求;获取目标服务请求的服务请求接口的目标请求流量;获取目标服务请求的子调用请求的中间件流量;将目标请求流量以及中间件流量进行流量回放。
在其中一个实施例中,处理器执行计算机程序实现上述的获取目标服务请求的服务请求接口的目标请求流量步骤时,具体实现以下步骤:识别目标服务请求的第一流量类型;获取服务请求接口的多个服务请求的待处理请求流量,多个服务请求包括目标服务请求;根据第一流量类型从待处理请求流量中筛选目标请求流量,以获得目标请求流量。
在其中一个实施例中,处理器执行计算机程序实现上述的获取目标服务请求的子调用请求的中间件流量步骤时,具体实现以下步骤:获取子调用请求的第二流量类型以及目标服务请求的链路标识信息;根据第二流量类型和链路标识信息获取子调用请求的中间件流量。
在其中一个实施例中,处理器执行计算机程序实现上述的根据第二流量类型和链路标识信息获取子调用请求的中间件流量步骤时,具体实现以下步骤:根据第二流量类型识别目标服务请求的服务进程的拦截位置;在拦截位置注入拦截代码,拦截代码用于拦截子调用请求的请求入参;根据请求入参以及链路标识信息从存储空间中获取录制流量中请求入参对应的响应返参;将请求入参和响应返参作为子调用请求的中间件流量。
在其中一个实施例中,处理器执行计算机程序实现上述的根据流量类型和链路标识信息获取子调用请求的中间件流量步骤时,具体实现以下步骤:根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,多个待选流量包括中间件流量;若根据流量匹配结果确定出多个待选流量中的一条子调用流量,将子调用流量作为中间件流量;若根据流量匹配结果确定出多个待选流量中的多条子调用流量,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将匹配成功的子调用流量作为所述中间件流量。
在其中一个实施例中,第一入参为多个,处理器执行计算机程序时实现以下步骤:接收参数过滤指示,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参;处理器执行计算机程序实现上述的将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量的步骤时,具体实现以下步骤:将目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
在其中一个实施例中,处理器执行计算机程序实现上述的将目标请求流量以及中间件流量进行流量回放的步骤时,具体实现以下步骤:识别目标服务请求的流量回放环境;将目标请求流量以及中间件流量调用到流量回放环境进行流量回放。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:获取流量回放得到的测试结果信息;获取录制目标请求流量以及中间件流量时记录的录制结果信息;将测试结果信息与录制结果信息进行匹配;若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息;若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:获取服务请求接口的目标服务请求的多个第一待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第一待处理流量进行流量筛选,从多个第一待处理流量中筛选出第一有效流量;处理器执行计算机程序实现上述的将获取目标服务请求的服务请求接口的目标请求流量的步骤时,具体实现以下步骤:从第一有效流量中获取目标请求流量;
和/或,处理器执行计算机程序时实现以下步骤:获取子调用请求的多个第二待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第二待处理流量进行流量筛选,从多个第二待处理流量中筛选出第二有效流量;处理器执行计算机程序实现上述的获取目标服务请求的子调用请求的中间件流量的步骤时,具体实现以下步骤:从第二有效流量中获取中间件流量。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:识别待回放流量的目标服务请求;获取目标服务请求的服务请求接口的目标请求流量;获取目标服务请求的子调用请求的中间件流量;将目标请求流量以及中间件流量进行流量回放。
在其中一个实施例中,计算机程序被处理器执行实现上述的获取目标服务请求的服务请求接口的目标请求流量步骤时,具体实现以下步骤:识别目标服务请求的第一流量类型;获取服务请求接口的多个服务请求的待处理请求流量,多个服务请求包括目标服务请求;根据第一流量类型从待处理请求流量中筛选目标请求流量,以获得目标请求流量。
在其中一个实施例中,计算机程序被处理器执行实现上述的获取目标服务请求的子调用请求的中间件流量步骤时,具体实现以下步骤:获取子调用请求的第二流量类型以及目标服务请求的链路标识信息;根据第二流量类型和链路标识信息获取子调用请求的中间件流量。
在其中一个实施例中,计算机程序被处理器执行实现上述的根据第二流量类型和链路标识信息获取子调用请求的中间件流量步骤时,具体实现以下步骤:根据第二流量类型识别目标服务请求的服务进程的拦截位置;在拦截位置注入拦截代码,拦截代码用于拦截子调用请求的请求入参;根据请求入参以及链路标识信息从存储空间中获取录制流量中请求入参对应的响应返参;将请求入参和响应返参作为子调用请求的中间件流量。
在其中一个实施例中,计算机程序被处理器执行实现上述的根据流量类型和链路标识信息获取子调用请求的中间件流量步骤时,具体实现以下步骤:根据第二流量类型和链路标识信息对子调用请求的多个待选流量进行流量匹配,多个待选流量包括中间件流量;若根据流量匹配结果确定出多个待选流量中的一条子调用流量,将子调用流量作为中间件流量;若根据流量匹配结果确定出多个待选流量中的多条子调用流量,获取子调用请求的第一入参以及各条子调用流量中记录的第二入参,将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将匹配成功的子调用流量作为所述中间件流量。
在其中一个实施例中,第一入参为多个,计算机程序被处理器执行时实现以下步骤:接收参数过滤指示,根据参数过滤指示对多个第一入参进行过滤筛选,筛选出目标第一入参;计算机程序被处理器执行实现上述的将第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量的步骤时,具体实现以下步骤:将目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
在其中一个实施例中,计算机程序被处理器执行实现上述的将目标请求流量以及中间件流量进行流量回放的步骤时,具体实现以下步骤:识别目标服务请求的流量回放环境;将目标请求流量以及中间件流量调用到流量回放环境进行流量回放。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:获取流量回放得到的测试结果信息;获取录制目标请求流量以及中间件流量时记录的录制结果信息;将测试结果信息与录制结果信息进行匹配;若测试结果信息与录制结果信息匹配失败,记录测试结果信息的回放失败信息;若测试结果信息与录制结果信息匹配成功,记录测试结果信息的回放通过信息。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:获取服务请求接口的目标服务请求的多个第一待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第一待处理流量进行流量筛选,从多个第一待处理流量中筛选出第一有效流量;计算机程序被处理器执行实现上述的将获取目标服务请求的服务请求接口的目标请求流量的步骤时,具体实现以下步骤:从第一有效流量中获取目标请求流量;
和/或,计算机程序被处理器执行时实现以下步骤:获取子调用请求的多个第二待处理流量;获取目标服务请求的流量标识信息,根据流量标识信息对多个第二待处理流量进行流量筛选,从多个第二待处理流量中筛选出第二有效流量;计算机程序被处理器执行实现上述的获取目标服务请求的子调用请求的中间件流量的步骤时,具体实现以下步骤:从第二有效流量中获取中间件流量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种流量回放方法,所述方法包括:
识别待回放流量的目标服务请求;
获取所述目标服务请求的服务请求接口的目标请求流量;
获取所述目标服务请求的子调用请求的中间件流量;
将所述目标请求流量以及所述中间件流量进行流量回放;
其中,所述获取所述目标服务请求的子调用请求的中间件流量,包括:获取所述子调用请求的第二流量类型以及所述目标服务请求的链路标识信息;根据所述第二流量类型和所述链路标识信息获取所述子调用请求的中间件流量;
所述根据所述第二流量类型和所述链路标识信息获取所述子调用请求的中间件流量,包括:根据所述第二流量类型和所述链路标识信息对所述子调用请求的多个待选流量进行流量匹配,多个待选流量包括所述中间件流量;若根据流量匹配结果确定出所述多个待选流量中的一条子调用流量,将所述子调用流量作为所述中间件流量;若根据流量匹配结果确定出所述多个待选流量中的多条子调用流量,获取所述子调用请求的第一入参以及各条子调用流量中记录的第二入参,将所述第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将所述匹配成功的子调用流量作为所述中间件流量。
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标服务请求的服务请求接口的目标请求流量,包括:
识别所述目标服务请求的第一流量类型;
获取所述服务请求接口的多个服务请求的待处理请求流量,所述多个服务请求包括所述目标服务请求;
根据所述第一流量类型从所述待处理请求流量中筛选所述目标请求流量,以获得所述目标请求流量。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第二流量类型和所述链路标识信息获取所述子调用请求的中间件流量,包括:
根据所述第二流量类型识别所述目标服务请求的服务进程的拦截位置;
在所述拦截位置注入拦截代码,所述拦截代码用于拦截所述子调用请求的请求入参;
根据所述请求入参以及所述链路标识信息从存储空间中获取录制流量中所述请求入参对应的响应返参;
将所述请求入参和所述响应返参作为所述子调用请求的中间件流量。
4.根据权利要求1所述的方法,其特征在于,所述第一入参为多个,所述方法还包括:
接收参数过滤指示,根据所述参数过滤指示对多个所述第一入参进行过滤筛选,筛选出目标第一入参;
所述将所述第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,包括:
将所述目标第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标请求流量以及所述中间件流量进行流量回放,包括:
识别所述目标服务请求的流量回放环境;
将所述目标请求流量以及所述中间件流量调用到所述流量回放环境进行流量回放。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取流量回放得到的测试结果信息;
获取录制所述目标请求流量以及所述中间件流量时记录的录制结果信息;
将所述测试结果信息与所述录制结果信息进行匹配;
若所述测试结果信息与所述录制结果信息匹配失败,记录所述测试结果信息的回放失败信息;
若所述测试结果信息与所述录制结果信息匹配成功,记录所述测试结果信息的回放通过信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述服务请求接口的所述目标服务请求的多个第一待处理流量;
获取所述目标服务请求的流量标识信息,根据所述流量标识信息对所述多个第一待处理流量进行流量筛选,从所述多个第一待处理流量中筛选出第一有效流量;
所述获取所述目标服务请求的服务请求接口的目标请求流量,包括:
从所述第一有效流量中获取所述目标请求流量;
和/或,
获取所述子调用请求的多个第二待处理流量;
获取所述目标服务请求的流量标识信息,根据所述流量标识信息对所述多个第二待处理流量进行流量筛选,从所述多个第二待处理流量中筛选出第二有效流量;
所述获取所述目标服务请求的子调用请求的中间件流量,包括:
从所述第二有效流量中获取所述中间件流量。
8.一种流量回放装置,其特征在于,所述装置包括:
识别模块,用于识别待回放流量的目标服务请求;
第一获取模块,用于获取所述目标服务请求的服务请求接口的目标请求流量;
第二获取模块,用于获取所述目标服务请求的子调用请求的中间件流量;
回放模块,用于将所述目标请求流量以及所述中间件流量进行流量回放;
其中,所述获取所述目标服务请求的子调用请求的中间件流量,包括:获取所述子调用请求的第二流量类型以及所述目标服务请求的链路标识信息;根据所述第二流量类型和所述链路标识信息获取所述子调用请求的中间件流量;
所述根据所述第二流量类型和所述链路标识信息获取所述子调用请求的中间件流量,包括:根据所述第二流量类型和所述链路标识信息对所述子调用请求的多个待选流量进行流量匹配,多个待选流量包括所述中间件流量;若根据流量匹配结果确定出所述多个待选流量中的一条子调用流量,将所述子调用流量作为所述中间件流量;若根据流量匹配结果确定出所述多个待选流量中的多条子调用流量,获取所述子调用请求的第一入参以及各条子调用流量中记录的第二入参,将所述第一入参分别与各第二入参进行匹配,获得匹配成功的子调用流量,将所述匹配成功的子调用流量作为所述中间件流量。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202011444326.5A 2020-12-08 2020-12-08 流量回放方法、装置、计算机设备和存储介质 Active CN112637005B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011444326.5A CN112637005B (zh) 2020-12-08 2020-12-08 流量回放方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011444326.5A CN112637005B (zh) 2020-12-08 2020-12-08 流量回放方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN112637005A CN112637005A (zh) 2021-04-09
CN112637005B true CN112637005B (zh) 2022-06-14

Family

ID=75309270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011444326.5A Active CN112637005B (zh) 2020-12-08 2020-12-08 流量回放方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN112637005B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113315828B (zh) * 2021-05-25 2022-11-29 平安银行股份有限公司 一种流量录制方法、装置及流量录制设备、存储介质
CN115529250A (zh) * 2022-08-17 2022-12-27 上海哔哩哔哩科技有限公司 流量回放方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371846A (zh) * 2016-09-06 2017-02-01 上海天旦网络科技发展有限公司 基于网络数据和消息中间件的快速开发方法和业务系统
CN111045952A (zh) * 2019-12-16 2020-04-21 广州品唯软件有限公司 软件测试方法、流量回放装置、终端设备及可读存储介质
CN111488252A (zh) * 2020-04-08 2020-08-04 上海优扬新媒信息技术有限公司 一种流量回放方法及装置
CN111625452A (zh) * 2020-05-22 2020-09-04 上海哔哩哔哩科技有限公司 流量回放方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089396A1 (en) * 2007-09-27 2009-04-02 Yuxi Sun Integrated Method of Enabling a Script-Embedded Web Browser to Interact with Drive-Based Contents
CN111953721B (zh) * 2019-05-16 2024-04-09 北京京东尚科信息技术有限公司 访问流量控制方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371846A (zh) * 2016-09-06 2017-02-01 上海天旦网络科技发展有限公司 基于网络数据和消息中间件的快速开发方法和业务系统
CN111045952A (zh) * 2019-12-16 2020-04-21 广州品唯软件有限公司 软件测试方法、流量回放装置、终端设备及可读存储介质
CN111488252A (zh) * 2020-04-08 2020-08-04 上海优扬新媒信息技术有限公司 一种流量回放方法及装置
CN111625452A (zh) * 2020-05-22 2020-09-04 上海哔哩哔哩科技有限公司 流量回放方法和系统

Also Published As

Publication number Publication date
CN112637005A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
CN111045952B (zh) 软件测试方法、流量回放装置、终端设备及可读存储介质
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
CN112637005B (zh) 流量回放方法、装置、计算机设备和存储介质
CN110554962A (zh) 回归测试的流程覆盖方法、服务器及计算机可读存储介质
CN112260885B (zh) 一种工控协议自动测试方法、系统、装置及可读存储介质
CN110928777B (zh) 测试用例的处理方法、装置、设备及存储介质
CN112100071A (zh) 测试用例生成方法、装置、计算机设备和存储介质
CN109657475A (zh) 代码漏洞排查方法、装置、设备及存储介质
CN112650688A (zh) 自动化回归测试方法、关联设备以及计算机程序产品
CN111708712A (zh) 用户行为测试用例的生成方法、流量回放方法及电子设备
CN110944231B (zh) 视频播放器的监听方法及装置
KR101460860B1 (ko) 상태 기반의 테스트 시나리오 모델을 이용한 gui 테스트 장치 및 방법
CN109960656B (zh) 程序的检测方法、装置及电子设备
CN115834443A (zh) 流量回放方法、装置、计算机设备和存储介质
CN111400171A (zh) 一种接口测试方法、系统、装置及可读存储介质
CN114500348B (zh) 一种cdn网关测试方法及系统
CN115617668A (zh) 一种兼容性测试方法、装置及设备
CN111666200A (zh) 一种pc软件冷启动耗时的测试方法及终端
CN114328171A (zh) 测试用例库的生成方法、装置、设备及存储介质
CN113190445A (zh) 接口测试方法、接口测试装置和接口测试系统
CN113515452A (zh) 应用的自动测试方法、系统、电子设备及存储介质
CN112637085A (zh) 流量录制方法、装置、计算机设备和存储介质
CN113297056A (zh) 测试数据设置方法、测试数据应用方法、装置及相关设备
CN112468356A (zh) 路由器接口测试方法、装置、电子设备和存储介质
CN108966154A (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