首页 / 专利库 / 软件 / 中间件 / 消息代理 / 基于分布式协调的测试方法、装置、服务器及存储介质

基于分布式协调的测试方法、装置、服务器及存储介质

阅读:1021发布:2020-06-14

专利汇可以提供基于分布式协调的测试方法、装置、服务器及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于分布式协调的测试方法、装置、 服务器 及存储介质,该方法包括:服务器通过控制服务模 块 zk-server注册任务 节点 及任务 锁 节点,将测试任务进行入队操作;执行机通过控制客户端zk-client监听服务器,在有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块在服务器注册的任务锁节点下新建执行机节点,以获取测试任务;服务器通知执行机部署测试任务对应的脚本;执行机从脚本库中下载脚本,并将部署状态信息发送给服务器;服务器发送执行测试任务的消息给执行机;执行机进行测试构建并执行脚本,以对测试任务进行测试。本发明不需要监控执行机的状态,测试任务分配流程简单,提高了测试任务的执行效率。,下面是基于分布式协调的测试方法、装置、服务器及存储介质专利的具体信息内容。

1.一种基于分布式协调的测试方法,其特征在于,所述基于分布式协调的测试方法包括:
S1,服务器在接收到测试任务时,通过控制服务模zk-server注册任务节点及任务节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
S2,执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
S3,所述服务器在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
S4,所述执行机在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
S5,所述服务器接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机;
S6,所述执行机在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
2.根据权利要求1所述的基于分布式协调的测试方法,其特征在于,所述预定的锁机制为乐观锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
控制该代理模块在该任务锁节点下尝试新建执行机节点;
若新建执行机节点成功,则分配执行机成功,该代理模块获取测试任务;
若新建执行机节点失败,则分配执行机失败,返回执行尝试新建执行机节点的步骤。
3.根据权利要求1所述的基于分布式协调的测试方法,其特征在于,所述预定的锁机制为并发锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
控制该代理模块在该任务锁节点下创建临时顺序节点;
若该临时顺序节点的数字编号是最小的数字编号,则该代理模块获取到锁,该代理模块获取测试任务;
若该临时顺序节点的数字编号不是最小的数字编号,则在监听到锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤。
4.根据权利要求1至3任一项所述的基于分布式协调的测试方法,其特征在于,所述属性信息还包括执行机的数量,所述进行测试构建并执行脚本的步骤,具体包括:若本次测试任务构建需要的执行机的数量为两台及两台以上,则两台及两台以上的执行机同时执行同一脚本,以进行并发调度。
5.一种测试装置,其特征在于,所述测试装置为执行机,所述测试装置包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:
执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
6.根据权利要求5所述的测试装置,其特征在于,所述预定的锁机制为乐观锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
控制该代理模块在该任务锁节点下尝试新建执行机节点;
若新建执行机节点成功,则分配执行机成功,该代理模块获取测试任务;
若新建执行机节点失败,则分配执行机失败,返回执行尝试新建执行机节点的步骤。
7.根据权利要求5所述的测试装置,其特征在于,所述预定的锁机制为并发锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
控制该代理模块在该任务锁节点下创建临时顺序节点;
若该临时顺序节点的数字编号是最小的数字编号,则该代理模块获取到锁,该代理模块获取测试任务;
若该临时顺序节点的数字编号不是最小的数字编号,则在监听到锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤。
8.根据权利要求5至7任一项所述的测试装置,其特征在于,所述属性信息还包括执行机的数量,所述进行测试构建并执行脚本的步骤,具体包括:若本次测试任务构建需要的执行机的数量为两台及两台以上,则两台及两台以上的执行机同时执行同一脚本,以进行并发调度。
9.一种服务器,其特征在于,所述服务器包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:
在接收到测试任务时,通过控制服务模块zk-server注册任务节点及任务锁节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机,以对测试任务进行测试。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现如权利要求1至4中任一项所述的服务器执行的基于分布式协调的测试方法的步骤,或者所述处理系统被处理器执行时实现如权利要求1至4中任一项所述的执行机执行的基于分布式协调的测试方法的步骤。

说明书全文

