一种事务参与者的测试方法及系统与流程

文档序号:14897512发布日期:2018-07-08 09:08阅读:263来源:国知局

本发明涉及功能测试领域,尤其涉及一种事务参与者的测试方法及系统。



背景技术:

在分布式事务场景中,事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,因此,当分布式事务发生异常时,都要实现回滚操作,并保证幂等性,而这些事务参与者只有在极端的网络环境中才会用到,所以在普通的测试环境中很难验证回滚与幂等性。目前,通过测试或开发工程师,手动干预测试环境,比如临时修改代码,以达到测试回滚特性与幂等性的目的,当测试完成时,再把代码改回去,

发明人对现有的事务参与者的测试方法进行研究发现,事务参与者测试的过程繁琐,验证方式效率很低,导致很难验证到了所有的情况,以至于很多事务参与者未经过严格的测试就进行了上线,产生很大的安全隐患的问题。



技术实现要素:

有鉴于此,本发明提供一种事务参与者的测试方法及系统,应用于分布式事务,用以解决现有技术中事务参与者测试的过程繁琐,验证方式效率很低,导致很难验证到了所有的情况,以至于很多事务参与者未经过严格的测试就进行了上线,产生很大的安全隐患的问题,具体方案如下:

一种事务参与者的测试方法,应用于分布式事务,包括:

当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;

判断测试结果是否与预设的目标结果匹配;

若是,判定所述目标事务参与者符合要求。

上述的方法,优选的,还包括:

若否,将所述目标事务参与者返回至对应的修改模块进行修改。

上述的方法,优选的,还包括:

将所述测试结果存储到对应的测试结果存储列表中。

上述的方法,优选的,预设的测试平台的构建过程包括:

获取所述分布式事务包含的各个待测试事务参与者;

分别为每一个待测试事务参与者编写对应的测试代码,所述测试代码可实现测试参数调整功能;

将所述测试代码封装到所述预设的测试平台对应的测试模块内。

上述的方法,优选的,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试包括:

获取所述目标事务参与者对应的功能代码;

将所述功能代码传递给所述对应的测试模块;

解析所述测试模块中包含的各个待确定的测试参数;

分别为所述各个待确定的测试参数分配确定的参数值;

当接收到分配完成指令时,依据所述参数值对所述目标事务参与者进行测试。

一种事务参与者的测试系统,应用于分布式事务,包括:

测试模块,用于当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;

判断模块,用于判断测试结果是否与预设的目标结果匹配;

确定模块,用于若是,判定所述目标事务参与者符合要求。

上述的系统,优选的,还包括:

修改模块,用于若否,将所述目标事务参与者返回至对应的修改模块进行修改。

上述的系统,优选的,还包括:

存储模块,用于将所述测试结果存储到对应的测试结果存储列表中。

上述的系统,优选的,所述测试模块包括:

第一获取单元,用于获取所述分布式事务包含的各个待测试事务参与者;

编写单元,用于分别为每一个待测试事务参与者编写对应的测试代码,所述测试代码可实现测试参数调整功能;

封装单元,用于将所述测试代码封装到所述预设的测试平台对应的测试模块内。

上述的系统,优选的,所述测试模块包括:

第二获取单元,用于获取所述目标事务参与者对应的功能代码;

传递单元,用于将所述功能代码传递给所述对应的测试模块;

解析单元,用于解析所述测试模块中包含的各个待确定的测试参数;

分配单元,用于分别为所述各个待确定的测试参数分配确定的参数值;

测试单元,用于当接收到分配完成指令时,依据所述参数值对所述目标事务参与者进行测试。

与现有技术相比,本发明包括以下优点:

一种事务参与者的测试方法,应用于分布式事务,所述测试方法包括:当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;判断测试结果是否与预设的目标结果匹配;若是,判定所述目标事务参与者符合要求。上述的测试方法,采用预设的测试平台进行测试,并通过对测试结果是否与所述预设的目标测试结果匹配进行判断,确定所述目标事务参与者是否符合要求,避免了现有技术中,事务参与者测试的过程繁琐,验证方式效率很低,导致很难验证到了所有的情况,以至于很多事务参与者未经过严格的测试就进行了上线,产生很大的安全隐患的问题。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种事务参与者的测试方法流程图;

图2为本申请实施例公开的一种事务参与者的测试方法又一方法流程图;

图3为本申请实施例公开的一种事务参与者的测试方法又一方法流程图;

图4为本申请实施例公开的一种事务参与者的测试系统结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

本发明提供了一种事务参与者的测试方法,应用于分布式事务,所述分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。所述测试方法的执行主体可以为分布式事务测试平台内的控制器或者处理器等,所述测试方法的流程如图1所示,包括步骤:

