一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种业务系统测试方法、装置、电子设备和可读存储介质与流程

2022-03-04 22:06:23 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种业务系统测试方法、装置、电子设备和可读存储介质。


背景技术:

2.全链路压测是指基于实际的生产业务场景、系统环境,模拟海量的请求和数据对整个业务链进行压力测试。目前,广泛采用影子流量数据(shadow traffic)进行全链路压测,其具体做法是将发给生产环境的请求复制产生影子数据,将该影子数据与生产数据一起输入待测试业务系统,以此来达到压力测试和正确性测试的目的。
3.一般业务系统存在多个业务模块,可能存在部分业务模块已经进行过影子压测而部分业务没有进行影子压测的情况,并且现有的压测的方式往往是在入侵了系统核心业务代码基础上改造实现的,而入侵核心业务代码需要掌握业务逻辑细节方可完成,改造成本和风险较高,复用性低。


技术实现要素:

4.鉴于上述问题,提出了本技术以便提供一种克服上述问题或者至少部分地解决上述问题的业务系统测试方法、装置、电子设备及可读存储介质。
5.本技术实施例采用下述技术方案:
6.第一方面,本技术实施例提供一种业务系统测试方法,由业务系统服务器执行,其中,所述方法包括:
7.获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识;
8.根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据;
9.根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,以测试所述业务系统,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
10.可选地,所述根据所述业务数据对应的执行线程和数据标识,生成与所述执行线程所对应的执行标识包括:
11.以基于面向切面编程技术实现的组件,从各业务数据中分别获取数据标识;
12.根据获取的数据标识生成相应的执行标识,并将生成的执行标识保存到上下文数据结构中,所述上下文数据结构中存储有业务数据的执行线程的线程标识与执行标识的对应关系。
13.可选地,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:
14.根据当前执行线程的线程标识,从所述上下文数据结构中获取与当前执行线程对
应的执行标识;
15.在所述执行标识指示当前执行线程对应的业务数据是影子数据的情况下,在功能组件中以与影子数据对应的处理逻辑执行所述当前执行线程;
16.在所述执行标识指示当前执行线程对应的业务数据是生产数据的情况下,在功能组件中以与生产数据对应的处理逻辑执行所述当前执行线程。
17.可选地,所述功能组件具体包括sql数据库,sql数据库中预置有与各生产数据表对应的影子数据表,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:
18.对与业务数据相关的数据库操作请求进行拦截;
19.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,从拦截到的数据库操作请求中解析出待操作的生产数据表的表名;
20.将所述数据库操作请求中的生产数据表的表名修改为对应影子数据表的表名,得到修改后的数据库操作请求;
21.执行修改后的数据库操作请求。
22.可选地,所述在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程还包括:
23.在所述生产数据表的表名与预设表名名单相匹配的情况下,不对拦截的数据库操作请求进行修改,执行拦截到的数据库操作请求。
24.可选地,所述功能组件具体包括redis客户端,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:
25.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,修改影子数据在所述redis客户端中的键标识,根据修改后的所述键标识将所述影子数据缓存预设时间;
26.所述与影子数据对应的处理逻辑是通过继承与生产数据对应的处理逻辑中的类实现的,所述redis客户端为包含与影子数据对应的处理逻辑以及与生产数据对应的处理逻辑的增强客户端。
27.可选地,所述功能组件具体包括日志组件,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:
28.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,根据影子数据的过滤器返回值,将影子数据的日志基于影子数据的日志输出组件输出到预置的影子数据的日志目录下;
29.其中,所述影子数据的过滤器返回值不同于生产数据的过滤器返回值;所述影子数据的日志目录与生产数据的日志目录相独立,且影子数据的日志目录下的数据可根据自动失效机制被清理;所述影子数据的日志输出组件是通过复制生产数据的日志输出组件得到的。
30.可选地,所述方法还包括:
31.获取与所述业务数据相关的定时任务;所述定时任务包括影子任务和生产任务,所述影子任务是通过对生产任务进行复制得到的,所述影子任务的可用性可基于开关控制;
32.以基于面向切面编程技术实现的组件,在定时任务的执行入口处拦截定时任务,从拦截的定时任务中解析出用于区分影子任务和生产任务的任务参数;
33.根据所述任务参数执行各定时任务。
34.可选地,所述方法还包括:
35.监控所述业务系统测试的过程,所述监控包括物理资源监控、业务监控和组件监控中的一项或多项,获取测试过程中的如下的一种或几种信息:中央处理器状态、内存状态、磁盘状态、业务数据处理成功率、接口连接耗时和数据操作耗时。
36.第二方面,本技术实施例还提供一种业务系统测试装置,应用于业务系统服务器,所述装置包括:
37.获取单元,适于获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识;
38.生成单元,适于根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据;
39.执行单元,适于根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,以测试所述业务系统,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
40.第三方面,本技术实施例还提供一种电子设备,包括:
41.处理器;以及
42.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一所述方法。
43.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行上述任一所述方法。
44.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:
45.上述方案采用增设影子数据处理逻辑等方式,将生产数据处理逻辑与影子数据处理逻辑解耦,而不再需要改造原业务逻辑,从而降低了开发难度和系统改造风险,减少了产生漏洞的可能,具有较好的通用性。
附图说明
46.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
47.图1为本技术一个实施例中业务系统测试方法的流程示意图;
48.图2为本技术一个实施例中sql数据库中影子数据与生产数据隔离的流程示意图;
49.图3为本技术一个实施例中redis客户端中影子数据与生产数据隔离的流程示意图;
50.图4为本技术一个实施例中业务系统测试装置的结构示意图;
51.图5为本技术现有技术中网联业务订单系统架构的结构示意图;
52.图6为本技术一个实施例中一种电子设备的结构示意图。
具体实施方式
53.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.以下结合附图,详细说明本技术各实施例提供的技术方案。
55.图1为本技术一个实施例中业务系统测试方法的流程示意图;该方法由业务系统服务器执行,所述方法包括:
56.步骤s110,获取由影子数据和生产数据组成的业务数据,业务数据中包括能够区分影子数据和生产数据的数据标识。
57.该实施例公开的方法可用于网联业务订单系统的全链路压测中,参见图5所示的网联业务订单系统架构的结构示意图,业务订单请求从账户机构发出至网联的账户渠道,由账户渠道转发至业务订单系统,与epcc交易系统(用于订单处理的专用系统)交互完成订单支付后,将订单请求发给商户渠道,最后发送至商户受理机构。针对该网联业务订单系统,需要设计压力测试方案进行测试。
58.具体地,首先获取或接收来自生产环境实际发送的请求报文数据(即生产数据)和请求报文模拟机构发出的影子数据,上述生产数据和影子数据统称为业务数据,且业务数据中包括数据标识字段,该数据标识字段可用于区别生产数据和影子数据。
59.影子数据可以通过如下的方式获得,将请求报文模拟机构业务发起机构标记为测试机构(即为测试机构),同时将待发出的请求报文染色为影子数据。为了区分影子数据和生产数据可以约定将影子数据中请求报文的数据标识字段(具体可以为交易流水号)中的预留位设置为1,该预留位可以是数据标识字段中的首位或末位,也可以是某一中间位,将生产数据的数据标识字段的预留位设置为其他数字,从而通过判断数据标识的预留位的数字就可以将生产数据和影子数据区分开来。
60.步骤s120,根据业务数据对应的执行线程和数据标识,生成与业务数据对应的执行标识,该执行标识也能够区分所述影子数据和所述生产数据。
61.在业务数据进入各功能组件被处理之前,可通过设置中间件等方式从业务数据中得到该业务数据的数据标识,然后从该数据标识中获取其中的预留位作为执行标识;或者根据该预留位判断该业务数据是影子数据或生产数据,将判断的结果作为执行标识,比如执行标识可以是是否为影子数据的判断结果,若是影子数据则为true,否则为false。
62.除了获取上述执行标识外,在该步骤中还可以获取并保存业务数据的发出机构等数据,其中,发出机构包括生成影子数据的测试机构,以及生成生产数据的账户机构等。
63.该步骤在业务数据进入各功能组件之前就从执行线程获得执行标识,避免了在各功能组件内对各业务数据进行重复判断,减少了对计算资源的占用和处理的时间,提高了压测的效率。
64.步骤s130,根据执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,以测试所述业务系统,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
65.在功能组件中根据执行标识区分出各业务数据是生产数据还是影子数据,然后对
生产数据和影子数据采用不同的处理逻辑进行处理,既实现了压力测试,又不影响生产数据的原有逻辑。
66.在具体实施时,可以根据各功能组件的特点,分别采用复制原代码逻辑形成插件、设置切面减少对原代码的侵入或在原有的组件基础上通过继承的方式形成增强组件等手段,将影子数据的处理逻辑与生产数据原有的处理逻辑分割或独立开来,实现影子数据和生产数据分别处理,从而减少影子数据对生产数据的污染。
67.总之,该实施例公开的上述业务系统测试方法,可有效降低压测组件的开发难度和系统改造风险,减少了产生漏洞的可能性,并且具有较好的通用性,可通过将开发完成的软件包安装在现有的业务系统中实现复用。
68.在一个或一些实施例中,所述步骤s120包括:以基于面向切面编程技术实现的组件,从各业务数据中分别获取数据标识;根据获取的数据标识生成相应的执行标识,并将生成的执行标识保存到上下文数据结构中,所述上下文数据结构中存储有业务数据的执行线程的线程标识与执行标识的对应关系。
69.面向切面编程技术(aspect oriented programming,aop)是通过预编译方式和运行期动态代理实现程序功能的统一维护的技术,aop是spring框架中的一个重要内容,利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。该实施例利用aop设置切面从执行线程中获取数据标识字段,减少了对原代码的入侵。
70.具体地,从切面中利用threadlocal工具类获取数据标识,并根据所述数据标识生成执行标识并保存在上下文数据结构中,该上下文数据结构可被命名为shadowcontext。在各功能组件中执行与业务数据对应的线程时,能够从该上下文数据结构中获取执行线程对应的执行标识,从而获得的所述业务数据是影子数据或生产数据的信息。
71.本技术该实施例示出了识别和保存数据标识的一种具体实现方式。当然,应理解,步骤s120也可以采用其它的方式实现,本技术实施例对此不作限制。
72.在一个实施例中,所述步骤130包括:根据当前执行线程的线程标识,从所述上下文数据结构中获取与当前执行线程对应的执行标识;在所述执行标识指示当前执行线程对应的业务数据是影子数据的情况下,在功能组件中以与影子数据对应的处理逻辑执行所述当前执行线程;在所述执行标识指示当前执行线程对应的业务数据是生产数据的情况下,在功能组件中以与生产数据对应的处理逻辑执行所述当前执行线程。
73.该实施例给出了在各功能组件中利用执行线程获取执行标识,并根据执行标识确定数据类型,然后根据在功能组件中预设的针对影子数据或生产数据的不同处理逻辑,实现影子数据和生产数据的隔离处理。
74.在一个实施例中,所述功能组件具体包括sql数据库,sql数据库中预置有与各生产数据表对应的影子数据表,所述步骤s130包括:
75.对与业务数据相关的数据库操作请求进行拦截;在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,从拦截到的数据库操作请求中解析出待操作的生产数据表的表名;将所述数据库操作请求中的生产数据表的表名修改为对应影子数据表的表名,得到修改后的数据库操作请求;执行修改后的数据库操作请求。
76.并且,所述步骤s130还包括:在所述解析出待操作的生产数据表的表名与预设表
名名单相匹配的情况下,不对拦截的数据库操作请求进行修改,执行拦截到的数据库操作请求。
77.数据库组件的隔离是实现业务系统测试的重要方面,附图2所示了sql数据库中实现隔离策略的流程示意图。在实际操作中,需要预先创建影子数据表,用于存放影子数据或者影子数据经数据库操作后得到的结果数据。影子数据表的表名可以是“test_生产数据表名”且影子数据表的数量与生产数据表的数量一致。
78.目前数据库操作是通过sql(structured query language,结构化查询语言)语言实现的,数据库操作包括存取数据以及查询、更新和管理关系数据库系统,具体包括对数据进行增删查改等操作。
79.在数据库组件进行数据隔离时,首先拦截数据库操作请求,一般为sql指令,为了不入侵原有代码业务,可通过mybatis的拦截器interceptor拦截所有的sql指令。
80.拦截sql指令后,先从shadowcontext上下文数据结构中获取保存的执行标识,若根据执行标识判断该数据为生产数据,继续原有的数据库操作。
81.若所述执行线程的处理逻辑为与影子数据对应的处理逻辑时,则解析出sql指令的表名,判断该表名是否在预设表名名单中,若不在预设表名名单中则将该影子数据的表名字段前加上test_前缀,表示该数据应当保存到对应表名的影子数据表中,然后执行针对影子数据的数据库操作,该数据库操作与生产数据的数据库操作可以相同,也可以不同;若表名在预设表名名单中则跳过添加表名前缀的步骤,继续执行后续的原有的与生产数据相同的数据库操作,即将在预设表名名单中的影子数据执行与生产数据相同的操作。
82.上述操作表明,将表名不在预设表名名单中的影子数据的表名标识字段前加上前缀,经数据库操作后保存到相应的影子数据表内;而将在预设表名名单的影子数据进行与生产数据相同的数据库操作,并保存到了相应生产数据表内。
83.预设表名名单中的表可以是管理配置类的表,也可以是根据压测需要选择的其他类别的表。该设计可以根据压测的要求对影子数据进行灵活的处理,更好地模拟了真实的业务逻辑。
84.在该具体实现方式中,还包括对数据库进行配置的步骤:利用分库分表中间件cds(completed database sharding)增加影子数据表的配置,且所述影子数据表的配置与生产表的配置如切分键及规则相同,从而以相同的方式保存经数据库操作后的影子数据。
85.需要说明的是,分库分表中间件cds是一个基于客户端开发的分库分表中间件产品,实现了jdbc标准api,支持分库分表、读写分离和数据运维等诸多功能,提供高性能、高并发和高可靠的海量数据路由存取服务,业务系统可近乎零成本进行接入,目前支持mysql、oracle和sql server三种数据库集群。
86.在一个实施例中,所述功能组件具体包括redis客户端,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,修改影子数据在所述redis客户端中的键标识,根据修改后的所述键标识将所述影子数据缓存预设时间;所述与影子数据对应的处理逻辑是通过继承与生产数据对应的处理逻辑中的类实现的,所述redis客户端为包含与影子数据对应的处理逻辑以及与生产数据对应的处理逻辑的增强客户端。
87.redis缓存是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化
的日志型、key-value数据库,并提供多种语言的api。该实施例没有改变现有redis客户端的整体结构,仅通过继承的方式增加了处理影子数据的代码逻辑,获得了一种增强版的redis客户端。
88.图3示出了一种实现redis客户端内影子数据隔离的具体流程。具体地,在本技术的该实施例中,在redis客户端上增设一个继承自原有组件的类,在该类中实现影子数据和生产数据的区分。若是生产数据仍然采用原来的处理逻辑,若是影子数据,则在影子数据的键(key)的名称前增加“test_”前缀,并且设置该影子数据的过期时间,比如为5分钟,过期时间过后进入下一个功能组件或自动删除。
89.该实施例在原有的逻辑基础上,增加对影子数据的识别及处理逻辑,根据键(key)标识的不同实现对影子数据和生产数据的隔离处理,从而获得了一种增强版的redis客户端。
90.在一个实施例中,所述功能组件具体包括日志组件,所述根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程包括:
91.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,根据影子数据的过滤器返回值,将影子数据的日志基于影子数据的日志输出组件输出到预置的影子数据的日志目录下;
92.其中,所述影子数据的过滤器返回值不同于生产数据的过滤器返回值;所述影子数据的日志目录与生产数据的日志目录相独立,且影子数据的日志目录下的数据可根据自动失效机制被清理;所述影子数据的日志输出组件是通过复制生产数据的日志输出组件得到的。
93.首先预设影子数据日志输出目录为/data/applogs/shadow/。
94.以logback作为日志组件为例,logback是由log4j创始人设计的一个开源日志组件,其中基于logback的filter过滤器组件实现影子日志和业务日志识别和输出。具体地,可根据需要自定义实现的filter用于控制日志输出的appender(附加器组件)。比如定义属于生产数据的请求报文时appender返回filterreply.deny,若是影子数据中的模拟请求报文时,则appender返回filterreply.accept。
95.影子数据和生产数据具有不同处理方式,若方法返回值为deny,则日志对象会被终止而不会被其它过滤器访问;若方法返回值为accept,那么日志对象会跳过其余过滤器被立即处理。
96.logback可包含多个appender,appender负责将日志事件传递输出到其目标目录。通过克隆原appender的方式增加新的影子appender,用于实现对影子日志的输出。
97.本技术上述两个实施例分别在redis客户端和日志组件中实现影子数据隔离测试,完善了全链路压测的实现,更加真实地模拟了生产数据的经过过程,使得压测的结果更加真实可靠。
98.在一个实施例中,所述方法还包括:获取与所述业务数据相关的定时任务;所述定时任务包括影子任务和生产任务,所述影子任务是通过对生产任务进行复制得到的,所述影子任务的可用性可基于开关控制;
99.以基于面向切面编程技术实现的组件,在定时任务的执行入口处拦截定时任务,从拦截的定时任务中解析出用于区分影子任务和生产任务的任务参数;
100.根据所述任务参数分别执行各定时任务。
101.该实施例中的定时任务包括向网联业务订单系统下发的定时清算业务等,比如将批量订单在某时间点上输入到网联业务订单系统内以进行清算处理。
102.定时任务具体实现方式如下:复制定时任务平台中的任务,在原有任务参数中新增参数shadow=y,用于标识用于影子压测。然后定义切面,对于定时任务的执行入口进行拦截,读取参数列表,判断是否包含shadow=y的参数,该参数相当于打开定时任务的开关,若参数列表中包含该参数,则将该批数据的标识保存到shadowcontext中,进而开始对该批数据进行业务系统测试,否则不需要进行压测。
103.需要指出的是,上述关于步骤130的实施例仅仅是举例,本技术实施例还可以包括其他功能组件关于隔离的其他策略,且上述策略也不局限在上述具体实现方式,还可以包括其他的具体实现方式,在此不作具体限定。
104.在一个实施例中,所述方法还包括:监控所述业务系统测试的过程,所述监控包括物理资源监控、业务监控和组件监控中的一项或多项,获取测试过程中的如下的一种或几种信息:中央处理器状态、内存状态、磁盘状态、业务数据处理成功率、接口连接耗时和数据操作耗时。
105.业务系统测试的监控包括物理资源监控、业务监控、组件监控三个方面。物理资源监控可以是zabbix监控体系,zabbix是一个用于网络、操作系统和应用程序的开源监控软件,旨在监视和跟踪各种网络服务、服务器和其他网络硬件的状态,它可以从中央处理器(cpu)、内存、磁盘等维度监控物理资源的运行状态;业务监控则根据产生的影子日志,可以设置压测监控大屏,关注业务处理成功率,接口连接耗时、数据操作耗时等指标;组件监控包括各功能组件中的监控体系。
106.图4示出了本技术一个实施例的一种业务系统测试装置,用于业务系统的服务器中,所述装置400包括:
107.获取单元410,适于获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识。
108.生成单元420,适于根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据。
109.执行单元430,适于根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,以测试所述业务系统,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
110.该实施例通过上述的业务系统测试装置,可有效降低压测组件的开发难度和系统改造风险,减少了产生漏洞风险,并且具有较好的通用性,可通过将开发完成的软件包安装在其他的业务系统实现复用。
111.在一个实施例中,所述生成单元420适于:
112.以基于面向切面编程技术实现的组件,从各业务数据中分别获取数据标识;根据获取的数据标识生成相应的执行标识,并将生成的执行标识保存到上下文数据结构中,所述上下文数据结构中存储有业务数据的执行线程的线程标识与执行标识的对应关系。
113.在一个实施例中,所述执行单元430适于:
114.根据当前执行线程的线程标识,从所述上下文数据结构中获取与当前执行线程对
应的执行标识;在所述执行标识指示当前执行线程对应的业务数据是影子数据的情况下,在功能组件中以与影子数据对应的处理逻辑执行所述当前执行线程;在所述执行标识指示当前执行线程对应的业务数据是生产数据的情况下,在功能组件中以与生产数据对应的处理逻辑执行所述当前执行线程。
115.在一个实施例中,所述功能组件具体包括sql数据库,sql数据库中预置有与各生产数据表对应的影子数据表,所述执行单元430适于:
116.对与业务数据相关的数据库操作请求进行拦截;
117.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,从拦截到的数据库操作请求中解析出待操作的生产数据表的表名;
118.将所述数据库操作请求中的生产数据表的表名修改为对应影子数据表的表名,得到修改后的数据库操作请求;
119.执行修改后的数据库操作请求。
120.在一个实施例中,所述功能组件具体包括redis客户端redis客户端,所述执行单元430适于:
121.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,修改影子数据在所述redis客户端中的键标识,根据修改后的所述键标识将所述影子数据缓存预设时间;
122.所述与影子数据对应的处理逻辑是通过继承与生产数据对应的处理逻辑中的类实现的,所述redis客户端为包含与影子数据对应的处理逻辑以及与生产数据对应的处理逻辑的增强客户端redis客户端redis客户端redis客户端。
123.在一个实施例中,所述功能组件具体包括日志组件,所述执行单元430适于:
124.在所述执行线程的处理逻辑为与影子数据对应的处理逻辑的情况下,根据影子数据的过滤器返回值,将影子数据的日志基于影子数据的日志输出组件输出到预置的影子数据的日志目录下;
125.其中,所述影子数据的过滤器返回值不同于生产数据的过滤器返回值;所述影子数据的日志目录与生产数据的日志目录相独立,且影子数据的日志目录下的数据可根据自动失效机制被清理;所述影子数据的日志输出组件是通过复制生产数据的日志输出组件得到的。
126.在一个实施例中,所述装置包括定时任务单元,所述定时任务单元适于:
127.获取与所述业务数据相关的定时任务;所述定时任务包括影子任务和生产任务,所述影子任务是通过对生产任务进行复制得到的,所述影子任务的可用性可基于开关控制;
128.以基于面向切面编程技术实现的组件,在定时任务的执行入口处拦截定时任务,从拦截的定时任务中解析出用于区分影子任务和生产任务的任务参数;
129.根据所述任务参数分别执行各定时任务。
130.在一个实施例中,所述装置还包括监控单元,所述监控单元适于:
131.监控所述业务系统测试的过程,所述监控包括物理资源监控、业务监控和组件监控中的一项或多项,获取测试过程中的如下的一种或几种信息:中央处理器状态、内存状态、磁盘状态、业务数据处理成功率、接口连接耗时和数据操作耗时。
132.需要说明的是,上述各装置实施例的具体实施方式可以参照前述对应方法实施例的具体实施方式进行,在此不再赘述。
133.综上所述,本技术实施例公开的业务系统测试方案,包括:获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识;根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据;根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,以测试所述业务系统,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。与现有的业务系统测试解决方案相比,本技术以不侵入核心业务代码的原则,采用插件、切面或增强组件等方式完成业务系统测试功能,将业务代码与该功能模块有效解耦,引入业务系统测试的软件安装包,增加相关配置即可完成影子压测,降低了系统改造风险,减少了漏洞风险,对实时交易系统中包括redis和日志等在内的组件均可进行有效的隔离,并且可选择性地复用于其它业务系统,具备较好的通用性。
134.图6是本技术的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
135.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
136.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
137.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成业务系统测试装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
138.获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识。
139.根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据。
140.根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
141.上述如本技术图1所示实施例揭示的业务系统测试方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处
理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
142.该电子设备还可执行图1中业务系统测试方法,并实现业务系统测试装置在图1所示实施例的功能,本技术实施例在此不再赘述。
143.本技术实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个软件安装包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中业务系统测试装置执行的方法,并具体用于执行:
144.获取由影子数据和生产数据组成的业务数据,所述业务数据中包括能够区分所述影子数据和所述生产数据的数据标识;
145.根据所述业务数据对应的执行线程和数据标识,生成与所述业务数据对应的执行标识,所述执行标识能够区分所述影子数据和所述生产数据;
146.根据所述执行标识,在功能组件中以与该执行标识相对应的处理逻辑执行所述执行线程,所述影子数据对应的处理逻辑独立于所述生产数据对应的处理逻辑。
147.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
148.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
149.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
150.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
151.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
152.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
153.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
154.本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
155.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献