基于分布式协调的测试方法、装置、服务器及存储介质

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种基于分布式协调的测试方法、装置、服务器及存储介质。

背景技术

[0002] 目前,Jenkins调度平台的主仆模式master-slave模式中,主机master需要判断执行机slave是否处于空闲状态,并实时监测执行机slave的心跳,以监控执行机slave的状态。监测执行机slave的心跳的过程中存在一定的延迟(5-10秒),如果在心跳延迟的时间空隙里,有执行机slave宕机,但主机master上执行机slave仍然是可用状态,这时执行机slave仍然被分配,那么将导致节点构建失败,执行机slave无法执行测试任务,这时需要重新分配测试任务,一次测试的构建过程中执行机slave的状态很难监控,测试任务分配流程复杂,导致测试任务的执行效率低。

发明内容

[0003] 本发明的目的在于提供一种基于分布式协调的测试方法、装置、服务器及存储介质,旨在简化测试任务分配流程,提高测试任务的执行效率。
[0004] 为实现上述目的,本发明提供一种基于分布式协调的测试方法,所述基于分布式协调的测试方法包括:
[0005] S1,服务器在接收到测试任务时,通过控制服务模zk-server注册任务节点及任务节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
[0006] S2,执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
[0007] S3,所述服务器在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
[0008] S4,所述执行机在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
[0009] S5,所述服务器接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机;
[0010] S6,所述执行机在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
[0011] 优选地,所述预定的锁机制为乐观锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0012] 控制该代理模块在该任务锁节点下尝试新建执行机节点;
[0013] 若新建执行机节点成功,则分配执行机成功,该代理模块获取测试任务;
[0014] 若新建执行机节点失败,则分配执行机失败,返回执行尝试新建执行机节点的步骤。
[0015] 优选地,所述预定的锁机制为并发锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0016] 控制该代理模块在该任务锁节点下创建临时顺序节点;
[0017] 若该临时顺序节点的数字编号是最小的数字编号,则该代理模块获取到锁,该代理模块获取测试任务;
[0018] 若该临时顺序节点的数字编号不是最小的数字编号,则在监听到锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤。
[0019] 优选地,所述属性信息还包括执行机的数量,所述进行测试构建并执行脚本的步骤,具体包括:若本次测试任务构建需要的执行机的数量为两台及两台以上,则两台及两台以上的执行机同时执行同一脚本,以进行并发调度。
[0020] 为实现上述目的,本发明还提供一种测试装置,所述测试装置为执行机,所述测试装置包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:
[0021] 执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
[0022] 在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
[0023] 在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
[0024] 优选地,所述预定的锁机制为乐观锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0025] 控制该代理模块在该任务锁节点下尝试新建执行机节点;
[0026] 若新建执行机节点成功,则分配执行机成功,该代理模块获取测试任务;
[0027] 若新建执行机节点失败,则分配执行机失败,返回执行尝试新建执行机节点的步骤。
[0028] 优选地,所述预定的锁机制为并发锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0029] 控制该代理模块在该任务锁节点下创建临时顺序节点;
[0030] 若该临时顺序节点的数字编号是最小的数字编号,则该代理模块获取到锁,该代理模块获取测试任务;
[0031] 若该临时顺序节点的数字编号不是最小的数字编号,则在监听到锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤。
[0032] 优选地,所述属性信息还包括执行机的数量,所述进行测试构建并执行脚本的步骤,具体包括:若本次测试任务构建需要的执行机的数量为两台及两台以上,则两台及两台以上的执行机同时执行同一脚本,以进行并发调度。
[0033] 为实现上述目的,本发明还提供一种服务器,所述服务器包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的处理系统,所述处理系统被所述处理器执行时实现如下步骤:
[0034] 在接收到测试任务时,通过控制服务模块zk-server注册任务节点及任务锁节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
[0035] 在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
[0036] 接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机,以对测试任务进行测试。
[0037] 本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现上述的服务器执行的基于分布式协调的测试方法的步骤,或者处理系统被处理器执行时实现上述的执行机执行的基于分布式协调的测试方法的步骤。
[0038] 本发明的有益效果是:本发明在架构上引入了zookeeper,各执行机上的客户端zk-client监听服务模块zk-server上的测试任务,服务模块zk-server上有测试任务则所有客户端zk-client会收到通知,客户端zk-client通知自身的代理模块slave-agent去获取测试任务,宕机的执行机不能去获取测试任务,实现执行机主动取测试任务,本发明由服务模块zk-server管理所有状态和运行数据,由客户端zk-client将执行机中的信息反馈至服务模块zk-server中,相比于现有技术的主仆模式master-slave模式,不需要监控执行机的状态,测试任务分配流程简单,提高了测试任务的执行效率。附图说明
[0039] 图1为本发明各个实施例一可选的应用环境示意图;
[0040] 图2是图1中服务器一实施例的硬件架构的示意图
[0041] 图3是图1中测试装置一实施例的硬件架构的示意图;
[0042] 图4为本发明基于分布式协调的测试方法一实施例的流程示意图。