s101、当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;

mp1722319

本发明实施例中,优选的,所述目标事务参与者指幂等性或者回滚特性中的一种,也可以为其它优选的事务参与者,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试。

s102、判断测试结果是否与预设的目标结果匹配;

本发明实施例中,将所述目标事务参与者的测试结果与预设的目标结果进行对比,所述预设的目标结果因所述目标事务参与者的不同而不同。

s103、若是,判定所述目标事务参与者符合要求。

本发明实施例中,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试的过程,依据具体的情况,可以选择一组测试参数进行测试,也可以选择多组测试参数进行测试。所述预设的测试平台是可视化的界面操作,通过调整测试参数可以完成所述目标事务参与者的测试请求。

其中,具体的测试参数配置灵活,可全局设置、可针对某一类事务设置,也可以针对某一类参与者进行设置。既可以针对所述分布式事务中包含的所有事务的所有参与者进行测试,也可以只针对某一类事务的所有参与者进行测试,还可以针对某一类事务中的一个参与者进行配置。

本发明实施例中,还包括,当测试结果与所述预设的目标结果不匹配时,将所述目标事务参与者返回至对应的修改模块进行修改,当修改完成时,继续进行测试,直至与所述预设的目标结果匹配。

本发明实施例中,还包括:将上述的测试过程产生的测试结果存储到测试结果存储列表中,可以方便后续对测试过程进行查询,所述测试结果存储列表中存储有测试时间、目标事务参与者的类型、测试参数和测试结果等消息。优选的,依据所述测试结果存储列表中存储的信息,可以确定每一个事务参与者对应的覆盖率,可以直观的看到每一个事务参与者的测试覆盖情况。

本发明实施例中,所述预设的测试平台与所述分布式事务存在关联,所述分布式任务包含事务的id、项目、事务备注、事务别名、开始时间、耗时、异步重试等待、执行次数和状态等信息。所述事务可以为投资、预约投资、超级账户开户、关注微信领取红包和黄金投资事务等。以投资为例,包括两个事务参与者,可以简单理解为一个是银行的扣款操作,一个是网贷的库存扣减操作。

本发明实施例中,所述事务参与者的测试方法基于所述预设的测试平台实现,所述预设的测试平台对应的一个开关功能,当所述开关功能为关闭时,不进行所述事务参与者的测试操作。

一种事务参与者的测试方法,应用于分布式事务,所述测试方法包括:当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;判断测试结果是否与预设的目标结果匹配;若是,判定所述目标事务参与者符合要求。上述的测试方法,采用预设的测试平台进行测试,并通过对测试结果是否与所述预设的目标测试结果匹配进行判断,确定所述目标事务参与者是否符合要求,避免了现有技术中,事务参与者测试的过程繁琐,验证方式效率很低,导致很难验证到了所有的情况,以至于很多事务参与者未经过严格的测试就进行了上线,产生很大的安全隐患的问题。

本发明实施例中,所述预设的测试平台的构建过程的方法流程如图2所示,包括步骤:

s201、获取所述分布式事务包含的各个待测试事务参与者;

本发明实施例中,当所述分布式事务开发完成时,获取所述分布式事务中包含的各个事务参与者,每一个参与者包含多个待测试事务参与者,待测试事务参与者的确定可以依据分布式事务中的事务进行确定也可以依据事务参与者进行确定。

s202、分别为每一个待测试事务参与者编写对应的测试代码,所述测试代码可实现测试参数调整功能;

本发明实施例中,分别为所述各个测试功能中的每一个编写测试代码,所述测试代码通过所述预设的测试平台预留测试参数修改窗口,通过设置不同的测试参数测试每一个待测试事务参与者。

s203、将所述测试代码封装到所述预设的测试平台对应的测试模块内。

本发明实施例中,为每一个测试代码进行封装,并为每一个封装完成的测试代码匹配一个对应的测试模块。

本发明实施例中,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试的方法流程如图3所示,包括步骤:

s301、获取所述目标事务参与者对应的功能代码;

本发明实施例中,解析所述分布式事务中包含的所述目标事务参与者,获取所述目标事务参与者对应的功能代码,所述功能代码为一段程序。

s302、将所述功能代码传递给所述对应的测试模块;

本发明实施中,所述预设的测试平台拦截所述目标事务参与者的功能代码,将所述功能代码传递到所述预设的测试平台对应的测试模块中。

s303、解析所述测试模块中包含的各个待确定的测试参数;

