CN113590497A - 业务服务的测试方法、装置、电子设备及存储介质 - Google Patents

业务服务的测试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113590497A
CN113590497A CN202111137712.4A CN202111137712A CN113590497A CN 113590497 A CN113590497 A CN 113590497A CN 202111137712 A CN202111137712 A CN 202111137712A CN 113590497 A CN113590497 A CN 113590497A
Authority
CN
China
Prior art keywords
playback
service
data
request
flow
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
Application number
CN202111137712.4A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111137712.4A priority Critical patent/CN113590497A/zh
Publication of CN113590497A publication Critical patent/CN113590497A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Abstract

本申请涉及计算机技术领域,具体公开了一种业务服务的测试方法、装置、电子设备及存储介质,该方法包括:获取目标业务服务对应的录制流量数据;根据录制流量数据,在仿真环境中进行流量回放,获得第一回放流量数据;以及根据录制流量数据,在测试环境中进行流量回放,得到第二回放流量数据;将录制流量数据与第一回放流量数据进行对比,得到对比结果;根据对比结果所指示的差异字段,对录制流量数据和第二回放流量数据进行去噪处理;根据去噪处理后的录制流量数据和去噪处理后的第二回放流量数据,生成目标业务服务的测试结果。本方案实现了自动去噪,提高了测试效率。本发明实施例可应用于云技术、人工智能、智慧交通等各种场景。

Description