具体实施方式

[0043] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044] 需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
[0045] 参阅图1所示,是本发明基于分布式协调的测试方法的较佳实施例的应用环境示意图。该应用环境示意图包括服务器1及多个测试装置2(即执行机)。服务器1可以通过网络、近场通信技术等适合的技术与测试装置2进行数据交互。在本实施例中,架构中引入分布式应用程序协调服务zookeeper,其中,在服务器1部署服务模块zk-server,在各个测试装置2中部署客户端zk-client,此外,各个测试装置2中部署有代理模块slave-agent,而客户端zk-client可以被封装到代理模块slave-agent中,也可以独立存在。由服务模块zk-server管理所有状态和运行数据,客户端zk-client将执行机中的信息反馈至服务模块zk-server中。
[0046] 其中,所述服务器1或测试装置2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述服务器1或测试装置2可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
[0047] 在本实施例中,如图2所示,服务器1可包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,存储器11存储有可在处理器12上运行的处理系统及服务模块zk-server。需要指出的是,图1仅示出了具有组件11-13的服务器1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0048] 其中,存储器11包括内存及至少一种类型的可读存储介质。内存为服务器1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是服务器1的内部存储单元,例如该服务器1的硬盘;在另一些实施例中,该非易失性存储介质也可以是服务器1的外部存储设备,例如服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于测试装置1的操作系统和各类应用软件,例如存储本发明一实施例中的处理系统的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0049] 所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器微控制器微处理器、或其他数据处理芯片。该处理器12通常用于控制所述服务器1的总体操作,例如执行与所述测试装置2进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行处理系统等。
[0050] 所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述服务器1与测试装置2之间建立通信连接。本实施例中,网络接口13主要用于将服务器1与一个或多个测试装置2相连,在服务器1与一个或多个测试装置2之间建立数据传输通道和通信连接。
[0051] 所述处理系统及服务模块zk-server存储在存储器11中,包括至少一个存储在存储器11中的计算机可读指令,该至少一个计算机可读指令可被处理器器12执行,以实现本申请各实施例的方法;以及,该至少一个计算机可读指令依据其各部分所实现的功能不同,可被划为不同的逻辑模块。
[0052] 在本实施例中,如图3所示,测试装置2可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23,存储器21存储有可在处理器22上运行的处理系统、客户端zk-client及代理模块agent。需要指出的是,图3仅示出了具有组件21-23的测试装置2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0053] 其中,存储器21与上述的存储器11类似、处理器22与上述的处理器12类似,网络接口23与上述的网络接口13类似,此处不再赘述。所述处理系统、客户端zk-client及代理模块agent存储在存储器21中,包括至少一个存储在存储器21中的计算机可读指令,该至少一个计算机可读指令可被处理器器22执行,以实现本申请各实施例的方法;以及,该至少一个计算机可读指令依据其各部分所实现的功能不同,可被划为不同的逻辑模块。
[0054] 在一实施例中,上述处理系统被所述处理器12执行时实现如下步骤:
[0055] 在接收到测试任务时,通过控制服务模块zk-server注册任务节点及任务锁节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
[0056] 在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
[0057] 接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机,以对测试任务进行测试。
[0058] 在另一实施例中,上述处理系统被所述处理器22执行时实现如下步骤:
[0059] 执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
[0060] 在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
[0061] 在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
[0062] 进一步地,所述预定的锁机制为乐观锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0063] 控制该代理模块在该任务锁节点下尝试新建执行机节点;
[0064] 若新建执行机节点成功,则分配执行机成功,该代理模块获取测试任务;
[0065] 若新建执行机节点失败,则分配执行机失败,返回执行尝试新建执行机节点的步骤。
[0066] 进一步地,所述预定的锁机制为并发锁机制,所述控制该代理模块在该任务锁节点下新建执行机节点的步骤,具体包括:
[0067] 控制该代理模块在该任务锁节点下创建临时顺序节点;
[0068] 若该临时顺序节点的数字编号是最小的数字编号,则该代理模块获取到锁,该代理模块获取测试任务;
[0069] 若该临时顺序节点的数字编号不是最小的数字编号,则在监听到锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤。
[0070] 进一步地,所述属性信息还包括执行机的数量,所述进行测试构建并执行脚本的步骤,具体包括:若本次测试任务构建需要的执行机的数量为两个及两个以上,则两个及两个以上的执行机同时执行同一脚本,以进行并发调度。
[0071] 本发明在架构上引入了zookeeper,各执行机上的客户端zk-client监听服务模块zk-server上的测试任务,服务模块zk-server上有测试任务则所有客户端zk-client会收到通知,客户端zk-client通知自身的代理模块slave-agent去获取测试任务,宕机的执行机不能去获取测试任务,实现执行机主动取测试任务,本发明由服务模块zk-server管理所有状态和运行数据,由客户端zk-client将执行机中的信息反馈至服务模块zk-server中,相比于现有技术的主仆模式master-slave模式,不需要监控执行机的状态,测试任务分配流程简单,提高了测试任务的执行效率。
[0072] 如图4所示,图4为本发明基于分布式协调的测试方法一实施例的流程示意图,该基于分布式协调的测试方法包括以下步骤:
[0073] 步骤S1,服务器在接收到测试任务时,通过控制服务模块zk-server注册任务节点及任务锁节点,将测试任务进行入队操作,并保存所述任务节点对应的属性信息,所述属性信息包括脚本库系统名称;
[0074] 其中,服务器在接收到测试任务时,服务模块zk-server首先创建一个根目录,做为任务节点,入队操作就是在这个根目录下创建子节点,然后计算子节点的总数,分析子节点的总数是否和任务队列的目标数量相同。如果相同,再创建根目录start节点,由于根目录start这个节点有了状态变化,服务模块zk-server就会通知执行机的客户端zk-client:任务队列已经到齐。同时,服务模块zk-server还新建一个任务锁节点,供执行机新建节点来取任务。
[0075] 此外,注册任务节点的属性信息包括任务节点的ID码、执行机数量、脚本库系统名称,脚本库系统名称用于从对应的脚本库中下载脚本。
[0076] 步骤S2,执行机通过控制客户端zk-client监听服务器,在监听到所述服务器上有测试任务后,由客户端zk-client通知该执行机上的代理模块,控制该代理模块利用预定的锁机制在所述服务器注册的任务锁节点下新建执行机节点,以获取测试任务;
[0077] 其中,各个代理模块在接到客户端zk-client的通知后,会去任务锁节点下尝试新建执行机节点,其中,利用预定的锁机制新建执行机节点,新建执行机节点成功的执行机能够获取到测试任务。在该过程中,宕机的执行机是不会去新建执行机节点来取任务的,所以无需关心执行机状态是否处于空闲可用状态,无需监控执行机的状态,简化流程。
[0078] 在一实施例中,可以使用乐观锁机制取测试任务,假设执行机的数量为2台:
[0079] 首先,第一台执行机的代理模块在任务锁节点下尝试新建执行机节点slave1,新建成功,则分配执行机成功;
[0080] 第二台执行机的代理模块在任务锁节点下尝试新建执行机节点slave1,新建不成功,则分配执行机失败;
[0081] 然后,第二台执行机的代理模块在任务锁节点下尝试新建执行机节点slave2,新建成功,则分配执行机成功。
[0082] 在另一实施例中,可以使用并发锁机制取测试任务:
[0083] 控制该代理模块在该任务锁节点下创建临时顺序节点,同一时刻只会有一台执行机获取到任务的并发锁;
[0084] 若该临时顺序节点的数字编号是最小的数字编号,即排在第一位的是最先创建的临时顺序节点,则该代理模块获取到并发锁,该代理模块获取测试任务;
[0085] 若该临时顺序节点的数字编号不是最小的数字编号,则表示并发锁已经被其他的执行机获取到,此时就通过监听最小的数字编号的临时顺序节点是否删除事件来获知是否已经释放了并发锁,在监听到并发锁被释放后,返回执行在该任务锁节点下创建临时顺序节点的步骤,直至该临时顺序节点的数字编号是最小的数字编号,此时表示获取到了并发锁,获取到并发锁后即可获取到测试任务。
[0086] 上述实施例中预定的锁机制可以为乐观锁机制或者并发锁机制,使得本实施例支持高并发及超高并发测试任务的执行,有利于提高测试效率。
[0087] 步骤S3,所述服务器在执行机获取测试任务后,在该执行机节点下记录相应的节点名称及状态信息,若该状态信息均为新建成功状态,则通知所述执行机部署测试任务对应的脚本;
[0088] 其中,节点名称为执行机的主机IP,状态信息包括新建成功、新建失败。服务器监测执行机节点下执行机的状态信息,如果状态信息均为新建成功,则通知执行机部署该测试任务对应的脚本。
[0089] 此外,现有技术中需要将执行机的状态信息及数据等保存至数据库中,而本实施例服务模块zk-server保存所有的执行机的状态信息及数据,无需与数据库进行交互,更加方便。
[0090] 步骤S4,所述执行机在接收到所述服务器的部署脚本的通知后,获取所述服务器注册的任务节点对应的属性信息中的脚本库系统名称,在所述脚本库系统名称对应的脚本库中下载脚本,并在完成脚本部署后,更新自身的部署状态信息,将对应的部署状态信息发送给所述服务器;
[0091] 其中,执行机从脚本库中下载脚本,完成脚本部署,更新自身的部署状态信息,该部署状态信息为“部署完成”,将部署状态信息发送给服务器。
[0092] 步骤S5,所述服务器接收到所述执行机的部署状态信息后,若所有的部署状态信息为部署完成状态,则发送执行测试任务的消息给所述执行机;
[0093] 步骤S6,所述执行机在接收到所述服务器的执行测试任务的消息后,进行测试构建并执行脚本,以对所述测试任务进行测试。
[0094] 其中,如果本次测试任务构建需要的执行机的数量为一台,则该执行机在接收到服务器的执行测试任务的消息后,进行测试构建并执行脚本;
[0095] 如果若本次测试任务构建需要的执行机的数量为两台及两台以上,则每台执行机接收服务器的执行测试任务的消息,由于每台执行机收到消息的时间差较小,可忽略不计,因此可以认为是同时触发构建的,构建测试任务时会顺序提交N个相同的队列任务,抢到任务的执行机属于同一次构建,多台执行机上运行同一个测试脚本,实现并发调度,进一步提高测试效率。
[0096] 本发明在架构上引入了zookeeper,各执行机上的客户端zk-client监听服务模块zk-server上的测试任务,服务模块zk-server上有测试任务则所有客户端zk-client会收到通知,客户端zk-client通知自身的代理模块slave-agent去获取测试任务,宕机的执行机不能去获取测试任务,实现执行机主动取测试任务,本发明由服务模块zk-server管理所有状态和运行数据,由客户端zk-client将执行机中的信息反馈至服务模块zk-server中,相比于现有技术的主仆模式master-slave模式,不需要监控执行机的状态,测试任务分配流程简单,提高了测试任务的执行效率。
[0097] 本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有处理系统,所述处理系统被处理器执行时实现上述的服务器执行的基于分布式协调的测试方法的步骤,或者处理系统被处理器执行时实现上述的执行机执行的基于分布式协调的测试方法的步骤。
[0098] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0099] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0100] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