本发明实施例中,确定与所述目标事务参与者关联的各个待确定的测试参数。所述待确定的测试参数可以为执行次数、失败的概率、前抛异常概率和后抛异常概率等,其中每一个测试参数都对应多个可选参数值。

s304、分别为所述各个待确定的测试参数分配确定的参数值;

本发明实施例中,分配确定的参数值可以为一组也可以为多组。

s305、当接收到分配完成指令时,依据所述参数值对所述目标事务参与者进行测试。

本发明实施例中,当接收到分配完成指令时,依据所述参数值对所述目标事务参与者进行测试。若为多组时,需要依据不同的参数值采用同样的测试方法进行重复测试,模拟抛弃异常等效果。

本发明实施例中,若所述目标事务参与者为幂等性时,所述幂等性任意多次执行所产生的影响均与一次执行的影响相同,若对幂等性进行设置时,通过对所述预设的测试平台中与幂等性测试对应的模块中修改所述支付端的执行支付次数,并验证接收端接收到的是一次支付结果还是多次支付结果,若针对参与者进行设置时,通过对所述预设的测试平台中与幂等性测试对应的模块中所述支付端的支付次数进行测试,验证发送出的支付次数与设置的是否相同,还可以对所述接收端进行设置,验证所述接收端接收的次数是否满足要求。

一般测试环境中,如果没有人手动干预,流程一般是可以成功走下去的,不会进行回滚,为了测试回滚特性,就必须通过修改代码,或者修改环境设置来达到目的,这样效率是很低的,而且没有通用性,因为不同的事务,修改的方法也不同。所以,本发明提供了一个通用的,可以测试回滚特性的办法,者指定的任何一个事务参与者,直接返回失败。

本发明实施例中,若所述目标事务参与者为回滚特性时,所述回滚特性指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为,若针对所述回滚特性进行设置时,通过对所述预设的测试平台中与回滚特性测试对应的模块中修改测试参数,设置返回失败的概率为100%,执行次数可以依据具体情况进行确定,还可以设置前抛异常和后抛异常的百分比,还可以调整失败的概率,模拟各种异常情况,覆盖到每一种可能的情况。并验证接收端是否可以回滚到上一次正确的状态。

本发明实施例中,以所述事务参与者的测试方法相对应的本发明还提供了一种事务参与者的测试系统,应用于分布式事务,所述测试系统的结构框图如图4所示,包括:

测试模块401、判断模块402和确定模块403。

其中,

所述测试模块401,用于当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;

所述判断模块402,用于判断测试结果是否与预设的目标结果匹配;

所述确定模块403,用于若是,判定所述目标事务参与者符合要求。

一种事务参与者的测试系统,应用于分布式事务,所述测试方法包括:当接收到对目标事务参与者的测试请求时,将所述目标事务参与者传递到预设的测试平台对应的测试模块进行测试;判断测试结果是否与预设的目标结果匹配;若是,判定所述目标事务参与者符合要求。上述的测试系统,采用预设的测试平台进行测试,并通过对测试结果是否与所述预设的目标测试结果匹配进行判断,确定所述目标事务参与者是否符合要求,避免了现有技术中,事务参与者测试的过程繁琐,验证方式效率很低,导致很难验证到了所有的情况,以至于很多事务参与者未经过严格的测试就进行了上线,产生很大的安全隐患的问题。

本发明实施例中,所述测试系统还包括:修改模块404。

所述修改模块404,用于若否,将所述目标事务参与者返回至对应的修改模块进行修改。

本发明实施例中,所述测试系统还包括:存储模块405。

所述存储模块405,用于将所述测试结果存储到对应的测试结果存储列表中。

本发明实施例中,所述测试模块401包括:

第一获取单元406、编写单元407和封装单元408。

其中,

所述第一获取单元406,用于获取所述分布式事务包含的各个待测试事务参与者;

所述编写单元407,用于分别为每一个待测试事务参与者编写对应的测试代码,所述测试代码可实现测试参数调整功能;

所述封装单元408,用于将所述测试代码封装到所述预设的测试平台对应的测试模块内。

本发明实施例中,所述测试模块401包括:

第二获取单元409、传递单元410、解析单元411、分配单元412和测试单元413。

其中,

所述第二获取单元409,用于获取所述目标事务参与者对应的功能代码;

所述传递单元410,用于将所述功能代码传递给所述对应的测试模块;

所述解析单元411,用于解析所述测试模块中包含的各个待确定的测试参数;

所述分配单元412,用于分别为所述各个待确定的测试参数分配确定的参数值;

所述测试单元413,用于当接收到分配完成指令时,依据所述参数值对所述目标事务参与者进行测试。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种事务参与者的测试方法及系统进行了详细介绍,本文中应用了具体的实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1