CN111881018A - 一种自动化测试动态调度系统 - Google Patents
一种自动化测试动态调度系统 Download PDFInfo
- Publication number
- CN111881018A CN111881018A CN202010610838.8A CN202010610838A CN111881018A CN 111881018 A CN111881018 A CN 111881018A CN 202010610838 A CN202010610838 A CN 202010610838A CN 111881018 A CN111881018 A CN 111881018A
- Authority
- CN
- China
- Prior art keywords
- test
- distributed
- node
- case
- test case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 755
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 238000000034 method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000012812 general test Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本发明公开了一种自动化测试动态调度系统,包括:控制节点和至少一个测试节点,控制节点,用于获取测试任务,还用于监测至少一个测试节点的状态信息,并在存在第一测试节点时,依照测试顺序,将当前状态下的第一个待分发测试用例分发给第一测试节点,第一测试节点为状态信息为空闲的所有测试节点中的一个,分发完成的第一个待分发测试用例为已分发测试用例;测试节点,用于在接收到控制节点分发的第一个待分发测试用例时,执行第一个待分发测试用例,还用于向控制节点反馈所述状态信息。由于在测试节点空闲的第一时间即加入到测试用例的并行执行中,本申请测试效率得到较大的提升,解决了现有技术中的测试方案存在测试效率低下的技术问题。
Description
技术领域
本发明涉及信息测试的技术领域,尤其涉及一种自动化测试动态调度系统。
背景技术
在传统的测试方案中,通常采用一台或多台测试机器执行串行的测试。
当测试任务少时,使用部分测试机器对测试任务进行测试,其余的测试机 器将会闲置。该种情况下,闲置的测试资源未用于分担测试任务,对于测试任 务来说,显然是一种浪费,且效率是非常低下的。
而当测试任务较重时,则会利用所有的测试机器参与到测试任务的串行测 试中,由于一些复杂系统的自动化测试项数量很大,比如:操作系统测试,需 要测试内核、文件系统、驱动、CPU等所有的硬件、软件功能和性能,执行一 次自动化测试所需时间可能会达到几十个小时、甚至几天,显然,通过增加测 试机器来分担测试任务的方式,效率依然低下。
可见,现有技术中的测试方案存在测试效率低下的问题。
发明内容
本申请实施例通过提供一种自动化测试动态调度系统,解决了现有技术中 的测试方案存在测试效率低下的技术问题。
本申请通过本申请的一实施例提供如下技术方案:
一种自动化测试动态调度系统,包括:控制节点和至少一个测试节点,其 中,所述控制节点,用于获取测试任务,所述测试任务包括至少一个测试用例, 还用于监测所述至少一个测试节点的状态信息,还用于依照测试顺序,将当前 状态下的第一个待分发测试用例分发给所述状态信息为空闲的所述测试节点 中的一个测试节点,其中,分发完成的所述第一个待分发测试用例为已分发测 试用例;所述测试节点,用于在接收到所述控制节点分发的所述第一个待分发 测试用例时,执行所述第一个待分发测试用例,还用于向所述控制节点反馈所 述状态信息。
在一个实施例中,所述状态信息为空闲、繁忙、离线中的一种,其中,当 所述测试节点在执行所述测试任务的过程中,所述状态信息为繁忙;当所述测 试节点未执行所述测试任务时,所述状态信息为空闲;当所述测试节点与所述 控制节点断开连接时,所述状态信息为离线。
在一个实施例中,所述测试任务的数量为至少一个;所述控制节点,包括: 调度模块,针对于任一个所述测试任务,所述调度模块,用于:将当前状态下 的所述第一个待分发测试用例分发给所述状态信息为空闲的所述测试节点中 的一个测试节点,直至所述测试任务下的所述测试用例被分发完毕,进入下一 个所述测试任务的分发。
在一个实施例中,单个所述测试用例包括普通测试用例、强制测试用例中 的任意一个,所述普通测试用例为独立测试用例、测试组中的任意一个,所述 状态信息为空闲的测试节点为第一测试节点;针对于所述任一个测试任务,所 述调度模块,具体用于:步骤A:从所述第一测试节点中,获取任一个测试节 点作为当前测试节点;步骤B:判断所述当前测试节点是否执行过当前状态下, 所述测试任务对应的第一个待分发的所述强制测试用例,若未执行过,将所述 第一个待分发的强制测试用例分发给所述当前测试节点后,转步骤C;若执行 过,直接转步骤C;步骤C:将当前状态下,所述测试任务对应的第一个待分 发的所述普通测试用例分发给所述当前测试节点后,转步骤A;依照所述测试 顺序,重复上述步骤A-C,直至所述测试任务下的每个所述强制测试用例被分 发给所述所有测试节点,所述测试任务对应的所有所述普通测试用例被分发时, 进入下一个所述测试任务的分发,其中,当所述当前测试节点被成功分发所述 测试用例时,所述当前测试节点的状态信息由空闲调整为繁忙;当所述第一个 待分发的强制测试用例被成功分发给所述所有测试节点后,所述第一个待分发 的强制测试用例分发完成,所述第一个待分发的强制测试用例调整为已分发测 试用例;当所述第一个待分发的普通测试用例被成功分发给所述当前测试节点后,所述第一个待分发的普通测试用例分发完成,所述第一个待分发的普通测 试用例调整为已分发测试用例。
在一个实施例中,所述控制节点还包括:待测试列表、普通用例列表、强 制用例列表,其中,所述待测试列表,用于暂存所述至少一个测试任务,所述 至少一个测试任务按照所述测试顺序依次存储在待测试列表中;所述普通用例 列表,用于按照所述测试顺序存储所述普通测试用例,所述普通测试用例为所 述待测试列表中的所述测试任务经过拆解后得到的;所述强制用例列表,用于 按照所述测试顺序存储所述强制测试用例,所述强制测试用例为所述待测试列 表中的所述测试任务经过拆解后得到的;经过拆解的所述测试任务从所述待测 试列表中移除;所述第一个待分发的强制测试用例为所述强制测试用例列表中 第一个所述测试任务对应的第一个所述强制测试用例;所述第一个待分发的普 通测试用例为所述普通测试用例列表中所述第一个测试任务对应的第一个所 述普通测试用例。
在一个实施例中,所述调度模块,还用于:在所述第一个待分发的普通测 试用例在所述当前测试节点被执行完成后,将所述第一个待分发的普通测试用 例从所述普通用例列表中移除;在所述第一个待分发的强制测试用例在所述所 有测试节点被执行完成后,将所述第一个待分发的强制测试用例从所述强制用 例列表中移除。
在一个实施例中,所述调度模块,还用于:在所述将所述第一个待分发的 强制测试用例分发给所述当前测试节点之后,当所述当前测试节点的状态信息 由繁忙调整为离线时,将所述第一个待分发的强制测试用例调整为待分发测试 用例;在所述将所述第一个待分发的普通测试用例分发给所述当前测试节点后, 当所述当前测试节点的状态信息由繁忙调整为离线时,将所述第一个待分发的 普通测试用例调整为待分发测试用例。
在一个实施例中,所述控制节点,还包括:测试任务编辑模块;所述测试 任务编辑模块,响应于用户对所述测试任务进行编辑,以获取所述用户编辑后 的所述测试任务,编辑方式包括新增、删除、修改中的任一种或多种。
在一个实施例中,所述测试节点,包括:第一认证模块,其中,所述第一 认证模块,用于在所述测试节点处于离线状态或首次启动时,向所述控制节点 发起认证请求,所述认证请求中携带有认证信息,还用于在认证通过后,向所 述控制节点反馈所述状态信息;所述控制节点,包括:第二认证模块,其中, 所述第二认证模块,用于在接收所述认证请求后,基于所述认证信息对所述测 试节点进行认证,当所述认证信息满足预设条件时,则所述测试节点通过认证, 所述测试节点可执行所述测试任务,当所述认证信息不满足预设条件时,则所 述测试节点未通过认证。
在一个实施例中,所述测试节点,包括:测试执行模块、信息上报模块; 所述测试执行模块,用于在接收到所述第一个待分发测试用例时,执行所述第 一个待分发测试用例;所述信息上报模块,用于所述第一个待分发测试用例测 试完成后,将得到的测试结果反馈给所述控制节点;所述控制节点包括:信息 收集模块,用于存储所述信息上报模块反馈的所述测试结果。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优 点:
本申请提供的自动化测试动态调度系统中,通过设置一个控制节点和至少 一个测试节点,利用控制节点监测所有测试节点的状态信息,一旦存在空闲的 测试节点时,立即按照测试顺序,将当前状态下待分发的测试用例中的第一个 待分发测试用例分发给该空闲的测试节点,使测试节点对其进行测试,本申请 中,无论测试任务的轻或是重,包含一个测试用例或是多个测试用例,一旦测 试节点存于空闲状态,就会将其作为可利用的资源,在测试节点空闲的第一时 间将测试任务中还未分发的测试用例按照顺序分发给其进行执行,本申请中, 由于在测试节点空闲的第一时间即加入到测试用例的并行执行中,因此,相比 于现有技术中的串行方案,本申请测试效率得到较大的提升,解决了现有技术 中的测试方案存在测试效率低下的技术问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的 一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种自动化测试动态调度系统的架构图;
图2为本申请实施例提供的测试任务的拆解流程图。
具体实施方式
本申请实施例通过提供本申请实施例通过提供一种自动化测试动态调度 系统,解决了现有技术中的测试方案存在测试效率低下的技术问题。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
本申请提供的自动化测试动态调度系统中,通过设置一个控制节点和至少 一个测试节点,利用控制节点监测所有测试节点的状态信息,一旦存在空闲的 测试节点时,立即按照测试顺序,将待分发的测试用例中的第一个待分发测试 用例分发给该空闲的测试节点,使测试节点对其进行测试,本申请中,无论测 试任务的轻或是重,包含一个测试用例或是多个测试用例,一旦测试节点存于 空闲状态,就会将其作为可利用的资源,在测试节点空闲的第一时间将测试任 务中还未分发的测试用例按照顺序分发给其进行执行,本申请中,由于在测试 节点空闲的第一时间即加入到测试用例的并行执行中,因此,相比于现有技术 中的串行方案,本申请测试效率得到较大的提升,解决了现有技术中的测试方 案存在测试效率低下的技术问题。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方 式对上述技术方案进行详细的说明。
首先对本申请中涉及的几个专业名称做一个解释。
测试任务:用户创建的一个测试计划,包含很多的测试用例;
测试用例:为了达成测试计划目标,针对具体的一个参数或功能编写的一 个具体的测试方法、测试项(可能是可执行程序、代码或脚本);
强制测试用例:需要在普通测试用例被测试节点执行之前执行的测试用例, 测试节点通过强制测试用例执行进行前置工作,以便于后续普通测试用例的成 功执行;
普通测试用例:区别于强制测试用例,为达到某个功能的测试用例,包括: 独立测试用例和测试组,其中,测试组:由多个独立测试用例组合构成,需要 被分发给同一个测试节点申请,与独立测试用例无异。
实施例一
如图1所示,本实施例提供了一种自动化测试动态调度系统,包括:控制 节点1和至少一个测试节点2,实际应用中,控制节点1和至少一个测试节点 2的搭建,可以通过一台或多台测试设备(可以为实体机、虚拟机或容器)组 合成一个整体实现,当仅有一台测试设备时,控制节点1和测试节点2共用该 台测试设备,当有多台测试设备时,控制节点1、每个测试节点2可以单独使 用一台测试设备进行搭建。
所述自动化测试动态调度系统,包括:
控制节点1,用于获取测试任务,测试任务包括至少一个测试用例。
作为一个示例,控制节点包括:测试任务编辑模块101,控制节点1通过 测试任务编辑模块101,响应于用户对测试任务进行编辑,以获取用户编辑后 的测试任务,编辑方式包括新增、删除、修改中的任一种或多种。控制节点1 通过测试任务编辑模块101的接口,获取用户通过测试任务编辑模块101输入 的测试任务,实际应用中,可以通过命令行方式、文件(XML、YAML、JSON) 导入方式进行新增。
具体的,测试任务由用户通过测试任务编辑模块101一次性或间歇性输入 的至少一个测试任务构成,用户输入的至少一个测试任务按照测试顺序依次排 列在待测试列表中,其中,单个测试任务包括至少一个测试用例,单个测试任 务下的测试用例按照测试顺序依次排列。
作为一个示例,单个测试用例包括普通测试用例、强制测试用例中的任意 一个,普通测试用例为独立测试用例、测试组中的任意一个,那么,同一个测 试任务可由独立测试用例、强制测试用例、测试组中的任意一个或多个构成。
需要说明的是,本实施例中涉及的测试顺序可以为用户输入各测试任务或 各测试用例的先后顺序确定,并在用户通过测试任务编辑模块101对各测试任 务或各测试用例的先后顺序进行修改后,由各测试任务或各测试用例的最终的 先后顺序确定。
控制节点1,还用于监测至少一个测试节点的状态信息,可选的,状态信 息为空闲、繁忙、离线中的一种,其中,当测试节点2在执行测试任务的过程 中,即执行测试任务的任一测试用例的过程中,状态信息为繁忙;当测试节点 2未执行测试任务时,即未执行测试任务的任一测试用例,状态信息为空闲; 当测试节点2与控制节点1断开连接时,状态信息为离线。
作为一个示例,控制节点1内维护有一测试节点资源池,在该测试节点资 源池内,存储所有测试节点2及其各自对应的状态信息,通过查看各测试节点 2对应的状态信息,可以判断各测试节点2所处的状态,其中,测试节点资源 池中,状态信息为空闲的测试节点2为第一测试节点。
作为一个示例,控制节点1通过socket接收所有测试节点2反馈的心跳 包,心跳包内包括测试节点2的状态信息,基于该心跳包中提取的状态信息, 控制节点1可以监测测试节点2的状态信息。当socket能够定时收到测试节 点2反馈的心跳包时,表明测试节点2与控制节点1正常连接,基于心跳包中 的状态信息判断测试节点2处于空闲或是繁忙,并对应修改其状态信息;当 socket超时未收到心跳包时,表明测试节点2与控制节点1断开连接,此时, 修改其状态信息为离线。
控制节点1,还用于依照测试顺序,将当前状态下的第一个待分发测试用 例分发给状态信息为空闲的测试节点中的一个测试节点2,其中,分发完成的 第一个待分发测试用例为已分发测试用例。
作为一个示例,控制节点1,包括:调度模块102,针对于任一个测试任 务,控制节点1通过调度模块102将当前状态下的第一个待分发测试用例分发 给状态信息为空闲的测试节点中的一个测试节点,直至测试任务下的测试用例 被分发完毕,进入下一个所述测试任务的分发。
其中,针对于任一个测试任务,调度模块102,具体用于:
步骤A:从第一测试节点中,获取任一个测试节点作为当前测试节点;
步骤B:判断当前测试节点是否执行过当前状态下,测试任务对应的第一 个待分发的强制测试用例,若未执行过,将第一个待分发的强制测试用例分发 给当前测试节点后,转步骤C;若执行过,直接转步骤C;
步骤C:将当前状态下,测试任务对应的第一个待分发的普通测试用例分 发给当前测试节点后,转步骤A;
依照测试顺序,重复上述步骤A-C,直至测试任务下的每个强制测试用例 被分发给所有测试节点2,测试任务对应的所有普通测试用例被分发时,进入 下一个测试任务的分发,
其中,当当前测试节点被成功分发测试用例时,当前测试节点的状态信息 由空闲调整为繁忙;
当第一个待分发的强制测试用例被成功分发给所有测试节点2后,第一个 待分发的强制测试用例分发完成,第一个待分发的强制测试用例调整为已分发 测试用例;
当第一个待分发的普通测试用例被成功分发给当前测试节点后,第一个待 分发的普通测试用例分发完成,第一个待分发的普通测试用例调整为已分发测 试用例。
作为一个示例,上述将第一个待分发的强制测试用例调整为已分发测试用 例,将第一个待分发的普通测试用例调整为已分发测试用例的方法可以通过如 下方式具体实现:
控制节点1内可以维护一个分发状态表,并在该分发状态表中存储各测试 用例各自对应的分发状态,分发状态包括:待分发状态或已分发状态,当测试 用例未分发或未分发完成(若分发后,测试节点2并未反馈完成分发的信号, 表示未分发完成;若测试用例为强制测试用例,若为分发给所有的测试节点2), 该测试用例的分发状态为待分发状态,当测试用例分发完成(若测试用例为强 制测试用例,当所有的测试节点2均反馈了分发完成的信号,表示分发完成, 若测试用例为普通测试用例,当该普通测试用例分发的测试节点2反馈分发完 成的信号,表示分发完成),该测试用例的分发状态为已分发状态。
进一步地,通过查看上述分发状态表中,各测试用例对应的分发状态,可 以确定出哪些属于待分发测试用例,哪一个测试用例属于第一个待分发测试用 例,哪一个测试用例属于第一个待分发的强制测试用例,哪一个测试用例属于 第一个待分发的普通测试用例。
需要说明的是,本实施例中,随着分发过程的进行,当前状态下,第一个 待分发测试用例、第一个待分发的普通测试用例、第一个待分发的强制测试用 例不断在变化,由此,一个测试任务中的各测试用例逐渐被空闲的测试节点2 所分担并行执行。
本实施例中,当监测到有空闲状态的测试节点2时,即按照测试顺序,将 所有的待分发测试用例中的第一个待分发测试用例分发给测试节点2,因此, 本实施例中,不存在闲置测试资源的问题,对于测试任务来说,利用所有可利 用的测试资源进行测试任务的测试,效率较高,同时,本实施例中,一旦存在 空闲的测试节点2时,就将第一个待分发测试用例(按照测试顺序最先被测试 的测试用例)分发,一个测试任务中的多个测试用例按照测试顺序被空闲出来 的多个测试节点2分担并行执行,因此,相比于现有技术中的串行执行,本实 施例效率较高。
进一步地,作为又一个示例,如图2所示,控制节点1还包括:待测试列 表、普通用例列表、强制用例列表,其中,
待测试列表,用于暂存至少一个测试任务,至少一个测试任务按照测试顺 序依次存储在待测试列表中;
普通用例列表,用于按照测试顺序存储普通测试用例,普通测试用例为待 测试列表中的测试任务经过拆解后得到的;
强制用例列表,用于按照测试顺序存储强制测试用例,强制测试用例为待 测试列表中的测试任务经过拆解后得到的;
第一个待分发的强制测试用例为强制测试用例列表中第一个测试任务对 应的第一个强制测试用例;
第一个待分发的普通测试用例为普通测试用例列表中第一个测试任务对 应的第一个普通测试用例。
需要说明的是,上述分发状态表可以集成在普通测试用例列表和强制用例 列表中。另外,待测试列表中的测试任务经过拆解后,将从待测试列表中移除, 拆解测试任务的动作可由调度模块102或控制节点1内单独设置的任务拆解模 块执行。
针对普通用例列表和强制用例列表中的各测试用例,调度模块102的具体 调度流程如下:
步骤a,从测试节点资源池中取一个空闲的测试节点作为当前测试节点; 如果没有空闲的测试节点2,等待若干秒(根据需要设置),再次尝试;
步骤b,查看强制测试用例列表是否为空,如果空,则转步骤c;如果非 空,将强制测试用例列表中第一个测试任务对应的第一个强制测试用例与当前 测试节点匹配,如果该测试用例未曾在该节点执行过测试,则分发,把测试用 例状态改为已分发,转步骤c;如果已执行过测试,转步骤c;
步骤c,查看普通测试用例列表是否为空,如果空,则转步骤d;如果非 空,将普通测试用例列表中第一个测试任务对应的第一个普通测试用例则分发, 把测试用例状态改为已分发,转步骤a;
循环步骤a-c,直至第一个测试任务对应的所有强制测试用例中的每一个 测试用例被分发给所有测试节点2,第一个测试任务对应的所有普通测试用例 被分发时,才进入下一个测试任务的分发;
步骤d,查看测试任务列表是否为空,如果空,则等待若干秒(根据需要 设置),再次尝试;如果非空,则把测试任务从列表中取出,将其普通测试用 例依次输入普通测试用例列表,测试用例状态默认为待分发;将其强制测试用 例依次输入强制测试用例列表,测试用例状态默认为待分发;然后转步骤b。
可见,上述分发过程中,调度模块102按照测试顺序从第一个测试任务开 始分发,以第一个测试任务对应的所有强制测试用例中的每一个测试用例被分 发给所有测试节点2,第一个测试任务对应的所有普通测试用例被分发作为一 个测试任务分发完毕的判断条件,当第一个测试任务被分发完毕,而不是执行 测试完毕时,即可进入下一测试任务的分发,本申请针对多测试任务的情况, 还能够并行执行测试任务,有利于提高效率。
需要说明的是,待测试列表中的各个测试任务均会被拆解后放入强制用例 列表和普通用例列表,强制用例列表除了存储强制测试用例之外,还存储强制 测试用例的所属信息,即该强制测试用例属于哪个测试任务,同理,普通用例 列表除了存储普通测试用例及测试组之外,还存储普通测试用例及测试组的所 属信息,即该普通测试用例属于哪个测试任务、测试组属于哪个测试任务。通 过上述强制用例列表和普通用例列表,可以得知当前正在测试的第一个测试任 务是否被分发完成。
作为一种可选的实施例,调度模块102,还用于:
在第一个待分发的普通测试用例在任一当前测试节点被执行完成后,将第 一个待分发的普通测试用例从普通用例列表中移除;
具体应用中,当第一个待分发的普通测试用例内分发给当前测试节点后, 当前测试节点将执行,并在执行完成后,向控制节点1发送一个执行完毕的信 号,该信号携带有第一个待分发的普通测试用例的标识信息,当控制节点1收 到该信号时,将第一个待分发的普通测试用例从普通用例列表中移除,以便于 下一个待分发的普通测试用例成为新的第一个待分发的普通测试用例被调度 模块102进行分发。
在第一个待分发的强制测试用例在所有测试节点2被执行完成后,将第一 个待分发的强制测试用例从强制用例列表中移除。
具体应用中,在控制节点1内可以维护第一个待分发的强制测试用例在所 有测试节点2的执行情况表,当第一个待分发的强制测试用例内分发给当前测 试节点后,当前测试节点将执行,并在执行完成后,向控制节点1发送一个执 行完毕的信号,该信号携带有第一个待分发的强制测试用例的标识信息,当控 制节点1收到该信号时,将执行情况表中该测试节点2的执行情况调整为完毕, 以此类推,直到行情况表中所有的测试节点2均执行完毕,将第一个待分发的 强制测试用例从普通用例列表中移除,以便于下一个待分发的强制测试用例成 为新的第一个待分发的强制测试用例被调度模块102进行分发。
作为一种可选的实施例,调度模块102,还用于:
在将第一个待分发的强制测试用例分发给当前测试节点之后,当当前测试 节点的状态信息由繁忙调整为离线时,将第一个待分发的强制测试用例调整为 待分发测试用例;
在将第一个待分发的普通测试用例分发给当前测试节点后,当当前测试节 点的状态信息由繁忙调整为离线时,将第一个待分发的普通测试用例调整为待 分发测试用例。
需要说明的时是,测试用例的已分发状态并非等同于已执行完毕的状态, 当测试用例被成功分发到测试节点2后,若测试节点2离线,将收不到该测试 节点2对该测试用例的任何测试结果,本实施例中,针对该种情况,需要将该 已分发的测试用例重新进行分发测试。
测试节点2,用于在接收到控制节点1分发的第一个待分发测试用例时, 执行第一个待分发测试用例。
作为一种可选的实施例,测试节点2,包括:测试执行模块201、信息上 报模块202;
测试执行模块201,用于在接收到第一个待分发测试用例时,执行第一个 待分发测试用例;
信息上报模块202,用于第一个待分发测试用例测试完成后,将得到的测 试结果反馈给控制节点1;
控制节点1包括:信息收集模块103,用于存储信息上报模块202反馈的 测试结果。
作为一种可选的实施例,
测试执行模块201,还用于在接收到第一个待分发测试用例后,判断第一 个待分发测试用例和上一个执行的测试用例是否属于同一个测试任务,若不是, 对测试节点2进行还原,所谓的还原,及对其进行清理,使其回到初始状态, 避免上一个测试用例的执行结果对下一个测试用例的执行造成影响。
具体实施过程中,测试节点的执行第一个待分发测试用例的流程如下:
首先,接收控制节点1分发的第一个待分发测试用例,并收集当前(测试 前)的系统状态信息,例如:CPU运行状况、内存占用情况等,当成功接收到 控制节点1分发的第一个待分发测试用例,由测试节点2向控制节点1反馈分 发完成的信号;
其次,执行测试用例;
然后,收集测试结果及当前(测试后)的系统状态信息,在执行完成后, 上报测试前、后的系统状态信息和测试结果;
最后,执行测试后的清理工作,发送执行完毕信号给控制节点1。
对应的,当控制节点1接收到分发完成的信号时,若第一个待分发测试用 例为第一个待分发的强制测试用例,控制节点1查看该测试用例是否接收到所 有的测试节点2反馈的分发完成的信号,若是,将第一个待分发测试用例的状 态由待分发状态改为已分发状态;
若第一个待分发测试用例为第一个待分发的普通测试用例时,控制节点1 根据接收到的分发完成的信号,将第一个待分发测试用例的状态由待分发状态 改为已分发状态。
当控制节点1接收到执行完毕信号时,若第一个待分发测试用例为第一个 待分发的强制测试用例,控制节点1查看该测试用例是否接收到所有的测试节 点2反馈的执行完毕信号,若是,将第一个待分发测试用例移除;
若第一个待分发测试用例为第一个待分发的普通测试用例,控制节点1将 第一个待分发测试用例移除。
测试节点2,还用于向控制节点1反馈状态信息。
作为一个示例,测试节点2以心跳包的方式反馈状态信息,在心跳包内包 括测试节点2的状态信息,实际应用中,当测试节点2成功接收到控制节点1 分发的测试用例后,此时,心跳包包含的状态信息为繁忙,当测试节点2发送 测试完成信号给控制节点1后,此时,心跳包包含的状态信息为空闲。
需要说明的是,测试节点2反馈心跳包的线程和执行测试的线程属于两个 线程,测试节点2反馈心跳包的进程在执行的过程中定时发生。
作为一种可选的实施例,测试节点2,包括:第一认证模块203,其中,
第一认证模块203,用于在测试节点2处于离线状态或首次启动时,向控 制节点1发起认证请求,认证请求中携带有认证信息,还用于在认证通过后, 向控制节点1反馈状态信息;
作为一个示例,认证信息包括:测试节点2的IP地址信息、账号及密钥 信息、操作系统及版本信息、硬件参数信息中的一个或多个。
控制节点1,包括:第二认证模块104,其中,
第二认证模块104,用于在接收认证请求后,基于认证信息对测试节点2 进行认证,当认证信息满足预设条件时,则测试节点2通过认证,测试节点2 可执行测试任务,当认证信息不满足预设条件时,则测试节点2未通过认证。
实际应用中,具体认证流程如下:
步骤S1:测试节点2向控制节点1发起认证请求,开始认证,转步骤S2;
步骤S2:控制节点1在收到测试节点2的认证请求后,会通过认证信息, 判断该测试节点2是否满足预设条件,如果符合,则告知测试节点2认证通过, 并把测试节点2状态改为认证通过,转步骤S3;
如果认证失败,则把测试节点2加入黑名单若干秒(根据需要设置),不 执行认证过程;
步骤S3:把认证成功的测试节点2加入测试节点资源池,并将其状态默认 为空闲。
作为一个可选的实施例,状态信息还包括:认证成功,当测试节点2向控 制节点1发起认证通过后,测试节点2的状态信息为认证通过,接着,将认证 通过的测试节点2加入测试节点资源池后,测试节点资源池中的测试节点2对 应的状态信息可以包括空闲、繁忙、离线中的任一种。
需要说明的是,在测试进行中依然可以进行测试节点2的认证,一旦认证 成功,新增测试节点2可立刻进入测试节点资源池,成为新的测试资源。
作为一种可选的实施例,第一认证模块203,具体用于:
在认证通过后,向控制节点1发送心跳包,心跳包包含状态信息。
本实施例中测试节点2通过第一认证模块203,向控制节点1发送心跳包, 具体实施过程中,还可以通过测试节点2中单独设置的模块发送。
作为一种可选的实施例,控制节点1,还包括:结果展示模块104;
结果展示模块105,用于将测试结果输出。
具体的,结果展示模块105,用于根据各测试节点2反馈的测试结果及系 统状态信息数据进行整合后,以指定格式(XML、HTML)进行输出、展示。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
本申请提供的自动化测试动态调度系统中,通过设置一个控制节点和至少 一个测试节点,利用控制节点监测所有测试节点的状态信息,一旦存在空闲的 测试节点时,立即按照测试顺序,将待分发的测试用例中的第一个待分发测试 用例分发给该空闲的测试节点,使测试节点对其进行测试,本申请中,无论测 试任务的轻或是重,包含一个测试用例或是多个测试用例,一旦测试节点存于 空闲状态,就会将其作为可利用的资源,在测试节点空闲的第一时间将测试任 务中还未分发的测试用例按照顺序分发给其进行执行,本申请中,由于在测试 节点空闲的第一时间即加入到测试用例的并行执行中,因此,相比于现有技术 中的串行方案,本申请测试效率得到较大的提升,解决了现有技术中的测试方 案存在测试效率低下的技术问题。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基 本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要 求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种自动化测试动态调度系统,其特征在于,包括:控制节点和至少一个测试节点,其中,
所述控制节点,用于获取测试任务,所述测试任务包括至少一个测试用例,还用于监测所述至少一个测试节点的状态信息,还用于依照测试顺序,将当前状态下的第一个待分发测试用例分发给所述状态信息为空闲的所述测试节点中的一个测试节点,其中,分发完成的所述第一个待分发测试用例为已分发测试用例;
所述测试节点,用于在接收到所述控制节点分发的所述第一个待分发测试用例时,执行所述第一个待分发测试用例,还用于向所述控制节点反馈所述状态信息。
2.如权利要求1所述的自动化测试动态调度系统,其特征在于,所述状态信息为空闲、繁忙、离线中的一种,其中,
当所述测试节点在执行所述测试任务的过程中,所述状态信息为繁忙;
当所述测试节点未执行所述测试任务时,所述状态信息为空闲;
当所述测试节点与所述控制节点断开连接时,所述状态信息为离线。
3.如权利要求2所述的自动化测试动态调度系统,其特征在于,所述测试任务的数量为至少一个;
所述控制节点,包括:调度模块,针对于任一个所述测试任务,所述调度模块,用于:
将当前状态下的所述第一个待分发测试用例分发给所述状态信息为空闲的所述测试节点中的一个测试节点,直至所述测试任务下的所述测试用例被分发完毕,进入下一个所述测试任务的分发。
4.如权利要求3所述的自动化测试动态调度系统,其特征在于,
单个所述测试用例包括普通测试用例、强制测试用例中的任意一个,所述普通测试用例为独立测试用例、测试组中的任意一个,所述状态信息为空闲的测试节点为第一测试节点;
针对于所述任一个测试任务,所述调度模块,具体用于:
步骤A:从所述第一测试节点中,获取任一个测试节点作为当前测试节点;
步骤B:判断所述当前测试节点是否执行过当前状态下,所述测试任务对应的第一个待分发的所述强制测试用例,若未执行过,将所述第一个待分发的强制测试用例分发给所述当前测试节点后,转步骤C;若执行过,直接转步骤C;
步骤C:将当前状态下,所述测试任务对应的第一个待分发的所述普通测试用例分发给所述当前测试节点后,转步骤A;
依照所述测试顺序,重复上述步骤A-C,直至所述测试任务下的每个所述强制测试用例被分发给所述所有测试节点,所述测试任务对应的所有所述普通测试用例被分发时,进入下一个所述测试任务的分发,
其中,当所述当前测试节点被成功分发所述测试用例时,所述当前测试节点的状态信息由空闲调整为繁忙;
当所述第一个待分发的强制测试用例被成功分发给所述所有测试节点后,所述第一个待分发的强制测试用例分发完成,所述第一个待分发的强制测试用例调整为已分发测试用例;
当所述第一个待分发的普通测试用例被成功分发给所述当前测试节点后,所述第一个待分发的普通测试用例分发完成,所述第一个待分发的普通测试用例调整为已分发测试用例。
5.如权利要求4所述的自动化测试动态调度系统,其特征在于,
所述控制节点还包括:待测试列表、普通用例列表、强制用例列表,其中,
所述待测试列表,用于暂存所述至少一个测试任务,所述至少一个测试任务按照所述测试顺序依次存储在待测试列表中;
所述普通用例列表,用于按照所述测试顺序存储所述普通测试用例,所述普通测试用例为所述待测试列表中的所述测试任务经过拆解后得到的;
所述强制用例列表,用于按照所述测试顺序存储所述强制测试用例,所述强制测试用例为所述待测试列表中的所述测试任务经过拆解后得到的;
经过拆解的所述测试任务从所述待测试列表中移除;
所述第一个待分发的强制测试用例为所述强制测试用例列表中第一个所述测试任务对应的第一个所述强制测试用例;
所述第一个待分发的普通测试用例为所述普通测试用例列表中所述第一个测试任务对应的第一个所述普通测试用例。
6.如权利要求5所述的自动化测试动态调度系统,其特征在于,所述调度模块,还用于:
在所述第一个待分发的普通测试用例在所述当前测试节点被执行完成后,将所述第一个待分发的普通测试用例从所述普通用例列表中移除;
在所述第一个待分发的强制测试用例在所述所有测试节点被执行完成后,将所述第一个待分发的强制测试用例从所述强制用例列表中移除。
7.如权利要求4所述的自动化测试动态调度系统,其特征在于,所述调度模块,还用于:
在所述将所述第一个待分发的强制测试用例分发给所述当前测试节点之后,当所述当前测试节点的状态信息由繁忙调整为离线时,将所述第一个待分发的强制测试用例调整为待分发测试用例;
在所述将所述第一个待分发的普通测试用例分发给所述当前测试节点后,当所述当前测试节点的状态信息由繁忙调整为离线时,将所述第一个待分发的普通测试用例调整为待分发测试用例。
8.如权利要求1所述的自动化测试动态调度系统,其特征在于,所述控制节点,还包括:测试任务编辑模块;
所述测试任务编辑模块,响应于用户对所述测试任务进行编辑,以获取所述用户编辑后的所述测试任务,编辑方式包括新增、删除、修改中的任一种或多种。
9.如权利要求2所述的自动化测试动态调度系统,其特征在于,所述测试节点,包括:第一认证模块,其中,
所述第一认证模块,用于在所述测试节点处于离线状态或首次启动时,向所述控制节点发起认证请求,所述认证请求中携带有认证信息,还用于在认证通过后,向所述控制节点反馈所述状态信息;
所述控制节点,包括:第二认证模块,其中,
所述第二认证模块,用于在接收所述认证请求后,基于所述认证信息对所述测试节点进行认证,当所述认证信息满足预设条件时,则所述测试节点通过认证,所述测试节点可执行所述测试任务,当所述认证信息不满足预设条件时,则所述测试节点未通过认证。
10.如权利要求1所述的自动化测试动态调度系统,其特征在于,所述测试节点,包括:测试执行模块、信息上报模块;
所述测试执行模块,用于在接收到所述第一个待分发测试用例时,执行所述第一个待分发测试用例;
所述信息上报模块,用于所述第一个待分发测试用例测试完成后,将得到的测试结果反馈给所述控制节点;
所述控制节点包括:信息收集模块,用于存储所述信息上报模块反馈的所述测试结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610838.8A CN111881018A (zh) | 2020-06-29 | 2020-06-29 | 一种自动化测试动态调度系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610838.8A CN111881018A (zh) | 2020-06-29 | 2020-06-29 | 一种自动化测试动态调度系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111881018A true CN111881018A (zh) | 2020-11-03 |
Family
ID=73158240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010610838.8A Withdrawn CN111881018A (zh) | 2020-06-29 | 2020-06-29 | 一种自动化测试动态调度系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111881018A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342698A (zh) * | 2021-07-21 | 2021-09-03 | 统信软件技术有限公司 | 一种测试环境调度方法、计算设备及存储介质 |
CN114924919A (zh) * | 2022-04-15 | 2022-08-19 | 北京志凌海纳科技有限公司 | 一种节点管理测试方法、系统及存储介质 |
-
2020
- 2020-06-29 CN CN202010610838.8A patent/CN111881018A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342698A (zh) * | 2021-07-21 | 2021-09-03 | 统信软件技术有限公司 | 一种测试环境调度方法、计算设备及存储介质 |
CN114924919A (zh) * | 2022-04-15 | 2022-08-19 | 北京志凌海纳科技有限公司 | 一种节点管理测试方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782360B (zh) | 分布式任务调度方法及装置 | |
US8301935B2 (en) | Distributed batch runner | |
CN108268372B (zh) | Mock测试处理方法、装置、存储介质和计算机设备 | |
CN107844343B (zh) | 一种复杂服务端应用系统的升级系统及方法 | |
DE10255111A1 (de) | System und Verfahren zum Laden von Firmware mit hoher Verfügbarkeit | |
CN111881018A (zh) | 一种自动化测试动态调度系统 | |
CN110557416B (zh) | 一种多节点协同打块的方法及系统 | |
CN112055096A (zh) | 自动设置设备通信地址的方法及装置 | |
CN111371599A (zh) | 一种基于etcd的集群容灾管理系统 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
WO2024082584A1 (zh) | 资源分配方法、容器管理组件和资源分配系统 | |
CN112346980B (zh) | 软件性能测试方法、系统和可读存储介质 | |
CN110059077A (zh) | 一种数据核对方法、装置、设备和存储介质 | |
CN106412088A (zh) | 一种数据同步方法及终端 | |
CN113157411A (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN112380030A (zh) | 主任务处理方法、装置、服务器和存储介质 | |
CN114050989B (zh) | 基于云计算技术的分布式测试执行方法 | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN113568669A (zh) | 基于正交架构的业务板卡启动方法、业务板卡及正交设备 | |
CN112463494A (zh) | 一种基于智能pdu的大批量节点ac循环测试方法 | |
CN107968718A (zh) | 一种确认主备用状态的方法、装置和设备 | |
CN113238935A (zh) | 应用测试方法、系统、设备、介质及计算机程序产品 | |
CN112766768B (zh) | 合同流程管理方法、装置、电子设备以及可读存储介质 | |
CN116881113A (zh) | 一种两层级调度的自动化测试任务执行控制方法及系统 | |
CN112015601A (zh) | 一种多数据中心数据处理的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201103 |