业务服务的测试方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种业务服务的测试方法、装置、电子设备及存储介质。
背景技术
在业务服务更新后,需要通过流量录制与回放来对业务服务进行测试。在测试过程中将现网录制的流量数据与回放环境中的回放流量数据进行对比生成的测试结果中,存在的噪声较多,需要测试人员花费大量的时间进行测试结果分析,以排查测试结果中的噪声。因此,由于需要人工进行分析以排查噪声,因此业务服务的测试效率低。
发明内容
鉴于上述问题,本申请实施例提出了一种业务服务的测试方法、装置、电子设备及存储介质,以解决相关技术中因需要人工排查测试结果中的噪声导致业务服务的测试效率低的问题。
根据本申请实施例的一个方面,提供了一种业务服务的测试方法,该方法包括:获取目标业务服务对应的录制流量数据,所述录制流量数据是对所述目标业务服务在线上环境中进行流量录制得到的;流量录制是指对所述目标业务服务在线上环境运行过程中产生的流量数据进行复制;根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据;所述仿真环境是所模拟与所述线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起所述录制流量数据中的请求,并由所述仿真环境中的目标业务服务对重新发起的请求进行处理;以及根据所述录制流量数据,在测试环境中进行流量回放,得到所述目标业务服务在测试环境中的第二回放流量数据,所述测试环境是所部署用于测试的运行环境;将所述录制流量数据与所述第一回放流量数据进行对比,得到对比结果;根据所述对比结果所指示的差异字段,对所述录制流量数据和所述第二回放流量数据进行去噪处理;根据去噪处理后的所述录制流量数据和去噪处理后的所述第二回放流量数据,生成目标业务服务的测试结果。
根据本申请实施例的一个方面,提供了一种业务服务的测试装置,包括:录制流量数据获取模块,用于获取目标业务服务对应的录制流量数据,所述录制流量数据是对所述目标业务服务在线上环境中进行流量录制得到的;流量录制是指对所述目标业务服务在线上环境运行过程中产生的流量数据进行复制;第一流量回放模块,用于根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据,所述仿真环境是所模拟与所述线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起所述录制流量数据中的请求,并由所述仿真环境中的目标业务服务对重新发起的请求进行处理;以及第二流量回放模块,用于根据所述录制流量数据,在测试环境中进行流量回放,得到所述目标业务服务在测试环境中的第二回放流量数据,所述测试环境是所部署用于测试的运行环境;对比模块,用于将所述录制流量数据与所述第一回放流量数据进行对比,得到对比结果;去噪处理模块,用于根据所述对比结果所指示的差异字段,对所述录制流量数据和所述第二回放流量数据进行去噪处理;测试结果生成模块,用于根据去噪处理后的所述录制流量数据和去噪处理后的所述第二回放流量数据,生成目标业务服务的测试结果。
在本申请的一些实施例中,所述录制流量数据包括在线上环境中所述目标业务服务在调用主链上的主链流量数据;所述第一回放流量数据包括针对所述调用主链的主链回放流量;所述主链回放流量包括主链回放请求包和主链回放响应包;在本实施例中,第一流量回放模块,包括:主链回放请求包生成单元,用于由指定代理服务根据所述主链流量数据中的主链请求包,生成针对所述调用主链的主链回放请求包;第一服务请求发起单元,用于由所述指定代理服务根据所述主链回放请求包,向部署于所述仿真环境中的所述目标业务服务发起服务请求;服务处理单元,用于由部署于所述仿真环境中的所述目标业务服务根据所述主链回放请求包进行处理,生成针对所述调用主链的主链回放响应包。
在本申请的一些实施例中,所述录制流量数据还包括在所述线上环境中在所述调用主链的下游服务中的下游流量数据;所述第一回放流量数据还包括针对所述下游服务的下游回放流量;下游回放流量包括下游回放请求包和下游回放响应包;第一流量回放模块,还包括:下游回放请求包获得单元,用于由所述指定代理服务根据所述下游流量数据中的下游请求包,在所述仿真环境中进行请求回放,得到针对所述下游服务的下游回放请求包;组包单元,用于由部署于所述仿真环境中的桩服务响应于所述回放请求包,根据为所述下游服务生成的模拟数据进行组包,得到针对所述下游服务的下游回放响应包。
在本申请的一些实施例中,业务服务的测试装置还包括:模拟数据生成模块,用于根据所述下游流量数据中的下游响应包,生成针对所述下游服务的模拟数据,并将所述模拟数据与所述模拟数据的模拟标识关联存储于模拟数据库中;关联存储模块,用于将所述模拟数据的模拟标识和所述目标业务服务对应的调用标识关联存储于缓存中;解析模块,用于由所述桩服务对所述回放请求包进行解析,确定所述回放请求包所携带的调用标识;模拟数据获取模块,用于若所述缓存中存在与所述回放请求包所携带调用标识相关联的模拟标识,则根据与所述回放请求包所携带调用标识相关联的模拟标识,从所述模拟数据库中查询获得为所述下游服务生成的模拟数据。
在本申请的一些实施例中,业务服务的测试装置还包括:埋点流量数据接收模块,用于接收在所述线上环境中所设置多个埋点上报的埋点流量数据;预处理模块,用于对所述埋点流量数据进行预处理,得到各业务服务对应的录制流量数据;录制流量数据存储模块,用于将各业务服务对应的录制流量数据存储于指定数据库中;在本实施例中,录制流量数据获取模块进一步被配置为:根据对所述目标业务服务触发的流量回放操作,按照所述目标业务服务对应的服务标识,从所述指定数据库中获取所述目标业务服务对应的录制流量数据。
在本申请的一些实施例中,预处理模块,包括:解析单元,用于对所述埋点流量数据进行解析,得到解析流量数据;过滤单元,用于对所述解析流量数据进行过滤,得到所述录制流量数据。
在本申请的一些实施例中,过滤单元,包括:流量相似度计算单元,用于计算任意两组解析流量数据之间的流量相似度;过滤执行单元,用于将流量相似度超过所述流量相似度阈值的两组解析流量数据中的其中一组解析流量数据过滤掉。
在本申请的一些实施例中,流量相似度计算单元,包括:请求包和响应包获取单元,用于对于待计算流量相似度的第一流量数据和第二流量数据,从第一流量数据中获取第一请求包和第一响应包;以及从第二流量数据中获取第二请求包和第二响应包;请求相似度计算单元,用于根据所述第一请求包中的包体字符串和所述第二请求包的包体字符串,计算得到请求相似度;响应相似度计算单元,用于根据所述第一响应包的包体字符串和所述第二响应包的包体字符串,计算得到响应相似度;流量相似度确定单元,用于根据所述请求相似度和所述响应相似度,计算得到所述第一流量数据和第二流量数据之间的流量相似度。
在本申请的一些实施例中,流量相似度确定单元,包括:权重获取单元,用于获取所述请求相似度对应的请求权重,以及获取所述响应相似度对应的响应权重;加权单元,用于根据所述请求权重和所述响应权重,对所述请求相似度和所述响应相似度进行加权,得到所述第一流量数据和第二流量数据之间的流量相似度。
在本申请的一些实施例中,过滤单元还进一步被配置为:若确定所述解析流量数据中包括超时请求,或者,根据预设校验规则确定所述解析流量数据中的请求不满足所述预设校验规则,则将所述解析流量数据过滤掉。
在本申请的一些实施例中,业务服务的测试装置还包括:待发送请求获取模块,用于若检测到流量录制开关为打开状态,获取待发送请求,所述待发送请求携带所述待发送请求所来源的运行环境的环境标识;请求类型确定模块,用于若根据所述待发送请求携带的环境标识确定所述待发送请求来源于回放环境,则确定所述待发送请求的请求类型;所述回放环境包括仿真环境和测试环境;请求屏蔽模块,用于若确定所述待发送请求的请求类型是非读类型,则对所述待发送请求进行屏蔽。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上所述业务服务的测试方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如上所述业务服务的测试方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述业务服务的测试方法。
在本申请的方案中,先根据目标业务服务在线上环境中的录制流量数据在仿真环境中进行流量回放得到第一回放流量数据;然后根据录制流量数据与第一回放流量数据的对比结果中的差异字段,对录制流量数据和在测试测试环境中进行流量回放所得到的第二回放流量数据进行去噪处理;最后将去噪处理后的录制流量数据和去噪处理后的第二回放流量数据进行对比,生成目标业务服务的测试结果。由于在将录制流量数据和第二回放流量数据进行对比之前,对录制流量数据和第二回放流量数据进行了去噪处理,因此,实现了自动进行去噪处理,避免在测试过程中因随机字段等随机事件所造成的噪声引入到目标业务服务的测试结果中,保证了测试结果的准确性和有效性。对于测试人员来说,不需要花费大量的时间分析测试结果以进行噪声排查,提高了业务服务的测试效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的技术方案的实施环境的示意图。
图2是根据本申请的一实施例示出的业务服务的测试方法的流程图。
图3是根据本申请一实施例示出的进行流量数据的对比示意图。
图4是根据本申请一实施例示出的步骤220的流程图。
图5是根据本申请另一实施例示出的步骤220的流程图。
图6是根据本申请一实施例示出的步骤210之前步骤的流程图。
图7是根据本申请一实施例示出的计算流量相似度的流程图。
图8是根据本申请一具体实施例示出的业务服务的测试方法的流程图。
图9是根据本申请一具体实施例示出的流量录制服务进行处理的流程图。
图10是根据本申请一具体实施例示出的进行流量回放的时序图。
图11是根据本申请一具体实施例示出的桩服务的工作流程图。
图12是根据本申请一实施例示出的业务服务的测试装置的框图。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1示出了可以应用本申请实施例的技术方案的实施环境的示意图。如图1所示,该实施环境包括业务系统110和与业务系统110通信连接的测试系统120,该业务系统110包括业务服务的服务端112和业务服务所面向多个客户端所在的终端111,终端111和服务端112可以通过有线或者无线网络建立通信连接。由于该服务端112直接面向线上的客户端,因此,该服务端112所提供的运行环境即为线上环境。
终端111可以是智能手机、笔记本电脑、游戏主机、台式计算机、平板电脑、电子书阅读器、智能音箱、车载终端、商场服务终端等电子设备,在此不进行具体限定。终端111中可以运行支持业务服务的客户端程序,该客户端程序可以是即时通信应用的客户端程序、购物应用、新闻应用、阅读应用、音频听书应用、支付应用等,在此不进行具体限定。
在服务端112面向客户端提供目标业务服务的过程中,针对服务端112所提供业务服务进行流量录制,得到该业务服务在线上环境中所产生的录制流量数据。在具体实施例中,若业务服务仅由服务端112实现,则可以直接面向服务端112进行流量录制;若业务服务需要由服务端112和终端111交互实现,则可以面向服务端112和终端111来进行流量录制;若业务服务仅由终端111实现,则可以面向终端111进行流量录制。
在具体实施例中,可以在业务系统中业务服务会经过的节点上部署埋点,从而,在业务服务运行过程中,由所设置的埋点来上报各个埋点所在节点处接收到的响应包和/或所发送的请求包,从而,组合业务服务的全链路上的全部埋点在一次调用过程中所上报的埋点数据(即所上报的请求包和/或响应包),即可得到该次业务服务调用过程中所产生的流量数据。
在本实施例中,由测试系统120来收集业务系统中各业务服务的录制流量数据。如果是通过埋点的方式采集录制流量数据,则各个埋点将所采集到的埋点数据上报到测试系统120。
进一步的,在本申请的方案中,测试系统120中部署了仿真环境和测试环境,其中仿真环境和测试环境均部署了业务服务。其中,仿真环境是与业务服务的线上环境相同的环境。根据针对各个业务服务所采集的录制流量数据,可以在仿真环境和测试环境中进行流量回放。在本方案中,将在仿真环境中根据录制流量数据进行流量回放所得到的流量数据称为第一回放流量数据,将在测试环境中根据录制流量数据进行流量回放所得到的流量数据称为第二回放流量数据。在得到一业务服务对应的录制流量数据、第一回放流量数据和第二回放流量数据,可以按照本申请的方法生成业务服务的测试结果。
在本申请的方案中,测试系统120中还可以设置具有显示屏的终端设备,该通过该终端设备来显示业务服务测试过程中的测试流程、测试结果,或者显示交互界面,以便于用户根据需要来控制业务服务的测试进度。进一步的,该测试系统120中的终端设备还可以显示针对业务服务的录制流量数据,从而全面确定业务服务在线上环境中的运行情况。
在本申请的方案中,服务端112以及测试系统120中的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例示出的业务服务的测试方法的流程图,该方法可以应用于图1中的测试系统,具体可以由具备处理能力的计算机设备执行,例如服务器等,在此不进行具体限定。参照图2所示,该方法至少包括步骤210至260,详细介绍如下:
步骤210,获取目标业务服务对应的录制流量数据,录制流量数据是对目标业务服务在线上环境中进行流量录制得到的;流量录制是指对目标业务服务在线上环境运行过程中产生的流量数据进行复制。
目标业务服务泛指待测试的业务服务,在不同的应用场景下,该业务服务也对应不同,例如,在即时通信应用中,业务服务可以是信息转发服务、表情发送服务等;在支付应用中,业务服务可以是支付服务、转账服务等;在视频应用中,该业务服务可以是弹幕发送服务、视频分享服务、视频评论转发服务等。该目标业务服务可以是云服务端所提供的服务,例如云游戏登录服务、文档共享服务、文档多人编辑服务等。
线上环境,又可称为线上运行环境,是指面向线上用户的运行环境。对目标业务服务在线上环境中进行流量录制是指对目标业务服务在线上环境运行过程中所产生的流量数据进行复制,所复制的流量数据即为目标业务服务对应的录制流量数据。可以理解的是,目标业务服务在运行过程中所产生的流量数据包括向目标业务服务所发送的请求数据包(简称为请求包)和由目标业务服务进行处理后所返回的响应数据包(简称为响应包)。
在一些实施例中,可以在线上环境中设置埋点,其中,埋点指在需要采集数据的节点将数据采集的程序代码附加在功能程序代码中。所设置的埋点覆盖目标业务服务的调用链路,从而,通过所设置的埋点来监控经过目标业务服务的调用链路上的流量数据,并将所监控到的流量数据进行上报。在此基础上,整合目标业务的全部链路上的埋点所上报的流量数据,即可以确定目标业务服务在一次调用过程中所产生的流量数据。
在一些实施例中,可以预先确定目标业务服务调用过程中所经过的多个节点,然后在线上环境中针对目标业务服务的调用链路上的各个节点设置埋点,之后在调用目标业务服务的过程中,由埋点监控对应节点进行的请求和响应,从而,在埋点监测到所在节点接收到了请求数据包,则将所接收到的请求数据包进行复制,并将复制的请求数据包上报到数据收集端(例如图1中的测试系统);同理,当埋点监测到所在节点被触发进行响应,则复制所要发送的响应数据包,并将复制的响应数据包上报到数据收集端。
在一些实施例中,目标业务服务可能是聚合服务,即目标业务服务需要依赖其他服务来进行请求处理。为便于区分,将目标业务服务所在的调用链路称为调用主链,而目标业务服务所依赖的其他服务称为调用主链的下游服务。在该种情况下,所设置的埋点可以覆盖目标业务服务的全部调用链路,即不仅覆盖调用主链,还覆盖调用主链下的各个下游服务,由此,针对目标业务服务所录制得到的录制流量数据不仅包括调用主链上的流量数据还包括所经过下游服务上的流量数据,因此,基于该录制流量数据可以反映目标业务服务在一次调用过程中的中间处理过程的情况。
可以理解的是,若在具体场景下不需要关注目标业务服务的中间处理过程,也可以不需要在目标业务服务的调用主链的下游服务设置埋点,而仅在调用主链上设置埋点;或者,若仅需要关注目标业务服务的部分中间处理过程,则可以仅在所要关注的下游服务上设置埋点,而其他不关注的下游服务不需要设置埋点。总而言之,在通过埋点来进行流量录制的情况下,埋点的设置位置可以根据实际需要进行设定,在此不进行具体限定。
步骤220,根据录制流量数据,在仿真环境中进行流量回放,获得目标业务服务在仿真环境中的第一回放流量数据,仿真环境是所模拟与线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起录制流量数据中的请求,并由仿真环境中的目标业务服务对重新发起的请求进行处理。
以及步骤230,根据录制流量数据,在测试环境中进行流量回放,得到目标业务服务在测试环境中的第二回放流量数据;测试环境是所部署用于测试的运行环境。
仿真环境是对线上环境进行模拟的运行环境,也可以理解为,仿真环境是与线上环境相同的运行环境,仿真环境中也部署了目标业务服务,由于仿真环境与线上环境是相同的运行环境,因此,仿真环境中所部署目标业务服务与线上环境中的目标业务服务的处理逻辑是相同的。
在仿真环境中进行流量回放中,基于录制流量数据中的请求重新请求在仿真环境中的目标业务服务,以由仿真环境中的目标业务服务根据所重新发起的请求进行处理,在该过程中,仿真环境中的目标业务服务对应会对所重新发起的请求进行处理,得到对应的响应包。可以理解的是,第一回放流量数据包括在仿真环境中目标业务服务运行过程中产生的请求包和响应包。
测试环境中部署了被测的目标业务服务,可以理解的是,若测试目标业务服务的目的是验证目标业务服务更新后的的处理逻辑,则在测试环境中所部署的目标业务服务是更新后的目标业务服务,在该种情况下,相当于是将目标业务服务对应的录制流量数据作为测试用例,来对更新后的目标业务服务的处理逻辑进行测试。
在测试环境中进行流量回放是指基于录制流量数据中针对目标业务服务的请求,重新请求测试环境中所部署的目标业务服务,由测试环境中所部署的目标业务服务根据所重新发起的请求进行处理。同理,第二回放流量数据包括在测试环境中目标业务服务运行过程中所产生的请求包和响应包。
步骤240,将录制流量数据与第一回放流量数据进行对比,得到对比结果。
在本申请的一些实施例中,可以是将录制流量数据和第一回放流量数据按字段进行对比,录制流量数据和第一回放流量数据中均指示了各个字段对应的参数值,从而,通过按字段进行对比,确定录制流量数据和第一回放流量数据中参数值不同的字段,和/或,录制流量数据和第一回放流量数据中所包括的不同的字段,进而确定对比结果。可以理解的是,该对比结果至少指示了录制流量数据和第一回放流量数据中存在差异的字段,将对比结果中所指示存在差异的字段称为差异字段。
步骤250,根据对比结果所指示的差异字段,对录制流量数据和第二回放流量数据进行去噪处理。
由于录制流量数据来源于线上环境,第一回放流量数据来源于仿真环境,而线上环境与仿真环境是相同的运行环境,尽管两者可以具有相同软硬件配置,但是由于运行情况不同,可能造成针对目标业务服务的同个请求对相同的环境发起两次请求具有不同的回放流量数据,而不同的回放流量数据之间的差异并非由运行环境不同造成,因此,针对目标业务服务的同个请求对同个环境发起两次请求,如果二者有差异,则表明差异字段就是噪声。
在一些应用场景中,在请求目标业务服务的过程中,由于一些随机字段,例如时间戳、广告ID等、运行环境中的内部环境变化(第一次从缓存中读,回放的时候可能缓存没有数据,发起请求读的数据可能跟在缓存中的不一致),会导致录制流量数据中存在噪声。如果直接将该录制流量数据与在测试环境中进行流量回放所得到的第二回放流量数据进行对比,则会将因随机字段等导致所得到的测试结果存在噪声干扰。相关技术中,对于测试结果中的噪声干扰,需要用户人工进行分析来排除,而通过人工分析来排除噪声费时费力,效率较低。
在一些实施例中,去噪处理可以是将作为噪声的差异字段过滤掉,即:基于对比结果所指示的差异字段,分别对录制流量数据和第二回放流量数据进行差异字段过滤,以过滤掉录制流量数据中所包括对比结果指示的差异字段、以及过滤掉第二回放流量数据中所包括对比结果指示的差异字段。
在一些实施例中,去噪处理可以是将作为噪声的差异字段进行标记,即:基于对比结果所指示的差异字段,可以在录制流量数据和第二回放流量数据中进行噪声标记,即,将录制流量数据所包括的差异字段标记为噪声,以及将第二回放流量数据中的差异字段标记为噪声,从而,在步骤260中,将录制流量数据中未被标记为噪声的字段,与第二回放流量数据中未被标记为噪声的字段进行对比,而录制流量数据和第二回放流量数据中被标记为噪声的字段并不参与对比。
在本申请的方案中,基于对比结果中所指示的差异字段,对录制流量数据和第二回放流量数据进行去噪处理,从而,避免因随机字段等所带来的噪声引入到最后的测试结果。
步骤260,根据去噪处理后的录制流量数据和去噪处理后的第二回放流量数据,生成目标业务服务的测试结果。
在步骤260中,将去噪处理后的录制流量数据和去噪处理后的第二回放流量数据进行对比,以将录制流量数据和第二回放流量数据中除差异字段外的其他字段进行对比,从而,可以确定去噪处理后的录制流量数据与去噪处理后的第二回放流量数据之间的差异信息;然后根据差异信息生成目标业务服务的测试结果,以在测试结果中指明该差异信息。
其中,去噪处理后的录制流量数据与去噪处理后的第二回放流量数据之间的差异信息可以能是由于部署于线上环境中的目标业务服务与测试环境中的目标业务服务的处理逻辑不同导致(例如测试环境中的目标业务服务是升级后的目标业务服务),如果是此种原因,所得到的测试结果可以用于开发程师来进一步分析造成二者不同的原因。
在本申请的一些实施例中,还可以基于去噪处理后的录制流量数据与去噪处理后的第二回放流量数据之间的差异信息来计算差异比例,并将该差异比例添加到测试结果中。在一实施例中,可以先统计录制流量数据中调用目标业务服务的总计次数;然后,基于差异信息,统计针对目标业务服务的请求入参相同的情况下,在线上环境和在测试环境中所得到的处理结果(即请求出参)不同的次数(为便于区分,称为响应差异次数),然后将响应差异次数与总计次数相除,得到差异比例。
在其他实施例中,该差异信息还可以是由测试环境中的目标业务服务未对请求进行响应所导致,因此,还可以统计测试环境中目标业务服务的未响应次数,并将未响应次数添加到测试结果中。当然,在其他实施例中,还可以基于差异信息来统计其他的统计参数,在此不进行具体限定。
在对录制流量数据和第二回放流量数据进行去噪后,在将去噪处理后的录制流量数据与去噪处理后的第二回放流量数据进行对比的过程中,对比结果中所指示的差异字段不参与到该对比过程中,仅将录制流量数据和第二回放流量数据中除对比结果中的差异字段外的其他字段进行对比,从而,避免录制流量数据和第二回放流量数据进行对比所得到的目标对比结果中受到噪声干扰,实现自动去噪,保证测试结果的准确性。
图3是根据本申请一实施例示出的进行流量数据的对比示意图,如图3所示,现将针对目标业务服务的录制流量数据310与在仿真环境中进行流量回放所得到第一回放流量数据320进行初次对比,得到对比结果340。之后,可以基于对比结果340所指示的差异字段,将录制流量数据31和在测试环境中进行流量回放所得到的第二回放流量数据330进行对比,得到目标对比结果350。具体的,可以先根据对比结果340所指示的差异字段,将录制流量数据310和第二回放流量数据330进行去噪处理,然后将去噪处理后的录制流量数据与去噪处理后的第二回放流量数据进行对比,得到目标对比结果。可以理解的是,该目标对比结果反映了录制流量数据和第二回放流量数据之间的实际差异部分,而不包括因噪声所导致的差异部分,因此,避免用户在得到测试结果后,花费大量时间排查测试结果中的噪声。
在本申请的方案中,先根据目标业务服务在线上环境中的录制流量数据在仿真环境中进行流量回放得到第一回放流量数据;然后根据录制流量数据与第一回放流量数据的对比结果中的差异字段,对录制流量数据和在测试测试环境中进行流量回放所得到的第二回放流量数据进行去噪处理;最后将去噪处理后的录制流量数据和去噪处理后的第二回放流量数据进行对比,生成目标业务服务的测试结果。由于在将录制流量数据和第二回放流量数据进行对比之前,对录制流量数据和第二回放流量数据进行了去噪处理,因此,实现了自动进行去噪处理,避免在测试过程中因随机字段等随机事件所造成的噪声引入到目标业务服务的测试结果中,保证了测试结果的准确性和有效性。对于测试人员来说,不需要花费大量的时间分析测试结果以排查噪声。
在本申请的一些实施例中,在步骤220之前,该方法还包括:对目标业务服务对应的录制流量数据进行过滤处理,以根据过滤后的录制流量数据在测试环境和在仿真环境中进行流量回放。
可以理解的是,录制流量数据中可以包括多次调用目标业务服务所产生的流量数据,而在多次调用目标业务服务的过程中,所对应的请求参数可能相同也可能不同。
调用目标业务服务,具体来说,是调用方向目标业务服务传入请求参数(又称为请求入参),由目标业务服务根据该请求参数进行处理,得到响应参数(又称为请求出参),并将所得到的响应参数返回到调用方。具体的,可以从流量数据中的请求数据包中提取得到请求参数,从流量数据中的响应数据保重提取得到响应参数。
如果录制流量数据中包括相同请求入参的多次调用过程中所产生的多组流量数据,理论上来说,目标业务服务针对相同请求入参所处理得到的请求出参也是相同的,因此,如果将相同请求入参的多次调用过程中所产生的多组流量数据,均在仿真环境(以及测试环境)中进行流量回放,相当于在仿真环境(以及测试环境)进行重复的流量回放,导致仿真环境和测试环境中重复的流量回放次数较多,而该重复的流量回放对目标业务服务的测试结果作用并不大,因此,额外增加了流量回放压力,而且,也增加了后续进行去噪和数据对比的处理压力。因此,为了避免或者尽可能少的重复流量回放,可以根据请求入参来对目标业务服务对应的录制流量数据进行过滤。
在一些实例中,将录制流量数据中相同请求入参的多次调用过程所对应的多组流量数据,过滤其中的若干组流量数据,而仅保留相同请求入参的第一数量次调用所产生的第一数量组流量数据,该第一数量可以根据实际需要进行设定,例如第一数量为1,第一数量为2等,从而,可以有效减少重复的流量回放,减少了后续的处理压力,可以在保证流量回放覆盖的场景全面性(即基于多组不同的请求参数对应的流量数据来进行流量回放)的前提下,避免额外增加处理压力,提高测试效率。
在本申请的一些实施例中,还可以计算两组流量数据之间的流量相似度,根据流量相似度来对录制流量数据所包括的多组流量数据进行过滤,以仅将流量相似度高于设定阈值的两组流量数据中的一组流量数据用于流量回放。
在本申请的一些实施例中,录制流量数据包括在线上环境中目标业务服务在调用主链上的主链流量数据;第一回放流量数据包括针对调用主链的主链回放流量;主链回放流量包括主链回放请求包和主链回放响应包;在本实施例中,如图4所示,步骤220进一步包括:
步骤410,由指定代理服务根据主链流量数据中的主链请求包,生成针对调用主链的主链回放请求包。
步骤420,由指定代理服务根据主链回放请求包,向部署于仿真环境中的目标业务服务发起服务请求。
可以理解的是,主链流量数据包括目标业务服务所接收到的请求包和目标业务服务所返回的响应包。在本方案中,将主链流量数据中的请求包称为主链请求包。
在本申请的方案中,为进行流量回放,部署了指定代理服务,该指定代理服务用于接管录制流量数据中的全部请求,因此,由指定代理服务根据主链请求包中的参数生成用于请求仿真环境中目标业务服务的主链回放请求包。可以理解的是,主链请求包和主链回放请求包中请求入参的值是相等的。
步骤430,由部署于仿真环境中的目标业务服务根据主链回放请求包进行处理,生成针对调用主链的主链回放响应包。
通过如上步骤410-430,可以得到在仿真环境中针对目标业务服务的调用主链进行流量回放所产生的主链回放流量。
可以理解的是,在测试环境中,同样部署了代理服务,从而在测试环境中针对目标业务服务进行流量回放过程中,由代理服务接管目标业务服务调用过程中的全部请求,进而按照步骤410-430相似的过程,生成目标业务服务的调用主链在测试环境中的回放流量数据。
在本申请的一些实施例中,录制流量数据还包括在线上环境中在调用主链的下游服务对应的下游流量数据;第一回放流量数据还包括针对下游服务的下游回放流量;下游回放流量包括下游回放请求包和下游回放响应包;在本实施例中,如图5所示,步骤220还包括:
步骤510,由指定代理服务根据下游流量数据中的下游请求包,在仿真环境中进行请求回放,得到针对下游服务的下游回放请求包。
如上所描述,目标业务服务的实现可能需要调用其他的服务,所调用的其他服务即为调用主链的下游服务。线上环境中该下游服务在目标业务服务运行过程中所产生的流量数据称为下游流量数据。可以理解的是,目标业务服务所依赖的下游服务可以是一个也是多个,在此不进行具体限定。
在本方案中,为便于区分,将下游流量数据中的请求包称为下游请求包,将下游流量数据中的响应包称为下游响应包。将在仿真环境中调用目标业务服务过程中针对下游服务所发起的请求包称为下游回放请求包。同理,下游回放请求包中请求入参的值与下游请求包中请求入参的值是相同的。
步骤520,由部署于仿真环境中的桩服务响应于回放请求包,根据为下游服务生成的模拟数据进行组包,得到针对下游服务的下游回放响应包。
桩服务,又称打桩服务,是指用一种非侵入性的方式,让被测试服务中调用的第三方服务被模拟,这样当测试到使用第三方服务的时候能够快速反馈指定内容,而无需真正调用到第三方服务。该模拟调用第三方服务的服务即为桩服务。
通过在仿真环境中部署桩服务,从而,不需要在仿真环境中部署目标业务服务所实际调用的下游服务,通过桩服务来模拟下游服务。具体的,桩服务在接收到针对下游服务的回放请求包后,根据为该下游服务所生成的模拟数据,按照下游响应包的组包格式进行组包,得到模拟的下游回放响应包。在一些实施例中,桩服务可以是根据下游流量数据中的下游响应包来生成模拟数据,从而保证模拟数据中下游服务对应的请求出参的参数值与下游响应包中请求出参的参数值相同。
在本申请的一些实施例中,步骤220之前,该方法还包括:根据下游流量数据中的下游响应包,生成针对下游服务的模拟数据,并将模拟数据与模拟数据的模拟标识关联存储于模拟数据库中;将模拟数据的模拟标识和目标业务服务对应的调用标识关联存储于缓存中。在本实施例中,步骤520之前,该方法还包括:由桩服务对回放请求包进行解析,确定回放请求包所携带的调用标识;若缓存中存在与回放请求包所携带调用标识相关联的模拟标识,则根据与回放请求包所携带调用标识相关联的模拟标识,从模拟数据库中查询获得为下游服务生成的模拟数据。
调用标识,又可称为调用链路标识(Trace ID),用于唯一标识一次请求所经过的整个调用链路,也就是说,在业务服务需要依赖其他服务实现的情况下,针对业务服务一次调用过程的调用标识不仅可以用于标识该次调用过程中针对业务服务的调用主链,还可以标识该次调用过程中所经过的下游服务。
在本申请的一些实施例中,在需要针对线上环境中的目标业务服务进行流量录制时,测试系统针对线上环境中目标业务服务的每次调用对应生成调用标识,并将该调用标识向下传递,从而,为目标业务服务所部署的埋点所上报的流量数据中均携带该调用标识;在此基础上,测试系统在接收到多个埋点上所上报的流量数据后,根据流量数据中携带的调用标识来进行分类,从而确定对应于同一次调用过程的流量数据集合。
在本申请的一些实施例中,测试系统在获取到针对目标业务服务的录制流量数据后,若该录制流量数据中包括针对下游服务的下游流量数据,则桩服务根据每一下游流量数据中的下游响应包生成针对所对应下游服务的模拟数据,并对应生成模拟标识,然后将模拟标识和所对应调用过程的调用标识关联存储,并将针对下游服务生成的模拟数据与对应的模拟标识关联存储在模拟数据库中,从而,在流量回放过程中,桩服务可以直接从模拟数据库中查询获取下游服务对应的模拟数据来组包生成下游回放响应包。
在本实施例中,在流量回放过程中,面向仿真环境中所发起的请求携带录制流量数据所对应调用过程的调用标识,因此,可以根据回放请求包所携带的调用标识,在缓存中查询是否与该调用标识相关联的模拟标识,若存在,则可以根据与该调用标识相关联的模拟标识,从模拟数据库中查询获得为下游服务生成的模拟数据。
在本实施例中,由于在进行流量回放之前,先为下游服务生成模拟数据并存储,从而在流量回放过程中可以根据需要获取下游服务的模拟数据,而不是在需要组建下游回放响应包时才生成模拟数据,可以有效提高流量回放效率。
可以理解的是,在目标业务服务需要依赖其他下游服务实现的情况下, 步骤430中,仿真环境中的目标业务服务还需要根据各个下游服务的处理结果来进行处理,并对应生成主链回放请求包。
需要说明的是,根据录制流量数据在测试环境中进行流量回放的过程与在仿真环境中进行流量回放的过程相似,在此不再赘述在测试环境中进行流量回放的过程。同样的,在测试环境中也部署了桩服务和指定代理服务,由指定代理服务来接管录制流量数据中的全部请求,并由桩服务来模拟目标业务服务的下游服务。
在本申请的一些实施中,在回放环境(仿真环境、测试环境)中进行流量回放过程中,还可以在用户界面上显示所得到的第一回放流量数据和第二回放流量数据。在针对目标业务服务的下游服务也进行流量回放的情况下,基于所显示的第一回放流量数据、第二回放流量数据,从微观上看,能清晰地看到目标业务服务的一次调用过程中所经过的程序内部路径;从宏观上看,能看到该次调用过程中所经过程序内部路径的数量。
若目标业务服务为排序服务,例如广告排序服务,由于广告排序服务过程中,广告拉取具有非幂等性(即一个操作是不可重复的),如果仅通过广告排序服务的接口返回包来验证广告排序服务,则无法验证到广告的排序的内部执行过程。而如果通过埋点上报的方式进行流量录制,若所设置的埋点覆盖了广告排序服务的全部链路,则根据广告排序服务的录制流量数据、或第一回放流量数据或第二回放流量数据进行可视化显示过程中,可以验证广告排序服务的内部执行逻辑过程,从而验证广告排序服务的排序策略是否异常。
在本申请的一些实施例中,如图6所示,步骤210之前,该方法还包括:
步骤610,接收在线上环境中所设置多个埋点上报的埋点流量数据。
在线上环境中,可以针对多个业务服务均设置埋点。对于一业务服务所设置的埋点可以覆盖该业务服务的主调用链路,若该业务服务还包括需要调用的下游服务,则该所设置的埋点还可以进一步覆盖该主调用链路下的下游服务。从而,所收集到的埋点流量数据不仅可以反映业务服务的调用主链上的流量情况,还可以进一步反映在业务服务运行过程中下游服务的流量情况。基于下游服务上的埋点上报的埋点流量数据,可以分析业务服务的中间执行过程,而不进行是关注业务服务的端点执行过程。
在本申请的一些实施例中,可以在用户界面上设置流量录制开关,从而当用户触发打开该流量录制开关时,测试系统可以与线上环境建立通信连接,从而,该测试系统可以接收线上环境中所设置多个埋点上报的埋点流量数据。
步骤620,对埋点流量数据进行预处理,得到各业务服务对应的录制流量数据。
在业务服务的一次调用过程所产生的流量数据包括多个埋点所上报的埋点流量数据。因此,为便于后续以业务服务为单位进行分析,在步骤620中,所进行的预处理可以是按照业务服务对应的服务标识,对埋点流量数据进行分类处理,从而聚合出各个业务服务在一次调用过程中的录制流量数据。
在流量录制过程中,测试系统可能面向多个业务服务进行流量录制,也可以针对同一业务服务面向多个用户进行流量录制,从而,测试系统所接收到的埋点流量数据中包括来自多个业务服务的多次调用过程,在该种情况下,可以结合埋点流量数据所携带的调用标识和业务服务的服务标识,来进行埋点流量数据分类,得到每一业务服务在一次调用过程中的录制流量数据。
在本申请的一些实施例中,请继续参阅图6所示,步骤620进一步包括:步骤621,对埋点流量数据进行解析,得到解析流量数据。步骤622,对解析流量数据进行过滤,得到录制流量数据。
在本申请的一些实施例中,在步骤621中,可以按照测试环境或者仿真环境所支持的协议对埋点流量数据进行解析,则在将录制流量数据存储至指定数据库后,在流量回放过程中,可以对录制流量数据随取随用,而不需要再次对流量数据进行解析。
在一些实施例中,可以按照预先设定的过滤策略对解析流量数据进行过滤,该过滤策略可以是过滤超时请求、过滤不满足预设校验规则的流量、还可以是过滤流量相似度较高的流量数据。
在本申请的一些实施例中,步骤622,包括:若确定解析流量数据中包括超时请求,或者,根据预设校验规则确定解析流量数据中的请求不满足预设校验规则,则将解析流量数据过滤掉。
在一些实施例中,预设校验规则可以是为指定字段设定取值范围、为指定字段设定的枚举值、判断字段是否存在等,在此不进行具体限定。
步骤630,将各业务服务对应的录制流量数据存储于指定数据库中。
在本实施例中,步骤210进一步包括:根据对目标业务服务触发的流量回放操作,按照目标业务服务对应的服务标识,从指定数据库中获取目标业务服务对应的录制流量数据。
在本实施例中,在用户界面上设置流量回放开关,该流量回放开关可以是用户界面上的流量回放触发控件,用户可以触发流量回放触发控件,以启动进行流量回放。用户触发流量回放触发控件,以启动进行流量回放的操作可以视为流量回放操作。
在本实施例中,将线上环境中的埋点所上报的埋点流量数据进行预处理得到各业务服务对应的录制流量数据后,将录制流量数据存储于指定数据库中,从而,用户可以根据实际需要选取需要流量回放的目标业务服务后,从指定数据库中获取该目标业务服务的录制流量数据。
在一些实施例中,基于指定数据库中的录制流量数据,在用户界面中还可以按照测试系统预设或者用户自定义的统计分析规则对一业务服务的多组录制流量数据进行统计分析。用户自定义的统计分析规则可以是统计流量回放覆盖的人群地域、年龄段、统计流量回放覆盖的手机版本号、网络、设备信息等,从而可以对应查看在各个场景下的流量覆盖情况,避免出现覆盖不全的情况。
在本申请的一些实施例中,步骤621,包括:计算任意两组解析流量数据之间的流量相似度;将流量相似度超过流量相似度阈值的两组解析流量数据中的其中一组解析流量数据过滤掉。
相对而言,针对同一业务服务的多组流量数据中可能存在相似度较高的流量数据的概率更高,因此,为了提高处理效率,可以在按照所对应的业务服务对流量数据进行分类后,再在每一业务服务所对应的多组流量数据中,按照流量相似度来进行流量过滤。
在本申请的一些实施例中,如图7所示,可以按照如下的过程计算两组解析流量数据之间的流量相似度:步骤710,对于待计算流量相似度的第一流量数据和第二流量数据,从第一流量数据中获取第一请求包和第一响应包;以及步骤720,从第二流量数据中获取第二请求包和第二响应包。
如上所描述,流量数据中包括请求包和响应包,为便于区分,将第一流量数据中的请求包称为第一请求包,将第一流量数据中的响应包称为第一响应包;将第二流量数据中的请求包称为第二请求包,将第二流量数据中的响应包称为第二响应包。
步骤730,根据第一请求包中的包体字符串和第二请求包中的包体字符串,计算得到请求相似度。
数据包是通信传输中的数据单位。一个数据包分成两个部分,即包头(head)和包体(body),其中,包头中的内容为控制信息,包体中的内容为数据本身。在本申请的方案中,将数据包(请求包、响应包)的包体中的字符串称为包体字符串。
在本申请的一些实施例中,可以计算第一请求包中的包体字符串和第二请求包的包体字符串之间的距离,将所计算得到的距离作为第一请求包与第二请求包之间的请求相似度。
在具体实施例中,可以以包体字符串中的字符为单位来计算两包体字符串之间的距离,所计算的距离可以是汉明距离、编辑距离、jaro距离等,在此不进行具体限定。
汉明距离表示两个(相同长度)字符串对应位不同的数量,若以d(x,y)表示两个字符串x和y之间的汉明距离,对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
编辑距离,又称Levenshtein距离、莱文斯坦距离,是指两个字符串之间,由一个字符串转成另一个字符串所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符、插入一个字符、删除一个字符等。一般的,编辑距离越小,两个字符串的相似度越大。
若以编辑距离表示第一请求包中的包体字符串和第二请求包的包体字符串之间的相似度,则第一流量数据A与第二流量数据B之间的请求相似度可以表示为:
Figure 86254DEST_PATH_IMAGE001
;(1)
其中,
Figure 82023DEST_PATH_IMAGE002
表示第一流量数据A与第二流量数据B之间的请求相似度;
Figure 65023DEST_PATH_IMAGE003
表示第一流量数据A中第一请求包中的包体字符串;
Figure 788128DEST_PATH_IMAGE004
表示第二流量数据B中第二请求包中的包体字符串。
步骤740,根据第一响应包的包体字符串和第二响应包的包体字符串,计算得到响应相似度。
同请求相似度,可以计算第一响应包的包体字符串和第二响应包的包体字符串之间的距离(汉明距离、编辑距离等),来作为响应相似度。
若以编辑距离表示第一响应包中的包体字符串和第二响应包的包体字符串之间的相似度,则第一流量数据A与第二流量数据B之间的响应相似度可以表示为:
Figure 179664DEST_PATH_IMAGE005
;(2)
其中,
Figure 330023DEST_PATH_IMAGE006
表示第一流量数据A与第二流量数据B之间的响应相似度;
Figure 800318DEST_PATH_IMAGE007
表示第一流量数据A中第一响应包中的包体字符串;
Figure 77847DEST_PATH_IMAGE008
表示第二流量数据B中第二响应包中的包体字符串。
步骤750,根据请求相似度和响应相似度,计算得到第一流量数据和第二流量数据之间的流量相似度。
在本申请的一些实施例中,步骤750,包括:获取请求相似度对应的请求权重,以及获取响应相似度对应的响应权重;根据请求权重和响应权重,对请求相似度和响应相似度进行加权,得到第一流量数据和第二流量数据之间的流量相似度。
其中,请求权重和响应权重可以是预先设定的,也可以是根据第一流量数据和第二流量数据来针对性确定的。在一实施例中,可以根据流量数据的请求包中的字段数和响应包中的字段数来计算请求权重和响应权重。在一具体实施例中,可以按照如下公式(3)来计算请求权重,按照如下公式(4)来计算响应权重:
Figure 74622DEST_PATH_IMAGE009
;(3)
Figure 373711DEST_PATH_IMAGE010
;(4)
其中,
Figure 596882DEST_PATH_IMAGE011
表示请求权重,
Figure 661790DEST_PATH_IMAGE012
表示请求包中的字段数,
Figure 263803DEST_PATH_IMAGE013
表示响应包中的字段数。在具体实施例中,可以根据第一流量数据中的请求包中的字段数和响应包中的字段数来计算请求权重和响应权重,也可以根据第二流量数据中的请求包中的字段数和响应包中的字段数来计算请求权重和响应权重;当然,还可以将根据第一流量数据中的请求包中的字段数和响应包中的字段数来所计算得到的请求权重、与根据第二流量数据中的请求包中的字段数和响应包中的字段数所计算得到的请求权重进行平均,将平均计算的结果作为用于进行加权的请求权重;用于进行加权的响应权重可以按照相同的方式确定。
若按照上述公式(3)和(4)计算请求权重和响应权重,响应权重还可以进一步表示为:
Figure 21544DEST_PATH_IMAGE014
;(5)
结合上述公式(1)-(5),第一流量数据A和第二流量数据B之间的流量相似度
Figure 732011DEST_PATH_IMAGE015
可以表示为:
Figure 584298DEST_PATH_IMAGE016
;(6)
在按照如上的过程计算得到任意两组解析流量数据之间的流量相似度之后,对应按照设定的流量相似度阈值,将流量相似度阈值高于该流量相似度阈值的两组解析流量数据中的其中一组解析流量数据过滤掉,从而,避免对相似度较高的多组流量数据均进行流量回放,提高流量回放效率。
在本申请的一些实施例中,该方法还包括:若检测到流量录制开关为打开状态,获取待发送请求,待发送请求携带待发送请求所来源的运行环境的环境标识;若根据待发送请求携带的环境标识确定待发送请求来源于回放环境,则确定待发送请求的请求类型;回放环境包括仿真环境和测试环境;若确定待发送请求的请求类型是非读类型,则对待发送请求进行屏蔽。
在本实施例中,可以在用户界面中设置流量录制开关,该流量录制开关可以是用户界面中的一个操作控件。对应的,可以设置用于指示流量录制开关的状态的第一开关字段,通过该第一开关字段的参数值来表示流量录制开关处于打开状态或者关闭状态。
当流量录制开关的状态为打开状态,表明测试系统可以与线上环境所在的业务系统之间可以进行通信,以使该测试系统可以接收线上运行环境所在业务系统上报的录制流量数据。在本方案中,在测试系统可以与线上环境所在的业务系统之间可以通信的情况下,为了避免测试系统发往业务系统的请求污染业务系统中的数据,在测试系统发送的请求中配置了用于指示请求所来源的运行环境的环境标识。举例来说,可以将IS_OP_SIMULATION字段作为环境字段,当该环境字段的值为1时,表示运行环境为回放环境。
在本申请的方案中,可以根据录制流量数据在仿真环境和测试环境中进行流量回放,因此,仿真环境和测试环境可以统称为回放环境。若回放环境中的为写类型的请求直接发送到线上环境,则可能对线上环境中的数据造成污染,因此,在确定待发送请求来源于回放环境的情况下,可以根据该待发送请求所请求的接口的接口名称来判断该待发送请求的类型。
其中,请求类型可以包括读类型和非读类型,可以理解的是,请求类型为读类型的请求是为了从线上环境中进行数据读取,而不会对线上环境中的数据进行处理(例如数据写入、数据缓存、数据上报等),从而,请求类型为读类型的请求不会污染线上环境中的数据;请求类型为非读类型的请求可以是写请求、缓存请求、上报请求等,如果将请求类型为非读类型的待发送请求发送到线上环境,如果线上环境中的服务响应了该请求,则可能会造成线上环境中数据的污染。例如,若线上环境是广告系统的线上环境,由于广告系统是高度依赖数据的业务,如推荐业务、画像数据、新鲜度数据等,通过控制数据不往广告系统的线上环境中写,可以保证不会影响广告系统的线上环境。
因此,在本方案中,在确定待发送请求的请求类型是非读类型的情况下,对该发送请求进行屏蔽,从而保证只有请求类型为读请求的请求才能发送从测试系统发送到线上环境,实现了线上环境与回放环境之间的隔离,保证了线上环境中数据的安全性。
下面,结合一具体实施例对本申请的实施例进行说明。
图8是根据本申请一具体实施例示出的业务服务的测试方法的流程图,如图8所示,在测试系统中部署了流量录制服务810、流量筛选服务820、回放服务830、桩服务840和数据对比服务850。
当测试系统中的录制开关开启后,流量录制服务810进行流量录制。在流量录制过程中,线上环境中所运行目标服务的调用主链上所产生的流量数据(包括请求包和响应包)、以及调用主链的下游服务(图8中仅示例性示出了下游服务I和下游服务II,下游服务的数量不限于图8所示)产生的流量数据(包括请求包和响应包)均上报到流量录制服务810。具体的,业务服务在线上环境中所产生的流量数据可以是通过所设置的多个埋点进行上传。各个埋点向流量录制服务810上传埋点流量数据的过程即为流量录制过程。之后,流量录制服务810依次将埋点流量数据进行数据存储和流量解析。
流量解析完成后,由流量筛选服务820进行流量数据过滤,在将过滤后的流量数据加入到消息队列中,以等待回放服务830从消息队列中获取流量数据在回放环境(仿真环境或者测试环境)中进行流量回放。在回放环境中,由回放环境中可能没有部署业务服务的调用主链的下游服务,从而,由回放环境中的桩服务840来构建针对下游服务的响应包。之后,由数据对比服务850将业务服务在线上服务中的录制流量数据与在回放环境中进行流量回放所的得到的回放流量数据(第一回放流量数据、第二回放流量数据)进行对比,具体对比的过参见上文步骤240-260的过程,在此不再赘述。最后,由显示终端显示数据对比结果,进一步的,还可以针对数据对比服务进行业务规则配置。
下面,对流量筛选服务820进行具体说明。在本实施例中,流量筛选服务820是针对提升录制流量数据回放效能的服务。所采集来自线上环境的埋点流量数据存在冗余的情况,如果直接回放将会出现耗时久、覆盖不全的问题。本方案通过流量筛选服务820来提升流量回放的效能,通过更少的流量达到更大的覆盖。同时可以采用gcov工具(一种覆盖率测试工具)来评估衡量流量的覆盖率。
在一具体实施例中,可以按照如下的优先级过程来进行流量筛选:1)过滤无效请求(例如超时请求);2)按请求特征项提取(请求特征例如服务名、方法名等);3)按流量比例;4)按照广告位维度;5)按照流量相似度筛选。
也就是说,第一步,基于将多组埋点流量数据中包括无效请求的埋点流量数据过滤掉;第二步,按照业务服务的名称,第一步中过滤后剩下的埋点流量数据中获取选定需要进行流量回放的一个或者多个目标业务服务对应的流量数据;第三步,由于一个目标业务服务面向众多地区、众多年龄段的用户,因此,可以按照针对各个流量分类设定的比例,来从第二步中所获取到的流量数据中选取对应比例的流量数据;流量分类可以是按照用户的年龄段、用户所属地区、客户端的操作系统、用户性别等维度进行分类;第四步,若流量中涉及广告位,则进一步从第三步中获取的流量数据中进一步获取携带选定广告位ID的流量数据;第五步,计算第四步所得到任意两组流量数据之间的流量相似度,以将流量相似度高于设定相似度阈值的两组流量数据中的其中一组过滤掉。
在另一些实施例中,流量筛选服务820可以利用流量相似度聚类、特征加强等机器学习算法,更加有效地聚合流量数据,在资源和时间紧张对情况下,可以快速地以最少的流量最大限度地覆盖被测的目标业务服务。
图9是根据本申请一具体实施例示出的流量录制服务进行处理的流程图。如图9所示,流量录制服务在将埋点所上报的埋点流量数据进行数据存储后,通过实时流数据处理910和离线消费920来处理埋点数据。在一些实施例中,埋点流量数据可以上报到大数据采集交换平台(例如tdbank)中进行存储。在实时流数据处理910中,包括如下步骤:步骤911,获取数据流;步骤912,解析数据流;步骤913,校验;步骤914,写入HDFS(HadoopDistributed File System,Hadoop分布式文件系统)。在本实施例中,可以通过实时流处理任务(例如spark streaming)实时消费大数据采集交换平台中的实时数据流,然后在步骤912中,可以按照流量回放平台所指示的格式对数据流进行解析,从而,便于在流量回放过程中流量数据的消费端即取即用。而且,通过解析好的数据,可以先过滤掉一部分非法流量,减少存储成本。具体的,若在回放环境中所支持的协议是ProtocolBuf协议(是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议),在步骤912中,利用预先proto预编译jar包来解析数据流。在步骤913中,可以按照预先设定的校验规则进行校验,其中,该预先设定的校验规则可以是为指定字段设定取值范围、为指定字段设定枚举值、判断字段是否存在等,在此不进行具体限定。
在离线消费920阶段,可以是在spark系统中进行,在该阶段中,由spark离线消费任务将HDFS文件落地到hermes系统中存储。该hermes系统是一个实时检索分析平台,便于用户进行流量数据检索和分析。
之后,基于hermes系统中存储的录制流量数据,可以在客户端的用户界面上进行可视化显示930。进一步的,基于客户端的用户界面,用户可以添加或者更新用于步骤913中校验的校验规则,以及用户可以操作用户界面中的流量录制开关,启动或者停止进行流量录制。
其中,用户界面还可以按照设定的宏观实验效果指标,针对录制流量数据和第二回放流量数据进行宏观你实验效果指标的计算,并将所计算得到的宏观实验效果指标进行对比显示。进一步的,用户界面中还可以将去噪后录制流量数据和第二回放流量数据的对比结果进行显示。
图10是根据本申请一具体实施例示出的流量回放服务的时序图。流量回放服务是一个多线程异步服务,其核心实现包含了多个进程子服务,处理时序如图10所示,包括:步骤1001,请求创建流量回放任务;步骤1002,校验参数;具体会校验票据信息是否合法,避免是恶意回放;会校验请求人、CI任务ID等是否为空;步骤1003,插入创建信息;步骤1004,返回回放任务ID;步骤1005,组请求包;具体的,若在仿真环境中,可以是根据模拟数据的模拟标识、目标业务服务的请求包、仿真环境地址等来组请求包;步骤1006,请求仿真环境中转服务;进而通过自动化引擎服务来负责业务服务的请求的发包以及调度;由自动化引擎服务将json数据格式的请求转成ProtocolBuf格式的请求,并朝仿真环境中的代理服务(simultaion_proxy)发起请求。步骤1007,请求目标业务服务,并模拟下游服务;步骤1008,发送回放流量数据;步骤1009,数据上报;步骤1010,存储调用链路数据;步骤1011,更新流量回放任务状态;步骤1012,上报流量回放对比数据;收到响应包之后请求数据对比服务,并将整个流量回放过程中的回放流量数据/对比数据上报web端显示步骤1013,轮询流量回放任务状态,发送流量回放测试报告。
下面,对桩服务进行具体说明。在流量录制完成后,桩服务会根据业务服务的下游服务的下游响应包生成模拟数据(mock数据),并将该模拟数据与对应的模拟标识(mockid)关联存储,并在缓存中将对应的调用标识(trce id)和模拟标识关联存储。
在流量回放过程中,流量回放服务会在请求包的头部注入录制时的调用标识。桩服务接管仿真环境中的所有录制流量数据后,会解析请求包,以获取请求包携带的调用标识,如果缓存中存在该调用标识相绑定的模拟标识,则按照该调用标识所绑定的模拟标识获取模拟数据,并按照录制流量数据中的响应包的格式进行组包,返回给调用方。
图11是根据本申请一具体实施例示出的桩服务的处理流程图。如图11所示,包括:步骤1110,接收请求包;可以理解的是,所接收到的请求包为流量回放过程中针对下游服务的下游回放请求包;在具体实施例中,桩服务根据包头中的长度字段指示的长度,接收完整的包体sBuffer;步骤1120,解析请求包;具体的,按照 ProtocolBuf协议,将二进制数据格式的包体sBuffer反序列化成请求对象oReq,然后解析得到本次请求的调用标识traceid;步骤1130,判断是否有相绑定的模拟标识;具体的,可以按照解析获得的调用标识,在缓存中查询是否有与该调用标识相绑定的模拟标识;若为是,则执行步骤1140,若为否,则继续转发;步骤1140,获取模拟数据构建下游回放响应包;具体的,将根据模拟标识获取的模拟数据转换成protobuffer对象,并序列化成二进制流oBusiness作为包体的内容,再根据框架的应用层协议添加包头信息和添加状态码等,即完成下游回放响应包的构建;步骤1150,发送下游回放响应包;具体的,可以通过HTTP服务端发送下游回放响应包。
基于图8-11所的业务服务的测试方案,一方面由于方案中通过在业务服务经过的全链路上设置埋点来进行流量录制,所得到的录制流量数据可以反映业务服务的中间处理过程,因此,可以解决业务服务的程序内部执行路径无法校验,只能校验到接口回包的粗粒度校验的问题。换言之,本方案既能从宏观上验证到统计指标数据,又能从微观上分析每次请求的全过程差异,校验更加精准。同时,对于广告排序服务的效果也可以按照本实施例的方案进行上线前验证,有效解决现有技术中因只能在上线后才能对真实用户请求做流量分组实验,因承担策略和服务不可用或异常带来的外网事故和广告主索赔风险的问题。另一方面,可以基于录制流量数据与第一回放流量数据的对比结果进行自动降噪,从而不需要人工进行对比结果的去噪,提高测试结果的准确性。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的方法。对于本申请装置实施例中未披露的细节,请参照本申请上述方法实施例。
图12是根据一实施例示出的业务服务的测试装置的框图,如图12所示,该业务服务的测试装置包括:录制流量数据获取模块1210,用于获取目标业务服务对应的录制流量数据,录制流量数据是对目标业务服务在线上环境中进行流量录制得到的;流量录制是指对目标业务服务在线上环境运行过程中产生的流量数据进行复制;第一流量回放模块1220,用于根据录制流量数据,在仿真环境中进行流量回放,获得目标业务服务在仿真环境中的第一回放流量数据;仿真环境是所模拟与线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起录制流量数据中的请求,并由仿真环境中的目标业务服务对重新发起的请求进行处理;以及第二流量回放模块1230,用于根据录制流量数据,在测试环境中进行流量回放,得到目标业务服务在测试环境中的第二回放流量数据,测试环境是所部署用于测试的运行环境;对比模块1240,用于将录制流量数据与第一回放流量数据进行对比,得到对比结果;去噪处理模块1250,用于根据对比结果所指示的差异字段,对录制流量数据和第二回放流量数据进行去噪处理;测试结果生成模块1260,用于根据去噪处理后的录制流量数据和去噪处理后的第二回放流量数据,生成目标业务服务的测试结果。
在本申请的一些实施例中,录制流量数据包括在线上环境中目标业务服务在调用主链上的主链流量数据;第一回放流量数据包括针对调用主链的主链回放流量;主链回放流量包括主链回放请求包和主链回放响应包;在本实施例中,第一流量回放模块1220,包括:主链回放请求包生成单元,用于由指定代理服务根据主链流量数据中的主链请求包,生成针对调用主链的主链回放请求包;第一服务请求发起单元,用于由指定代理服务根据主链回放请求包,向部署于仿真环境中的目标业务服务发起服务请求;服务处理单元,用于由部署于仿真环境中的目标业务服务根据主链回放请求包进行处理,生成针对调用主链的主链回放响应包。
在本申请的一些实施例中,录制流量数据还包括在线上环境中在调用主链的下游服务中的下游流量数据;第一回放流量数据还包括针对下游服务的下游回放流量;下游回放流量包括下游回放请求包和下游回放响应包;第一流量回放模块1220,还包括:下游回放请求包获得单元,用于由指定代理服务根据下游流量数据中的下游请求包,在仿真环境中进行请求回放,得到针对下游服务的下游回放请求包;组包单元,用于由部署于仿真环境中的桩服务响应于回放请求包,根据为下游服务生成的模拟数据进行组包,得到针对下游服务的下游回放响应包。
在本申请的一些实施例中,业务服务的测试装置还包括:模拟数据生成模块,用于根据下游流量数据中的下游响应包,生成针对下游服务的模拟数据,并将模拟数据与模拟数据的模拟标识关联存储于模拟数据库中;关联存储模块,用于将模拟数据的模拟标识和目标业务服务对应的调用标识关联存储于缓存中;解析模块,用于由桩服务对回放请求包进行解析,确定回放请求包所携带的调用标识;模拟数据获取模块,用于若缓存中存在与回放请求包所携带调用标识相关联的模拟标识,则根据与回放请求包所携带调用标识相关联的模拟标识,从模拟数据库中查询获得为下游服务生成的模拟数据。
在本申请的一些实施例中,业务服务的测试装置还包括:埋点流量数据接收模块,用于接收在线上环境中所设置多个埋点上报的埋点流量数据;预处理模块,用于对埋点流量数据进行预处理,得到各业务服务对应的录制流量数据;录制流量数据存储模块,用于将各业务服务对应的录制流量数据存储于指定数据库中;在本实施例中,录制流量数据获取模块1210进一步被配置为:根据对目标业务服务触发的流量回放操作,按照目标业务服务对应的服务标识,从指定数据库中获取目标业务服务对应的录制流量数据。
在本申请的一些实施例中,预处理模块,包括:解析单元,用于对埋点流量数据进行解析,得到解析流量数据;过滤单元,用于对解析流量数据进行过滤,得到录制流量数据。
在本申请的一些实施例中,过滤单元,包括:流量相似度计算单元,用于计算任意两组解析流量数据之间的流量相似度;过滤执行单元,用于将流量相似度超过流量相似度阈值的两组解析流量数据中的其中一组解析流量数据过滤掉。
在本申请的一些实施例中,流量相似度计算单元,包括:请求包和响应包获取单元,用于对于待计算流量相似度的第一流量数据和第二流量数据,从第一流量数据中获取第一请求包和第一响应包;以及从第二流量数据中获取第二请求包和第二响应包;请求相似度计算单元,用于根据第一请求包中的包体字符串和第二请求包的包体字符串,计算得到请求相似度;响应相似度计算单元,用于根据第一响应包的包体字符串和第二响应包的包体字符串,计算得到响应相似度;流量相似度确定单元,用于根据请求相似度和响应相似度,计算得到第一流量数据和第二流量数据之间的流量相似度。
在本申请的一些实施例中,流量相似度确定单元,包括:权重获取单元,用于获取请求相似度对应的请求权重,以及获取响应相似度对应的响应权重;加权单元,用于根据请求权重和响应权重,对请求相似度和响应相似度进行加权,得到第一流量数据和第二流量数据之间的流量相似度。
在本申请的一些实施例中,过滤单元进一步被配置为:若确定解析流量数据中包括超时请求,或者,根据预设校验规则确定解析流量数据中的请求不满足预设校验规则,则将解析流量数据过滤掉。
在本申请的一些实施例中,业务服务的测试装置还包括:待发送请求获取模块,用于若检测到流量录制开关为打开状态,获取待发送请求,待发送请求携带待发送请求所来源的运行环境的环境标识;请求类型确定模块,用于若根据待发送请求携带的环境标识确定待发送请求来源于回放环境,则确定待发送请求的请求类型;回放环境包括仿真环境和测试环境;请求屏蔽模块,用于若确定待发送请求的请求类型是非读类型,则对待发送请求进行屏蔽。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理单元(Central Processing Unit,CPU)1301,其可以根据存储在只读存储器(Read-Only Memory,ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(Random Access Memory,RAM)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1303中,还存储有系统操作所需的各种程序和数据。CPU1301、ROM1302以及RAM 1303通过总线1304彼此相连。输入/输出(Input/Output,I/O)接口1305也连接至总线1304。
以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载计算机可读指令,当该计算机可读存储指令被处理器执行时,实现上述任一实施例中的方法。
根据本申请的一个方面,还提供了一种电子设备,其包括:处理器;存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时,实现上述任一实施例中的方法。
根据本申请实施例的一个方面,提供了计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例中的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种业务服务的测试方法,其特征在于,包括:
获取目标业务服务对应的录制流量数据,所述录制流量数据是对所述目标业务服务在线上环境中进行流量录制得到的;流量录制是指对所述目标业务服务在线上环境运行过程中产生的流量数据进行复制;
根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据,所述仿真环境是所模拟与所述线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起所述录制流量数据中的请求,并由所述仿真环境中的目标业务服务对重新发起的请求进行处理;以及
根据所述录制流量数据,在测试环境中进行流量回放,得到所述目标业务服务在测试环境中的第二回放流量数据,所述测试环境是所部署用于测试的运行环境;
将所述录制流量数据与所述第一回放流量数据进行对比,得到对比结果;
根据所述对比结果所指示的差异字段,对所述录制流量数据和所述第二回放流量数据进行去噪处理;
根据去噪处理后的所述录制流量数据和去噪处理后的所述第二回放流量数据,生成目标业务服务的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述录制流量数据包括在线上环境中所述目标业务服务在调用主链上的主链流量数据;所述第一回放流量数据包括针对所述调用主链的主链回放流量;所述主链回放流量包括主链回放请求包和主链回放响应包;
所述根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据,包括:
由指定代理服务根据所述主链流量数据中的主链请求包,生成针对所述调用主链的主链回放请求包;
由所述指定代理服务根据所述主链回放请求包,向部署于所述仿真环境中的所述目标业务服务发起服务请求;
由部署于所述仿真环境中的所述目标业务服务根据所述主链回放请求包进行处理,生成针对所述调用主链的所述主链回放响应包。
3.根据权利要求2所述的方法,其特征在于,所述录制流量数据还包括在所述线上环境中在所述调用主链的下游服务中的下游流量数据;所述第一回放流量数据还包括针对所述下游服务的下游回放流量;所述下游回放流量包括下游回放请求包和下游回放响应包;
所述根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据,还包括:
由所述指定代理服务根据所述下游流量数据中的下游请求包,在所述仿真环境中进行请求回放,得到针对所述下游服务的下游回放请求包;
由部署于所述仿真环境中的桩服务响应于所述回放请求包,根据为所述下游服务生成的模拟数据进行组包,得到针对所述下游服务的下游回放响应包。
4.根据权利要求3所述的方法,其特征在于,所述根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据之前,所述方法还包括:
根据所述下游流量数据中的下游响应包,生成针对所述下游服务的模拟数据,并将所述模拟数据与所述模拟数据的模拟标识关联存储于模拟数据库中;
将所述模拟数据的模拟标识和所述目标业务服务对应的调用标识关联存储于缓存中;
所述由部署于所述仿真环境中的桩服务响应于所述回放请求包,根据为所述下游服务生成的模拟数据进行组包,得到针对所述下游服务的下游回放响应包之前,所述方法还包括:
由所述桩服务对所述回放请求包进行解析,确定所述回放请求包所携带的调用标识;
若所述缓存中存在与所述回放请求包所携带调用标识相关联的模拟标识,则根据与所述回放请求包所携带调用标识相关联的模拟标识,从所述模拟数据库中查询获得为所述下游服务生成的模拟数据。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述获取目标业务服务对应的录制流量数据之前,所述方法还包括:
接收在所述线上环境中所设置多个埋点上报的埋点流量数据;
对所述埋点流量数据进行预处理,得到各业务服务对应的录制流量数据;
将各业务服务对应的录制流量数据存储于指定数据库中;
所述获取目标业务服务对应的录制流量数据,包括:
根据对所述目标业务服务触发的流量回放操作,按照所述目标业务服务对应的服务标识,从所述指定数据库中获取所述目标业务服务对应的录制流量数据。
6.根据权利要求5所述的方法,其特征在于,所述对所述埋点流量数据进行预处理,得到各业务服务对应的录制流量数据,包括:
对所述埋点流量数据进行解析,得到解析流量数据;
对所述解析流量数据进行过滤,得到所述录制流量数据。
7.根据权利要求6所述的方法,其特征在于,所述对所述解析流量数据进行过滤,得到所述录制流量数据,包括:
计算任意两组解析流量数据之间的流量相似度;
将流量相似度超过所述流量相似度阈值的两组解析流量数据中的其中一组解析流量数据过滤掉。
8.根据权利要求7所述的方法,其特征在于,所述计算任意两组解析流量数据之间的流量相似度,包括:
对于待计算流量相似度的第一流量数据和第二流量数据,从第一流量数据中获取第一请求包和第一响应包;以及从第二流量数据中获取第二请求包和第二响应包;
根据所述第一请求包中的包体字符串和所述第二请求包的包体字符串,计算得到请求相似度;
根据所述第一响应包的包体字符串和所述第二响应包的包体字符串,计算得到响应相似度;
根据所述请求相似度和所述响应相似度,计算得到所述第一流量数据和第二流量数据之间的流量相似度。
9.根据权利要求8所述的方法,其特征在于,所述根据所述请求相似度和所述响应相似度,计算得到所述第一流量数据和第二流量数据之间的流量相似度,包括:
获取所述请求相似度对应的请求权重,以及获取所述响应相似度对应的响应权重;
根据所述请求权重和所述响应权重,对所述请求相似度和所述响应相似度进行加权,得到所述第一流量数据和第二流量数据之间的流量相似度。
10.根据权利要求6至9中任一项所述的方法,其特征在于,所述对所述解析流量数据进行过滤,得到所述录制流量数据,还包括:
若确定所述解析流量数据中包括超时请求,或者,根据预设校验规则确定所述解析流量数据中的请求不满足所述预设校验规则,则将所述解析流量数据过滤掉。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若检测到流量录制开关为打开状态,获取待发送请求,所述待发送请求携带所述待发送请求所来源的运行环境的环境标识;
若根据所述待发送请求携带的环境标识确定所述待发送请求来源于回放环境,则确定所述待发送请求的请求类型;所述回放环境包括仿真环境和测试环境;
若确定所述待发送请求的请求类型是非读类型,则对所述待发送请求进行屏蔽。
12.一种业务服务的测试装置,其特征在于,包括:
录制流量数据获取模块,用于获取目标业务服务对应的录制流量数据,所述录制流量数据是对所述目标业务服务在线上环境中进行流量录制得到的;流量录制是指对所述目标业务服务在线上环境运行过程中产生的流量数据进行复制;
第一流量回放模块,用于根据所述录制流量数据,在仿真环境中进行流量回放,获得所述目标业务服务在仿真环境中的第一回放流量数据,所述仿真环境是所模拟与所述线上环境相同的运行环境;在仿真环境中进行流量回放是指在仿真环境中重新发起所述录制流量数据中的请求,并由所述仿真环境中的目标业务服务对重新发起的请求进行处理;以及
第二流量回放模块,用于根据所述录制流量数据,在测试环境中进行流量回放,得到所述目标业务服务在测试环境中的第二回放流量数据;所述测试环境是所部署用于测试的运行环境;
对比模块,用于将所述录制流量数据与所述第一回放流量数据进行对比,得到对比结果;
去噪处理模块,用于根据所述对比结果所指示的差异字段,对所述录制流量数据和所述第二回放流量数据进行去噪处理;
测试结果生成模块,用于根据去噪处理后的所述录制流量数据和去噪处理后的所述第二回放流量数据,生成目标业务服务的测试结果。
13.一种电子设备,其特征在于,包括:
处理器;
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如权利要求1-11中任一项所述的方法。
15.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-11中任一项所述的方法。
CN202111137712.4A 2021-09-27 2021-09-27 业务服务的测试方法、装置、电子设备及存储介质 Pending CN113590497A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111137712.4A CN113590497A (zh) 2021-09-27 2021-09-27 业务服务的测试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111137712.4A CN113590497A (zh) 2021-09-27 2021-09-27 业务服务的测试方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN113590497A true CN113590497A (zh) 2021-11-02

Family

ID=78242440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111137712.4A Pending CN113590497A (zh) 2021-09-27 2021-09-27 业务服务的测试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113590497A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113852520A (zh) * 2021-11-29 2021-12-28 中国光大银行股份有限公司 数据处理方法及装置
CN114124871A (zh) * 2021-11-24 2022-03-01 中国银行股份有限公司 Mq消息队列的报文信息处理方法及装置
CN114416406A (zh) * 2022-01-30 2022-04-29 重庆长安汽车股份有限公司 一种基于云测平台任务多并发的实现方法
CN114553929A (zh) * 2022-01-10 2022-05-27 多点生活(成都)科技有限公司 录制调用动态Mock的录制回放增强方法和装置
CN114866450A (zh) * 2022-06-15 2022-08-05 湖南快乐阳光互动娱乐传媒有限公司 一种数据处理方法及客户端设备
CN114900445A (zh) * 2022-04-28 2022-08-12 北京百度网讯科技有限公司 流量录制方法、装置及电子设备
CN115396346A (zh) * 2022-08-30 2022-11-25 北京知道创宇信息技术股份有限公司 仿真压力测试方法、装置、系统和电子设备
CN116974948A (zh) * 2023-09-22 2023-10-31 腾讯科技(深圳)有限公司 业务系统测试方法、系统、设备和介质
CN117176623A (zh) * 2023-11-02 2023-12-05 蒲惠智造科技股份有限公司 基于流量回放的压力测试方法和系统
WO2024021362A1 (zh) * 2022-07-29 2024-02-01 深圳前海微众银行股份有限公司 一种流量回放的数据验证方法及装置
CN117555809A (zh) * 2024-01-09 2024-02-13 舟谱数据技术南京有限公司 一种基于流量复制回放的自动化测试方法及相关装置
CN114416406B (zh) * 2022-01-30 2024-04-26 重庆长安汽车股份有限公司 一种基于云测平台任务多并发的实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220448A1 (en) * 2016-02-01 2017-08-03 Linkedin Corporation Regression testing of software services
CN111988200A (zh) * 2020-08-18 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 基于真实流量的自动回归测试方法及装置
CN112650688A (zh) * 2020-12-30 2021-04-13 深圳前海微众银行股份有限公司 自动化回归测试方法、关联设备以及计算机程序产品
CN113032255A (zh) * 2021-03-19 2021-06-25 广州虎牙科技有限公司 响应噪音的识别方法、模型、电子设备及计算机存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220448A1 (en) * 2016-02-01 2017-08-03 Linkedin Corporation Regression testing of software services
CN111988200A (zh) * 2020-08-18 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 基于真实流量的自动回归测试方法及装置
CN112650688A (zh) * 2020-12-30 2021-04-13 深圳前海微众银行股份有限公司 自动化回归测试方法、关联设备以及计算机程序产品
CN113032255A (zh) * 2021-03-19 2021-06-25 广州虎牙科技有限公司 响应噪音的识别方法、模型、电子设备及计算机存储介质

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114124871A (zh) * 2021-11-24 2022-03-01 中国银行股份有限公司 Mq消息队列的报文信息处理方法及装置
CN113852520B (zh) * 2021-11-29 2022-02-15 中国光大银行股份有限公司 数据处理方法及装置
CN113852520A (zh) * 2021-11-29 2021-12-28 中国光大银行股份有限公司 数据处理方法及装置
CN114553929B (zh) * 2022-01-10 2024-04-12 多点生活(成都)科技有限公司 录制调用动态Mock的录制回放增强方法和装置
CN114553929A (zh) * 2022-01-10 2022-05-27 多点生活(成都)科技有限公司 录制调用动态Mock的录制回放增强方法和装置
CN114416406A (zh) * 2022-01-30 2022-04-29 重庆长安汽车股份有限公司 一种基于云测平台任务多并发的实现方法
CN114416406B (zh) * 2022-01-30 2024-04-26 重庆长安汽车股份有限公司 一种基于云测平台任务多并发的实现方法
CN114900445A (zh) * 2022-04-28 2022-08-12 北京百度网讯科技有限公司 流量录制方法、装置及电子设备
CN114900445B (zh) * 2022-04-28 2024-04-16 北京百度网讯科技有限公司 流量录制方法、装置及电子设备
CN114866450A (zh) * 2022-06-15 2022-08-05 湖南快乐阳光互动娱乐传媒有限公司 一种数据处理方法及客户端设备
WO2024021362A1 (zh) * 2022-07-29 2024-02-01 深圳前海微众银行股份有限公司 一种流量回放的数据验证方法及装置
CN115396346A (zh) * 2022-08-30 2022-11-25 北京知道创宇信息技术股份有限公司 仿真压力测试方法、装置、系统和电子设备
CN116974948A (zh) * 2023-09-22 2023-10-31 腾讯科技(深圳)有限公司 业务系统测试方法、系统、设备和介质
CN116974948B (zh) * 2023-09-22 2024-01-09 腾讯科技(深圳)有限公司 业务系统测试方法、系统、设备和介质
CN117176623B (zh) * 2023-11-02 2024-02-13 蒲惠智造科技股份有限公司 基于流量回放的压力测试方法和系统
CN117176623A (zh) * 2023-11-02 2023-12-05 蒲惠智造科技股份有限公司 基于流量回放的压力测试方法和系统
CN117555809A (zh) * 2024-01-09 2024-02-13 舟谱数据技术南京有限公司 一种基于流量复制回放的自动化测试方法及相关装置
CN117555809B (zh) * 2024-01-09 2024-03-22 舟谱数据技术南京有限公司 一种基于流量复制回放的自动化测试方法及相关装置

Similar Documents

Publication Publication Date Title
CN113590497A (zh) 业务服务的测试方法、装置、电子设备及存储介质
CN110275958B (zh) 网站信息识别方法、装置和电子设备
CN104766014B (zh) 用于检测恶意网址的方法和系统
CN105283851B (zh) 用于选择跟踪目标的成本分析
WO2022252363A1 (zh) 数据处理方法、计算机设备以及可读存储介质
CN108733764B (zh) 基于机器学习的广告过滤规则生成方法和广告过滤系统
CN101258708A (zh) 基于网络的应用的性能评估
CN109120429B (zh) 一种风险识别方法及系统
CN110442712B (zh) 风险的确定方法、装置、服务器和文本审理系统
CN111681091B (zh) 基于时间域信息的金融风险预测方法、装置及存储介质
CN111435507A (zh) 广告反作弊方法、装置、电子设备及可读存储介质
CN110457175B (zh) 业务数据处理方法、装置、电子设备及介质
CN111401447A (zh) 一种基于人工智能的流量作弊识别方法、装置、电子设备
CN114422271B (zh) 数据处理方法、装置、设备及可读存储介质
CN110245684B (zh) 数据处理方法、电子设备和介质
CN106294406A (zh) 一种用于处理应用访问数据的方法与设备
CN114422211A (zh) 基于图注意力网络的http恶意流量检测方法及装置
CN115994079A (zh) 测试方法、装置、电子设备、存储介质及程序产品
CN111340062A (zh) 一种映射关系确定方法及装置
CN116318974A (zh) 站点风险识别方法、装置、计算机可读介质及电子设备
CN104407979A (zh) 脚本检测方法和装置
CN114266906A (zh) 用户端识别违规数据的方法、设备、介质及程序产品
CN113918534A (zh) 一种策略处理系统及方法
JP2014191365A (ja) 多階層システムに含まれる処理システムの分類装置及び多階層システムに含まれる処理システムの分類プログラム並びに多階層システムに含まれる処理システムの分類方法
CN110298669B (zh) 一种基于图形结构的iOS代充风险控制系统

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40055351

Country of ref document: HK