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.根据本说明书实施例的第七方面,提供了一种计算设备,包括:
32.存储器和处理器;
33.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现所述验证方法的步骤。
34.根据本说明书实施例的第八方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现所述验证方法的步骤。
35.本说明书一个实施例提供了一种验证方法,包括测试中心在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面,以及基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器;所述应用服务器接收第二用户的对象处理请求,在确定所述对象处理请求满足所述测试规则的情况下,对所述对象处理请求进行第一次处理,并获取第一处理信息,以及在所述对象处理请求的第一次处理完成后,对所述对象处理请求进行第二次处理,并获取第二处理信息,且基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至所述测试中心。具体的,所述方法只需要接收测试工程师在测试中心指定需要进行幂等测试的方案并配置相关测试规则,并将配置的测试规则发送至应用服务器,后续应用服务器就会在日常环境中基于该测试规则自动监测需要进行幂等测试的所有对象处理请求,对需要进行幂等测试的对象处理请求进行幂等评估,并将幂等评估的失败结果返回给测试中心,由测试中心发送至对应的测试工程师,进行后续的幂等测试更新,通过此种方式可以高效的完成幂等测试过程,且无需过多的人为介入,节省人工成本。
附图说明
36.图1是本说明书一个实施例提供的一种验证方法的流程图;
37.图2是本说明书一个实施例提供的一种验证方法中规则配置界面的示意图;
38.图3是本说明书一个实施例提供的一种验证方法中规则配置界面的数据反向配置示意图;
39.图4是本说明书一个实施例提供的一种验证方法中幂等验证结果界面的示意图;
40.图5是本说明书一个实施例提供的一种验证方法中幂等验证结果的统计示意图;
41.图6是本说明书一个实施例提供的一种验证方法中测试中心与应用服务器的具体交互流程图;
42.图7是本说明书一个实施例提供的一种应用于测试中心的验证方法的流程图;
43.图8是本说明书一个实施例提供的一种应用于应用服务器的验证方法的流程图;
44.图9是本说明书一个实施例提供的一种应用于应用服务器的验证方法的具体处理示意图;
45.图10是本说明书一个实施例提供的一种验证系统的结构示意图;
46.图11是本说明书一个实施例提供的一种应用于测试中心的验证装置的结构示意图;
47.图12是本说明书一个实施例提供的种应用于应用服务器的验证装置的结构示意图;
48.图13是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
49.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
50.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,
而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
51.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
52.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
53.java:一门面向对象的编程语言。
54.java方法:完成项目处理所需的java语句的集合。
55.javajar包:java归档文件,为许多java类和方法的集合。
56.幂等:一个操作其任意多次执行所产生的影响均与一次执行的影响相同。
57.幂等点:在本说明书中特指具有幂等特性的java方法。
58.幂等链路:幂等点所在的java方法内的处理链路。
59.result:本说明书特指java方法的执行结果。
60.rpc:远程过程调用,进程间通信的一种方式。
61.db:数据库,用于持久化存储数据的仓库。
62.msg:message,一种数据传递的方式。
63.幂等id:请求单号,具有唯一性,单号不变的请求执行需要满足幂等。
64.持久化数据:在永久保存的设备中存储的数据,在本方案中特指对后续项目处理有影响的数据,比如数据库数据,对外发送的消息数据,方法的输入输出数据,缓存中存储的数据。
65.幂等测试agent:幂等测试专用jar包,内部包含幂等测试的执行逻辑,使用的时候需要放入的被测应用的java进程中。
66.幂等测试中心:统一管理幂等测试是平台装置。
67.幂等规则:由用户在装置中定义的一条用于描述一个幂等测试内容的数据。
68.在分布式应用的资金项目处理中,幂等是一个很重要的点。幂等没做好,轻则影响客户,重则造成资损。在设计上,针对需要幂等的场景,同一个幂等id,无论请求多少次,最后只进行一次项目处理,结果一致。
69.例如在银行的某个放款资金流链路中,不管内部有多少次异常导致的重试,该放款资金流链路的幂等id都不会变,最后也只会走一笔资金流,即只会放一笔资金。
70.目前,应用有没有真正实现幂等,需要测试工程师验证之后才知道。而目前针对幂等的测试验证还无法持续回归,都是在测试过程中手动进行验证的。测试工程师根据幂等原则,手动创建幂等id不变的请求,连续发起多次,最后再去校验是否只发起了一次项目处理。这个验证过程有两个难点:
71.第一场景构造难:需要手动发起两次一模一样的请求,这需要依靠特定工具才能实现,而日常的工具很少是针对幂等测试进行设计。
72.第二结果验证难:需要对所有的持久化数据进行验证,这需要测试工程师对项目处理很熟悉,并且能获取到所有持久化数据才能完成,否则容易出现遗漏。
73.基于此,在本说明书中,提供了三种验证方法。本说明书一个或者多个实施例同时涉及一种验证系统,两种验证装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
74.参见图1,图1示出了根据本说明书一个实施例提供的一种验证方法的流程图,具体包括以下步骤。
75.步骤102:测试中心在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面,以及基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器。
76.步骤104:所述应用服务器接收第二用户的对象处理请求,在确定所述对象处理请求满足所述测试规则的情况下,对所述对象处理请求进行第一次处理,并获取第一处理信息,以及在所述对象处理请求的第一次处理完成后,对所述对象处理请求进行第二次处理,并获取第二处理信息,且基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至所述测试中心。
77.其中,在所述验证方法应用在对应用的幂等测试场景中,测试中心可以理解为幂等测试中心,应用服务器可以理解为可以进行任意一种应用处理的服务器,例如进行资金转入转出的应用、货品订单处理应用等等。
78.此外,第一用户可以理解为测试工程师,即在幂等测试中心进行幂等测试配置的用户;第二用户可以理解为向应用服务器发送对象处理请求的用户,对象可以理解为待执行的事件,并且第一用户和第二用户可以是同一用户,也可以是不同用户,具体根据实际应用进行设置,本说明书实施例对此不做任何限定。
79.具体的,测试中心在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面,以及基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器;可以理解为幂等测试中心在接收到测试工程师的幂等测试规则的规则配置请求的情况下,为测试工程师展示规则配置界面,以使得测试工程师可以在该规则配置界面进行幂等测试规则配置;测试中心在将规则配置界面展示给测试工程师之后,接收测试工程师以选择、点击或者输入等操作方式在规则配置界面上进行的幂等规则配置,以生成幂等测试规则,并将生成的幂等测试规则发送至对应的应用服务器。
80.实际应用中,第一用户的数量为至少一个,即测试中心在同一时间可以接收多个第一用户的规则配置请求,可以基于多个第一用户在规则配置界面的编辑操作生成的多个测试规则,并将每个测试规则发送至对应的应用服务器。
81.而应用服务器在接收到测试中心发送的测试规则之后,在接收到第二用户的对象处理请求的情况下,会判断该对象处理请求是否满足该测试规则,若是,则对该对象处理请求进行第一次处理,并获取第一处理信息,而在对象处理请求的第一次处理完成后,对该对象处理请求进行第二次处理,并获取第二处理信息;然后基于第一处理信息和第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至测试中心。
82.其中,对象处理请求可以理解为对某个事件的处理请求,例如对某笔资金的贷款
请求;而对该对象处理请求进行第一次处理则可以理解为,对该对象处理请求的第一次执行,而第一处理信息则可以理解为在对该对象处理请求第一次执行期间所影响的数据,即持久化数据,例如该对象处理请求生成的流水数据、存放该流水数据的数据库数据、调用的其他接口数据等;那么该对象处理请求进行第二次处理则可以理解为,对该对象处理请求的第二次执行,而第二处理信息则可以理解为在对该对象处理请求第二次执行期间所影响的数据,即持久化数据。
83.实际应用中,应用服务器实时监测日常环境的所有流量(即上述实施例的对象处理请求),如果基于测试规则确定该流量入口已经被定为幂等点,即需要做幂等测试的流量,则使用流量录制,录制幂等点方法执行期间所影响的数据,该数据可以称为基础数据(即第一处理信息),而在该幂等点方法执行完成后,立刻使用同样的数据对幂等点方法发起再次调用,再执行一次处理,同时再次进行流量录制执行期间所影响的数据,该数据可以称为测试数据(即第二处理信息);然后将基础数据和测试数据对所述对象处理请求进行幂等验证,并将幂等验证结果发送至测试中心。
84.具体实施时,所述将所述测试规则发送至对应的应用服务器,包括:
85.基于所述测试规则中所述第一用户在所述规则配置界面编辑的应用属性信息,将所述测试规则发送至与所述应用属性信息对应的应用服务器。
86.其中,应用属性信息包括但不限于应用服务器的名称、类型等。
87.以应用属性信息为应用服务器的名称为例,测试规则中包括对应的应用服务器名称,那么测试中心在生成测试规则之后,则会基于测试规则中的应用服务器的名称,将测试规则分别发送到对应的应用服务器中。
88.本说明书实施例中,通过测试规则中的应用属性信息可以将测试规则准确的下发到各自对应的应用服务器,应用服务器中仅存储与自身对应的测试规则,避免测试规则的冗余。
89.实际应用中,应用服务器在接收到对象处理请求的情况下,是要判断该对象处理请求的流量入口是否是测试规则中配置的,即是否是幂等点,若是,则进一步的进行是否符合幂等测试规则的验证,若否,则不进行是否符合幂等测试规则的验证,具体如下所述:
90.所述确定所述对象处理请求满足所述测试规则包括:
91.确定所述对象处理请求对应的流量入口以及属性信息,在所述对象处理请求对应的流量入口与所述测试规则中所述第一用户在所述规则配置界面编辑的流量入口一致,且所述对象处理请求对应的属性信息与所述测试规则中所述第一用户在所述规则配置界面编辑的属性信息一致的情况下,确定所述对象处理请求满足所述测试规则。
92.其中,流量入口可以理解为用户在该应用服务器中选择的具体应用接口,例如应用服务器为购物程序服务器,那么流量入口可以理解为该应用服务器中的货品出货应用接口或者是资金收款接口等。
93.属性信息包括但不限于该对象处理请求对应的全类名、方法名等等。
94.具体的,应用服务器首先要基于测试规则中设置的幂等点,即流量入口,判断与接收的对象处理请求对应的流量入口是否匹配,若匹配,才会判断该对象处理请求是否满足测试规则,进行幂等验证。
95.此外,由于测试规则中存在多项测试内容,因此应用服务器基于测试规则确定对
象处理请求是否需要进行幂等测试的判断方法有多种,本说明书实施例中以一种为例进行详细解释,但不限定应用服务器可以用其他测试内容进行对象处理请求是否需要进行幂等测试的判定,具体如下所述:
96.确定处理所述对象处理请求对应的全类名和方法名;
97.在所述对象处理请求对应的全类名和方法名,与所述测试规则中所述第一用户在所述规则配置界面编的全类名和方法名一致的情况下,确定所述对象处理请求需要进行幂等验证。
98.其中,每个对象处理请求在应用服务器都是通过不同的方法进行调用处理,该方法就是由全类名、方法名还有一些其他参数构成。
99.实际应用中,应用服务器在接收到对象处理请求之后,确定该对象处理请求对应的全类名和方法名,将该全类型和方法名,与测试规则中的第一用户在规则配置界面编辑的全类名和方法名进行比对,在比对结果一致的情况下,则应用服务器可以确定该对象处理请求满足测试规则,即该对象处理请求需要进行幂等测试。
100.本说明书实施例中,应用服务器通过对象处理请求对应的全类名和方法名,与测试规则中的第一用户在规则配置界面编辑的全类名和方法名的匹配关系,可以基于该测试规则,快速准确的判定出对象处理请求是否需要进行幂等测试。
101.参见图2,图2示出了根据本说明书一个实施例提供的一种验证方法中规则配置界面的示意图。
102.从图2可以看出,规则配置界面中至少包括规则名称、适用应用、全类名、方法名、参数类型、应用通用忽略配置、基础配置、条件脚本、返回至对比配置、db操作对比配置等等编辑项。
103.第一用户可以在该规则配置界面进行输入、选择等对该规则配置界面进行编辑,以通过编辑后的规则配置界面生成幂等测试规则。
104.具体使用时,测试中心可以通过图2中的适用应用,确定测试规则对应的应用服务器,以实现对测试规则到应用服务器的分发。
105.而在测试规则中包括全类名和方法名的情况下,应用服务器可以根据对象处理请求对应的全类名和方法名,与该测试规则中的全类名和方法名进行比对,以确定是否需要对对象处理请求进行幂等测试;实际应用中,由于规则配置界面中还会存在其他的测试项,例如参数类型等,因此应用服务器也可以根据对象处理请求中的其他参数,与该测试规则进行比对,以确定是否需要对对象处理请求进行幂等测试,例如将对象处理请求中的参数类型与测试对象中的参数类型进行比对,以确定是否需要对对象处理请求进行幂等测试等。具体可以根据实际应用进行设置,对此不做任何限定。
106.并且还可以根据规则配置界面设置测试规则的延时时间、测试时间限定等等。
107.本说明书另一实施例中,所述且基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,包括:
108.将所述第一处理信息和所述第二处理信息进行比对,基于所述第一处理信息和所述第二处理信息的比对结果,确定所述对象处理请求的幂等验证结果。
109.具体的,应用服务器对基于测试规则实现对象处理请求的执行处理,而第一用户会在测试规则中预先配置对象处理请求在执行时获取哪些参数,即获取哪些第一处理信息
以及第二处理信息,因此应用服务器对该对象处理请求进行第一次处理以及第二次处理,获取的第一处理信息以及第二处理信息是测试规则中规定好的信息。
110.参见图3,图3示出了根据本说明书一个实施例提供的一种验证方法中规则配置界面的数据反向配置示意图。
111.图3为数据库操作对比配置,在该数据库操作对比配置中为第一用户设置的针对数据操作的测试规则,该配置中的都是忽略字段,后续不进行前后一致性对比,除了这些以外,其他的数据都进行前后一致性对比。即该配置中的字段均不作为第一次处理信息和第二次处理信息,进行前后一致性对比。通过此种方式实现测试数据的反向配置。
112.实际应用中,在应用服务器对该对象处理请求执行两次处理,分别获得第一处理信息和第二处理信息之后,将这两个处理信息进行一致性对比,然后将比对结果作为该对象处理请求的幂等验证结果,即这两个处理信息一致,则说明该对象处理请求的幂等验证结果成功,该应用服务器的幂等测试没有问题,而这两个处理信息不一致,则说明该对象处理请求的幂等验证结果失败,该应用服务器的幂等测试后续需要进行调整。
113.例如第一处理信息中数据库中仅包含一条数据,而第二处理信息中数据库中包含两条数据,那么则可以说明该对象处理请求在执行时,在数据库中被多落了一条流水,后续在进行实际项目处理时,就有可能会扣两次款或者是发两个物品的情况发生,因此说明该应用服务器针对对象处理请求的幂等测试失败,后续需要测试工程师对该应用服务器进行程序调整,以实现其幂等性。
114.本说明书实施例中,针对幂等评估的数据范围采用反向配置,即幂等数据除非用户显示的执行不评估,否则都将其进行评估其幂等性,通俗理解就是在规则配置界面中展示的字段不进行评估,其他的都作为处理信息进行评估,避免出现在幂等测试时,出现字段遗漏的情况,以保证其幂等测试的准确性。
115.此外,所述将幂等验证结果发送至所述测试中心,包括:
116.根据预设时间间隔将所述对象处理请求的幂等验证结果发送至所述测试中心。
117.其中,预设时间间隔可以根据实际需求进行设置,本说明书实施例对此不做任何限定,例如设置为5秒或者10秒等。
118.具体的,应用服务器同一时间可能会对多个第二用户发送的多个对象处理请求进行幂等验证,也可能会在同一时间对一个第二用户发送的对象处理请求进行幂等验证,若应用服务器每进行一次幂等验证,就将幂等验证结果发送至测试中心,会造成应用服务器与测试中心的频繁交互,容易引起应用服务器的宕机,因此设置预设时间间隔,每隔5秒或者10秒的时间段,应用服务器将这个时间段内的所有幂等验证结果统一发送至测试中心,以节省应用服务器的处理流程,避免应用服务器与测试中心的频繁交互。
119.本说明书另一实施例中,所述方法,还包括:
120.所述测试中心对接收的所述对象处理请求的幂等验证结果进行分析,在确定所述对象处理请求的幂等验证结果失败的情况下,向所述对象处理请求对应的第三用户发送结果查看通知。
121.具体的,测试中心在接收到应用服务器发送的对象处理请求的幂等验证结果之后,将幂等验证结果成功的对象处理请求的幂等验证结果以及失败的对象处理请求的幂等验证结果进行划分,然后给每个验证结果失败的对象处理请求对应的第三用户发送结果查
看通知,例如通过邮件、短信或者弹窗提醒的方式提示对应的第三用户对其对象处理请求的幂等验证结果失败的结果进行查看,以及时的基于失败结果查找失败原因,进而对应用服务器进行修复。其中,第三用户与第一用户可以相同,也可以不同,本说明书实施例对此不做任何限定。
122.具体实施时,所述将幂等验证结果发送至所述测试中心之后,还包括:
123.所述测试中心接收第四用户针对所述对象处理请求的幂等验证结果的查看请求,基于所述查看请求将所述对象处理请求的幂等验证结果界面展示给所述第四用户。
124.具体的,测试中心将对象处理请求的幂等验证结果发送至测试中心之后,可以接收第四用户针对该对象处理请求的幂等验证结果的查看请求,基于该查看请求将该对象处理请求的幂等验证结果展示给第四用户,其中,第四用户可以是接收结果查看通知的第三用户,也可以是其他的想要查看幂等验证结果的用户。
125.参见图4,图4示出了根据本说明书一个实施例提供的一种验证方法中幂等验证结果界面的示意图。
126.测试中心在接收到第四用户针对对象处理请求的幂等验证结果的查看请求的情况下,会基于该查看请求为第四用户展示对象处理请求的幂等验证结果界面,即图4中的展示界面,通过该展示界面可以看到该对象处理请求对应的测试规则的名称、失败版本、所属应用、来源信息、失败原因、失败位置等等,以便于测试工程师可以基于该展示界面中获取到的信息对应用服务器进行程序更新,保证应用服务器的幂等性。
127.本说明书另一实施例中,所述将幂等验证结果发送至所述测试中心之后,还包括:
128.所述测试中心在接收到所述第四用户的结果查看请求的情况下,基于所述结果查看请求中携带的时间区间,统计所述时间区间内所有对象处理请求的幂等验证结果,并将所述幂等验证结果以图文的形式展示给所述第四用户。
129.其中,第一用户、第二用户、第三用户以及第四用户可以为相同用户,也可以为不同用户,也可以为有用户交叉的用户。
130.测试中心提供所有应用服务器的幂等验证结果统计图,该统计图可以是柱状图、折线图或者波浪图等等,通过该统计图用户可以看到一段时间内应用服务器的幂等验证结果。
131.具体的,测试中心在接收用户的结果查看请求的情况下,基于该结果查看请求中携带的时间区间,统计出该时间区间内所有对象处理请求的幂等验证结果,然后将该幂等验证结果以图文的形式展示给用户。
132.参见图5,图5示出了根据本说明书一个实施例提供的一种验证方法中幂等验证结果的统计示意图。
133.测试中心在接收到第四用户的结果查看请求的情况下,会基于该查看请求为第四用户展示该结果查看请求中携带的时间区间内,所有对象处理请求的幂等验证结果界面,即图5中的展示界面,通过该展示界面可以看到20210107
‑
20210114这个时间区间内所有对象处理请求的幂等验证结果的走向,并且可以通过鼠标点击某个折线点展示出某一天的所有对象处理请求的幂等验证结果的统计情况,例如图5中,点击20210112这个时间点之后,会在图5的右上角展示出20210112这天所有对象处理请求的幂等验证结果的总量、成功量、失败量、rpc调用量、db操作量以及消息发送量等。通过图5中的该图文界面,可以清楚且准
确的获得一段时间内的对象处理请求的幂等验证结果的情况。
134.本说明书实施例提供的所述验证方法只需要接收测试工程师在测试中心指定需要进行幂等测试的方案并配置相关测试规则,并将配置的测试规则发送至应用服务器,后续应用服务器就会在日常环境中基于该测试规则自动监测需要进行幂等测试的所有对象处理请求,对需要进行幂等测试的对象处理请求进行幂等评估,并将幂等评估的失败结果返回给测试中心,由测试中心发送至对应的测试工程师,进行后续的幂等测试更新,通过此种方式可以高效的完成幂等测试过程,且无需过多的人为介入,节省人工成本。
135.参见图6,图6示出了根据本说明书一个实施例提供的一种验证方法中测试中心与应用服务器的具体交互流程图。
136.以测试中心为幂等测试中心,应用服务器包括待测应用服务器a和待测应用服务器b为例,对所述验证方法进行介绍。
137.幂等测试中心包括规则管理、规则同步、结果收集以及对客触达等模块,测试工程师a和测试工程师b均基于幂等测试中心的规则管理模块,进行规则配置,配置出幂等测试规则;测试中心的规则同步模块将测试工程师a和测试工程师b通过规则管理模块配置出的幂等测试规则,下发给待测应用服务器a和待测应用服务器b,其中,待测应用服务器a和待测应用服务器b均分别包括流量监测、幂等评估、结果同步以及状态监测模块。
138.具体的,待测应用服务器a和待测应用服务器b的具体处理方式相同,因此仅以待测应用服务器a的幂等验证以及与幂等测试中心的交互为例进行详细解释。
139.待测应用服务器a的流量监测模块对流量(即应用处理请求)进行实时监测,在监测到流量的情况下,幂等评估模块均会将流量与幂等测试中心下发的幂等测试规则进行匹配,若匹配成功,则对该流量进行幂等测试,然后将幂等测试结果通过结果同步模块回传至幂等测试中心,幂等测试中心的结果收集模块对所有待测应用服务器回传的幂等测试结果进行收集,然后将幂等测试结果失败的流量通过对客触达模块发送至对应的测试工程师,完成整个幂等测试流程。
140.具体实施时,幂等测试中心是用于和测试工程师交互的地方,测试工程师可以在幂等测试中心新增、修改、删除、查询对应的幂等测试规则,以及接收、编辑、查看幂等测试统计数据。幂等测试agent(即待测应用服务器)是幂等测试规则解析和执行的地方,其实体为一个javajar包,使用的时候需要加载到幂等点所在的java进程中。
141.本说明书实施例的所述验证方法的创新点在于提供了一个用户可以直观使用的统一幂等测试方法。用户可以直接通过幂等测试中心进行幂等测试规则配置,而后进行统一分配到所有待测应用的服务器上,自动监测流量,自动构造幂等流量,自动收集数据并评估幂等性,最后再给用户展示完整的执行结果,用户除了配置规则外,无需其他操作,提升用户体验。
142.实际应用中,所述验证方法中包括幂等测试中心和幂等测试agent两个部分之间的交互,整个方法的执行流程可从图6从上往下看:
143.第一、测试工程师先根据质量要求定义确认幂等点,并在幂等测试中心配置对应的幂等测试规则。规则主要涉及如下几个部分:
144.1、幂等点:java方法,该方法会作为流量监测点,一旦有流量(即请求)发生就发起测试。
145.2、基础配置:流量识别的前置条件,满足后才会发起幂等测试。
146.3、对比配置:主要采用反向配置,即配置中的都是忽略的字段,不进行前后一致性对比,除这些外,其他的数据都进行前后一致性对比。
147.第二、幂等测试中心确认规则完成后,立刻将规则下发到待测应用各台服务器的幂等测试agent中,由幂等测试agent处理。
148.第三、后续过程无需人工参与,幂等测试agent根据幂等规则描述,对经过幂等点的所有流量进行监测,一旦有流量满足前置条件就发起幂等测试。
149.其执行过程主要是三个步骤:
150.1、实时监测日常环境的所有流量,如果该流量入口已经被定义为幂等点,需要做幂等测试,则使用流量录制,录制幂等点方法执行期间所影响的数据,此份数据为基线数据。
151.2、在幂等点方法执行完成后,立刻使用同样的数据,对幂等点方法发起一次调用,再执行一次项目处理,同时再次进行流量录制执行期间所影响的数据,此份数据为测试数据。
152.3、将测试数据与基线数据对比,按照如下原则评估幂等性:测试数据与对应的基线数据内容要一致,以及测试数据的数据库插入操作必须失败,其他操作可以成功,即对流量进行两次录制,仅在数据库插入一次数据。
153.此外,测试数据可以新增操作,并且幂等测试agent在幂等测试结束后或固定时间内,统计测试数据,并将结果回传到幂等测试中心,幂等测试中心收到各agent的回传的结果后,根据不同类型进行通知,提醒测试工程师查看幂等测试结果。主要查看如下数据:失败明细:详细查看哪条流量不满足幂等,其不满足的原因是什么;以及测试明细:查看该规则在各服务器上的测试流量统计数据,包含总量和明细量,以及自定义的流量特征量等。
154.参见图7,图7示出了本说明书一个实施例提供的一种验证方法,所述方法应用于测试中心,具体包括以下步骤。
155.步骤702:在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面。
156.步骤704:基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器。
157.具体实施时,应用于测试中心的所述验证方法可以参见上述实施例中所述验证方法中针对测试中心的具体介绍,在此不再赘述。
158.本说明书实施例提供的应用于测试中心的验证方法可以在测试中心进行幂等规则配置,使得后续应用服务器可以直接基于幂等规则实现幂等测试,无需用户参与,并且幂等测试效果较好。
159.参见图8,图8示出了本说明书一个实施例提供的一种验证方法,所述方法应用于应用服务器,具体包括以下步骤。
160.步骤802:接收第二用户的对象处理请求,在确定所述对象处理请求满足测试规则的情况下,对所述对象处理请求进行第一次处理,并获取第一处理信息。
161.步骤804:在所述对象处理请求的第一次处理完成后,对所述对象处理请求进行第二次处理,并获取第二处理信息。
162.步骤806:基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至测试中心。
163.其中,所述测试规则为所述测试中心发送的、基于所述第一用户在规则配置界面的编辑操作生成的测试规则。
164.具体实施时,应用于应用服务器的所述验证方法可以参见上述实施例中所述验证方法中针对应用服务器的具体介绍,在此不再赘述。
165.参见图9,图9示出了本说明书一个实施例提供的一种应用于应用服务器的验证方法的具体处理示意图。
166.图9中的自然流量可以理解为应用服务器确定需要进行幂等测试的对象处理请求的第一次执行,测试流量可以理解为应用服务器确定的需要进行幂等测试的该对象处理请求的第二次执行。
167.实际应用中,应用服务器对流量(即对象处理请求)进行监测,在接收流量,确定接收的流量入口为测试规则中设置的幂等点的情况下,进行第一次幂等点调用,即开始执行该对象处理请求,使用流量录制,录制流量执行期间符合测试规则的所有数据,即第一次项目处理时录制的持久化数据,例如图9中的result、db、rpc、msg。当执行完毕后,幂等点调用结束,此时应用服务器会针对该流量再次发起一次调用,即幂等点发起重复调用,调用开始,继续执行该对象处理请求,使用流量录制,录制流量执行期间符合测试规则的所有数据,当执行完毕,幂等点发起重复调用结束,即第二次重复处理时录制的持久化数据。最后将第一次调用的持久化数据和第二次调用的持久化的数据进行比对,使用者两次调用的持久化数据对该流量进行准确的幂等性评估。
168.本说明书实施例提供的应用于应用服务器的验证方法可以直接基于测试中心发送的测试规则,通过监测流量进行幂等测试,不需要主动发起幂等测试请求,采用的幂等原则,不仅可以做老项目的回归测试,还可以对新上项目做幂等测试,且在具体进行幂等验证时,采用的是全量数据对比,不会出现校验遗漏的情况。
169.与上述方法实施例相对应,本说明书还提供了验证系统实施例,图10示出了本说明书一个实施例提供的一种验证系统的结构示意图。如图10所示,该系统包括:
170.测试中心1002和应用服务器1004,其中,
171.所述测试中心1002,被配置为在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面,以及
172.基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器1004;
173.所述应用服务器1004,被配置为接收第二用户的对象处理请求,在确定所述对象处理请求满足所述测试规则的情况下,对所述对象处理请求进行第一次处理,并获取第一处理信息,以及
174.在所述对象处理请求的第一次处理完成后,对所述对象处理请求进行第二次处理,并获取第二处理信息,且基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至所述测试中心1002。
175.可选地,所述测试中心1002,进一步被配置为:
176.基于所述测试规则中所述第一用户在所述规则配置界面编辑的应用属性信息,将
所述测试规则发送至与所述应用属性信息对应的应用服务器。
177.可选地,所述应用服务器1004,进一步被配置为:
178.确定所述对象处理请求对应的流量入口以及属性信息,在所述对象处理请求对应的流量入口与所述测试规则中所述第一用户在所述规则配置界面编辑的流量入口一致,且所述对象处理请求对应的属性信息与所述测试规则中所述第一用户在所述规则配置界面编辑的属性信息一致的情况下,确定所述对象处理请求满足所述测试规则。
179.可选地,所述应用服务器1004,进一步被配置为:
180.将所述第一处理信息和所述第二处理信息进行比对,基于所述第一处理信息和所述第二处理信息的比对结果,确定所述对象处理请求的幂等验证结果。
181.可选地,所述应用服务器1004,进一步被配置为:
182.根据预设时间间隔将所述对象处理请求的幂等验证结果发送至所述测试中心。
183.可选地,所述测试中心1002,进一步被配置为对接收的所述对象处理请求的幂等验证结果进行分析,在确定所述对象处理请求的幂等验证结果失败的情况下,向所述对象处理请求对应的第三用户发送结果查看通知。
184.可选地,所述测试中心1002,进一步被配置为接收第四用户针对所述对象处理请求的幂等验证结果的查看请求,基于所述查看请求将所述对象处理请求的幂等验证结果界面展示给所述第四用户。
185.可选地,所述测试中心1002,进一步被配置为在接收到所述第四用户的结果查看请求的情况下,基于所述结果查看请求中携带的时间区间,统计所述时间区间内所有对象处理请求的幂等验证结果,并将所述幂等验证结果以图文的形式展示给所述第四用户。
186.本说明书实施例提供的所述验证系统只需要接收测试工程师在测试中心指定需要进行幂等测试的方案并配置相关测试规则,并将配置的测试规则发送至应用服务器,后续应用服务器就会在日常环境中基于该测试规则自动监测需要进行幂等测试的所有对象处理请求,对需要进行幂等测试的对象处理请求进行幂等评估,并将幂等评估的失败结果返回给测试中心,由测试中心发送至对应的测试工程师,进行后续的幂等测试更新,通过此种方式可以高效的完成幂等测试过程,且无需过多的人为介入,节省人工成本。
187.上述为本实施例的一种验证系统的示意性方案。需要说明的是,该验证系统的技术方案与上述的验证方法的技术方案属于同一构思,验证系统的技术方案未详细描述的细节内容,均可以参见上述验证方法的技术方案的描述。
188.与上述方法实施例相对应,本说明书还提供了验证装置实施例,图11示出了本说明书一个实施例提供的第一种验证装置的结构示意图。所述装置应用于测试中心,如图11所示,该装置包括:
189.界面展示模块1102,被配置为在接收到第一用户的规则配置请求的情况下,为所述第一用户展示规则配置界面;
190.规则发送模块1104,被配置为基于所述第一用户在所述规则配置界面的编辑操作生成测试规则,并将所述测试规则发送至对应的应用服务器。
191.本说明书实施例提供的所述验证装置可以在测试中心进行幂等规则配置,使得后续应用服务器可以直接基于幂等规则实现幂等测试,无需用户参与,并且幂等测试效果较好。
192.上述为本实施例的第一种验证装置的示意性方案。需要说明的是,该验证装置的技术方案与上述的验证方法的技术方案属于同一构思,验证装置的技术方案未详细描述的细节内容,均可以参见上述验证方法的技术方案的描述。
193.与上述方法实施例相对应,本说明书还提供了验证装置实施例,图12示出了本说明书一个实施例提供的一种验证装置的结构示意图。所述装置应用于应用服务器,如图12所示,该装置包括:
194.第一处理模块1202,被配置为接收第二用户的对象处理请求,在确定所述对象处理请求满足测试规则的情况下,对所述对象处理请求进行第一次处理,并获取第一处理信息;
195.第二处理模块1204,被配置为在所述对象处理请求的第一次处理完成后,对所述对象处理请求进行第二次处理,并获取第二处理信息;
196.幂等验证模块1206,被配置为基于所述第一处理信息和所述第二处理信息对所述对象处理请求进行幂等验证,并将幂等验证结果发送至测试中心;
197.其中,所述测试规则为所述测试中心发送的、基于所述第一用户在规则配置界面的编辑操作生成的测试规则。
198.本说明书实施例提供的应用于验证装置可以直接基于测试中心发送的测试规则,通过监测流量进行幂等测试,不需要主动发起幂等测试请求,采用的幂等原则,不仅可以做老项目的回归测试,还可以对新上项目做幂等测试,且在具体进行幂等验证时,采用的是全量数据对比,不会出现校验遗漏的情况。
199.上述为本实施例的一种验证装置的示意性方案。需要说明的是,该验证装置的技术方案与上述的验证方法的技术方案属于同一构思,验证装置的技术方案未详细描述的细节内容,均可以参见上述验证方法的技术方案的描述。
200.图13示出了根据本说明书一个实施例提供的一种计算设备1300的结构框图。该计算设备1300的部件包括但不限于存储器1310和处理器1320。处理器1320与存储器1310通过总线1330相连接,数据库1350用于保存数据。
201.计算设备1300还包括接入设备1340,接入设备1340使得计算设备1300能够经由一个或多个网络1360通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备1340可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi
‑
max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
202.在本说明书的一个实施例中,计算设备1300的上述部件以及图13中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图13所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
203.计算设备1300可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备1300还可以是移动式或静止
式的服务器。
204.其中,处理器1320用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述任意一种所述验证方法的步骤。
205.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的验证方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述验证方法的技术方案的描述。
206.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机可执行指令被处理器执行时实现上述任意一种所述验证方法的步骤。
207.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的验证方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述验证方法的技术方案的描述。
208.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
209.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
210.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
211.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
212.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。