一种基于流量录制回放的无侵入式策略重建方法及装置与流程

文档序号:32340394发布日期:2022-11-26 09:34阅读:49来源:国知局
一种基于流量录制回放的无侵入式策略重建方法及装置与流程

1.本技术涉及计算机领域,尤其涉及一种基于流量录制回放的无侵入式策略重建方法及装置。


背景技术:

2.回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。在很多智能运营场景的回归测试过程中,测试人员经常需要手动在页面将之前创建的画布中的各个策略重新创建一次,观察画布中的各个策略新建过程是否正常。该过程重复繁琐,容易出错且效率低下。
3.因此,有必要提供一种新的无侵入式策略重建的方法,以提高回归测试的效率,降低失误率。


技术实现要素:

4.本说明书实施例提供一种基于流量录制回放的无侵入式策略重建方法及装置,用以提高回归测试效率,降低失误率。
5.本说明书实施例提供一种基于流量录制回放的无侵入式策略重建方法,包括:
6.接收流量录制请求,根据所述流量录制请求对创建计划树发起的一个或多个数据请求进行无侵入式拦截,按照计划树对所述数据请求进行归类,记录计划树对应的数据请求名和所述数据请求对应的业务数据,根据所述数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录;
7.接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,遍历所述调用记录中的各数据请求并获取对应的业务数据,并生成可视化的策略流程图。
8.优选的,所述按照计划树对所述数据请求进行归类,包括:
9.从数据请求中提取树标识,按照树标识对多个数据请求进行归类,将包含相同树标识的数据请求归为同一类。
10.优选的,根据所述计划树对应的多个数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录,包括:
11.将所述计划树中唯一索引限制的字段替换为动态变量并记录所述计划树的上下文信息,所述动态变量为根据当前时间生成具有时间戳的动态变量;
12.根据所述计划树替换后的动态变量、对应的多个数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录。
13.优选的,所述接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,包括:
14.依据计划树查询组件,确定所述流量回放请求对应的待回放的树标识,根据所述树标识确定所述流量回放请求对应的录制标识及调用记录。
15.优选的,在根据所述流量回放请求对应的录制标识查询调用记录之后,还包括:
16.根据调用记录中所述计划树的上下文信息将所述动态变量替换成所述树标识。
17.优选的,还包括:
18.利用各数据请求及对应的业务数据,按照不同数据请求之间的调用关系及调用顺序在画布中创建计划树节点,生成可视化的运营计划流程图。
19.优选的,还包括:
20.将具有录制标识的所述调用记录及时存储于数据库中。
21.流量回放请求流量回放请求流量回放请求流量回放请求流量回放请求本说明书实施例还提供一种基于流量录制回放的无侵入式策略重建装置,包括:
22.录制模块,接收流量录制请求,根据所述流量录制请求对创建计划树发起的一个或多个数据请求进行无侵入式拦截,按照计划树对所述数据请求进行归类,记录计划树对应的数据请求名和所述数据请求对应的业务数据,根据所述数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录;
23.回放模块,接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,遍历所述调用记录中的各数据请求并获取对应的业务数据,并生成可视化的策略流程图。
24.具体的,所述录制模块用于:从数据请求中提取树标识,按照树标识对多个数据请求进行归类,将包含相同树标识的数据请求归为同一类。
25.本说明书实施例还提供一种电子设备,其中,该电子设备包括:
26.处理器;以及,
27.存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一项方法。
28.本说明书实施例还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个指令,所述一个或多个指令当被处理器执行时,实现上述任一项方法。
29.本说明书实施例提供的各种技术方案通过对创建计划树发起的一个或多个数据请求进行无侵入式拦截,按照计划树对数据请求进行归类,根据计划树对应的数据请求名和所述数据请求对应的业务数据,生成具有录制标识的调用记录,接收流量回放请求,根据其对应的录制标识查询调用记录,遍历调用记录中的各数据请求并获取对应的业务数据,在画布中生成可视化的策略流程图。通过录制并回放的方式,可以快速重建运营计划,无需重复操作,有效保存了原始流量无修改无损耗,因而提升了策略重建效率并降低了失误率。
附图说明
30.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
31.图1为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建方法的原理示意图;
32.图2为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建方法的结构示意图;
33.图3为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建装置的结构示意图;
34.图4为本说明书实施例提供的一种电子设备的结构示意图。
具体实施方式
35.现在将参考附图更全面地描述本发明的示例性实施例。然而,示例性实施例能够以多种形式实施,且不应被理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例能够使得本发明更加全面和完整,更加便于将发明构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的元件、组件或部分,因而将省略对它们的重复描述。
36.在符合本发明的技术构思的前提下,在某个特定的实施例中描述的特征、结构、特性或其他细节不排除可以以合适的方式结合在一个或更多其他的实施例中。
37.在对于具体实施例的描述中,本发明描述的特征、结构、特性或其他细节是为了使本领域的技术人员对实施例进行充分理解。但是,并不排除本领域技术人员可以实践本发明的技术方案而没有特定特征、结构、特性或其他细节的一个或更多。
38.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
39.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
40.术语“和/或”或者“及/或”包括相关联的列出项目中的任一个或多者的所有组合。
41.图1为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建方法的原理示意图,该方法可以包括:
42.s101:根据所述流量录制请求对创建计划树发起的一个或多个数据请求进行无侵入式拦截,按照计划树对所述数据请求进行归类,记录计划树对应的数据请求名和所述数据请求对应的业务数据,根据所述数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录。
43.在一种实际场景中,业务人员接收到一个业务需求,于是在智能运营计划中创建模块a并上线,模块a中具有非公共的调用发送消息的功能。后来,业务人员接收到另一个业务需求,于是创建了模块b,模块b中也涉及到发送消息的功能,为了代码复用性,业务人员将发送消息功能提取为公共函数,这时,就会修改模块1的代码调用公共函数,通过公共函数执行发送消息功能,但实际上,模块a本身没有变更需求。针对这样的情况,需要对模块a的业务功能进行回归测试。且随着业务场景越来越复杂,涉及到这种回归测试的情况就会越来越多。
44.对于这种情况,可以通过录制并回放调用记录的方式辅助运营人员进行策略重建即回归测试。
45.在本说明书实施例中,一个运营计划中可以包含一个或多个计划树,目前支持到更细粒度的计划树维度的流量回放。每个计划树,对应画布中的一个流程图,模块a可以包括一个计划树,回归测试是在修改了旧代码时,重新进行测试以确认修改没有引入新的错误或者导致其他代码产生问题,采用流量回放快速创建运营计划,完成回归测试,可以是对
整个运营计划进行测试,也可以是对每个模块所表示的单个计划树进行测试,从而快速确认代码修改时没有引入新的错误或者导致其他代码产生问题,避免手动创建过程,提高回归测试效率。一个计划树对应一个录制标识,也对应一整个调用记录,既然是“记录”,说明一整个调用记录通常涉及多次调用,一个计划树包含多种策略,策略包含受众人群圈选、人群过滤、触发方式等,策略是可以灵活配置的。创建计划树的过程,即创建策略,每创建一个发起一次http请求,流量都会被录制下来,多个策略http请求合并即为创建一个计划树的过程,最后保存为一个运营计划(可以包含一个计划树或者多个计划树)存储到数据库。为了在创建计划树之后能自动再现计划树,可以对创建计划树发起的一个或多个数据请求进行无侵入式拦截。
46.拦截可以是无侵入式运行期aop拦截。
47.具体实施时,可以基于开源的jvm-sandbox-repeater基础上进行二次开发和改造。搭建核心模块,包含replay-web应用,replay-app应用,replay-agent应用,其中,replay-web应用和replay-app应用是将服务端拆分出的一个web端和app端。测试人员在页面操作后,触发web端,rpc(remote procedure call,远程过程调用)远程调用app端获取数据库中数据,返回给web端,在页面显示获取的数据。
48.启动过程,在iops-web(智能运营平台web端应用)所在的linux服务器上开启crontab定时执行shell脚本监听iops-web进程,当iops-web启动或发生重启时,replay-agent自动探测到iops-web的jvm(虚拟机),然后replay-agent在iops-web的jvm上通过反射创建jvm sandbox(沙盒文件),sandbox通过串行外设接口拉起http,dubbo(分布式服务)等模块,用于之后拦截并记录http数据请求。
49.流量录制过程,当测试人员在智能运营平台创建计划树时,replay-agent通过基于字节码插桩技术进行代码增强,实现调用拦截,记录数据请求对应的业务数据(比如入参和返回值),之后根据相应的调用类型(如dubbo、http)生成一个录制标识。当调用完成时,replay-agent便采集到了整个运营计划的调用记录,方便后期排除,是否有录制请求重复的异常情况等。
50.在拦截到整个运营计划的调用记录后,可以对调用记录进行数据序列化处理,并上送到服务端进行存储。
51.服务端在存储之前,可以预先创建存储空间,进行数据的存储。
52.整个运营计划的调用记录实际是多个单个计划树的组合,为了准确地对单个计划树进行回归测试,因此,需要按照单个计划树对数据请求进行归类。
53.为了后续查询时区分不同的计划树,可以为单个计划树生成树标识,作为存储多个数据请求的索引。
54.具体地,在本说明书实施例中,所述按照计划树对多个数据请求进行归类,可以包括:
55.从数据请求中提取树标识,按照树标识对多个数据请求进行归类,将包含相同树标识的数据请求归为同一类。
56.分类之后,便可以提取计划树对应的多个数据请求名和所述数据请求对应的业务数据,根据计划树对应的多个数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录。
57.每个http请求有一个唯一id、一个计划id和一个树id,流量录制时,把计划id、树id相同的请求归类,流量回放时,根据计划id和树id即可查找到对应的多条http请求,进行后续的http请求的流量回放。
58.考虑到一种应用中,若数据库使用树标识作为计划树的唯一索引字段(唯一索引限制即不允许具有索引值相同的数据),那么,在流量回放时,程序取出流量录制的字段值与创建计划时字段值相同的,再次新增时便会直接报错,因此,流量回放时,需要将流量录制http数据中数据请求的id替换为随时间变化的唯一值,以便在调用后端创建数据请求。
59.比如,测试人员创建运营计划名称为0414-js-回放,在流量录制时,因为运营计划名称业务上是不能重复的,且数据库中有唯一索引限制,在流量回放时,若不替换,会直接报错,可以根据当前时间生成具有时间戳的动态变量,将计划名称替换为auto-plan-#{时间戳}的动态变量(未赋值),而在流量回放时,再将auto-plan-#{时间戳}替换成计划名称的实际值:auto-plan-1653013332(将时间戳动态变量赋值),其中auto-plan为计划树名,计划名称指测试人员创建的运营计划时的单个计划名称。测试人员创建一个运营计划的过程中,会发起多次http请求。上下文信息是流量录制时记录创建一个计划过程中多次http请求前后所传递的数据。例如:测试人员在某个计划树中创建一个策略,即一次http请求,业务上每个策略的节点id不能重复,流量回放时,需要将流量录制http数据中策略节点id替换为唯一值uuid,在调用后端创建策略。同时,还需要此策略节点id保存到上下文信息中。因为后面调用保存计划树的http接口,也需要此策略节点id,即可从上下文信息中获取策略节点id。可以从上下文信息中获取数据请求的请求名,其中,请求名中可以包括数据请求的id号。因此,在本说明书实施例中,根据所述计划树对应的数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录,可以包括:
60.将所述计划树中唯一索引限制的字段替换为动态变量并记录所述计划树的上下文信息,所述动态变量为根据当前时间生成具有时间戳的动态变量;
61.根据所述计划树替换后的动态变量、对应的多个数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录。
62.在本说明书实施例中,还包括:
63.将具有录制标识的所述调用记录及时存储于数据库中。
64.具体实施时可以是:在服务端解析请求body中计划id和树id,并将单个请求归类到计划id和树id维度,替换掉数据库中有唯一索引限制的字段为动态变量,记录创建单个计划和树id的上下文记录,最后储存到db(数据库)。
65.当然,数据库中表字段若无唯一索引,则无需替换。
66.s102:接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,遍历所述调用记录中的各数据请求并获取对应的业务数据,并生成可视化的策略流程图。
67.在本说明书实施例中,所述接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,包括:
68.依据计划树查询组件,确定所述流量回放请求对应的待回放的树标识,根据所述树标识确定所述流量回放请求对应的录制标识及调用记录。
69.在本说明书实施例中,在根据所述流量回放请求对应的录制标识查询调用记录之后,还包括:
70.根据调用记录中所述计划树的上下文信息将所述动态变量替换成树标识。
71.基于前述方案,根据树标识便可调用后端创建数据请求。
72.在本说明书实施例中,利用各数据请求及对应的业务数据,按照不同数据请求之间的调用关系及调用顺序在画布中创建计划树节点,生成可视化的运营计划流程图。
73.在具体实施时,流量回放过程可以是:用户在replay-web(在线流量回放web端应用)的操作页面选择所要回放的环境、计划名和树名后,触发回放,发送回放请求到replay-app(在线流量回放app端应用),在replay-app中调用数据库查询选择计划id和树id所对应的一组流量录制请求的调用记录,将数据请求中的动态变量替换为实际值,然后遍历该计划id和树id的数据请求,逐一调用replay-agent进行回放,重建运营计划,观察新建的运营计划是否正常,若正常,即可完成回归测试,其中,在遍历该计划id和树id的数据请求时是针对单个计划名称,遍历查询用户选择的计划id和树id所对应的所有http请求,进行流量回放的。图2为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建方法的原理示意图,该方法可以包括:
74.用户在iops-web创建运营计划,通过ipss-app存储到数据库中,同时,replay-agent自动探测到iops-web的jvm的目标服务(流量录制请求),于是拦截并记录http数据请求,拦截到数据请求的接口的调用记录,按照录制回放请求事件将调用记录上送到replay-agent前端,然后存储到数据库(流量录制库)。
75.回放阶段,用户通过replay-agent的网页端发起回放请求,replay-app触发回放请求,从流量录制库中获取调用记录,重建运营计划,通过观察运营计划流程图实现回归测试。
76.发起回放请求的操作页面中,具体可以具有环境选择组件、计划名称组件、树名称组件,通过对这些组件中的选项进行选择,或者输入索引条件,便可以在页面中显示搜索到的调用记录,调用记录可以携带环境信息、应用名称信息、计划编号、计划名称、树编号、流量入口等信息。
77.通过本说明书实施例方案,有效提升了测试覆盖率和充分度,通过录制流量回放,保障未修改接口、修改接口的修改符合预期,快速完成自动化的回归测试。流量回放系统比较便捷的获取测试、生产环境请求的流量镜像数据,既有效保存了原始流量无修改无损耗,又解决了人工构造的测试数据比较耗时的问题。通过开发和使用流量回放系统,释放了智能运营场景测试资源。在需求迭代的过程中,流量回放平台发挥了自动识别缺陷的作用,并为需求快速迭代上线保驾护航。
78.图3为本说明书实施例提供的一种基于流量录制回放的无侵入式策略重建装置的结构示意图,该装置可以包括:
79.录制模块201,对创建计划树发起的多个数据请求进行无侵入式拦截,按照计划树对多个数据请求进行归类,记录计划树对应的多个数据请求名和所述数据请求对应的业务数据,根据所述计划树对应的多个数据请求名和所述数据请求对应的业务数据生成具有录制标识的调用记录;
80.回放模块202,接收流量回放请求,根据所述流量回放请求对应的录制标识查询调用记录,遍历所述调用记录中的各数据请求并获取对应的业务数据,并生成可视化的运营计划流程图。
81.该装置通过对创建计划树发起的一个或多个数据请求进行无侵入式拦截,按照计划树对数据请求进行归类,记录计划树对应的数据请求名和所述数据请求对应的业务数据,生成具有录制标识的调用记录,接收流量回放请求,根据其对应的录制标识查询调用记录,遍历调用记录中的各数据请求并获取对应的业务数据,生成可视化的运营计划流程图。通过录制并回放的方式,可以快速重建运营计划,无需重复操作,因而提高了回归测试效率并降低了失误率。
82.本发明的另一实施方式涉及一种电子设备,如图4所示,包括至少一个处理器302;以及,与至少一个处理器302通信连接的存储器301;其中,存储器301存储有可被至少一个处理器302执行的指令,指令被至少一个处理器302执行,以使至少一个处理器302能够执行上述任一方法实施例。
83.其中,存储器301和处理器302采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器302和存储器301的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器302处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器302。处理器302负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器301可以被用于存储处理器302在执行操作时所使用的数据。
84.本发明的另一实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述任一方法实施例。即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
85.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
86.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
87.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1