一种自动测试方法、系统及装置转让专利

申请号 : CN201010259747.0

文献号 : CN101917306B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李炳泉

申请人 : 北京星网锐捷网络技术有限公司

摘要 :

本发明公开了一种脚本自动测试方法、系统及装置,该方法包括:将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;通过拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。该方式可以实现测试仪和测试设备的动态组合,从而能够充分利用测试系统中的测试资源,提高测试的速度和效率。

权利要求 :

1.一种自动测试方法,其特征在于,包括:

将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;

调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;

通过拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。

2.如权利要求1所述的方法,其特征在于,所述将接收到的测试任务分解成测试子任务加入测试任务队列中,具体包括:根据接收到的测试任务中各个测试脚本所需的测试拓扑,将所述测试任务中的测试脚本进行分类,得到包含需要相同测试拓扑的测试脚本的测试子任务;

根据测试子任务的优先级将测试子任务加入测试任务队列中,并记录测试子任务的状态信息。

3.如权利要求1所述的方法,其特征在于,所述调度测试队列中的测试子任务,具体包括:当接收到的测试任务时或当有测试子任务测试完成时,按照优先级顺序依次调度测试队列中待测试的测试子任务;

若没有可调度的待测试的测试子任务或待测试的测试子任务调度完成时,则调度正在测试的测试子任务。

4.如权利要求1-3任一所述的方法,其特征在于,所述可用状态的测试仪包括:处于空闲状态的测试仪和/或处于可获取状态的测试仪;

所述可用状态的测试设备包括:处于空闲状态的测试设备,和/或处于可获取状态的测试设备;

上述处于可获取状态的测试仪和测试设备是指被由正在运行的测试子任务分解出来的子测试子任务占用的测试仪和测试设备。

5.如权利要求4所述的方法,其特征在于,所述根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;包括:若当前调度的测试子任务为待测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找是否有该测试拓扑所需的处于空闲状态和/或处于可获取状态的测试仪和测试设备;

若当前调度的测试子任务为正在测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找有该测试拓扑所需的处于空闲状态的测试仪和测试设备。

6.如权利要求5所述的方法,其特征在于,若当前调度的测试子任务为正在测试的测试子任务时,所述将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试,具体包括:获取空闲状态的测试仪和测试设备,

按照当前调度的测试子任务所需的测试拓扑将可用状态的测试仪和测试设备连接起来,组成与当前调度的测试子任务所需的测试拓扑对应的测试子系统;

将当前调度的正在测试的测试子任务进行分解,通过组成的测试子系统执行分解出的子测试子任务的测试脚本。

7.一种自动测试装置,其特征在于,包括:任务接收模块、任务调度模块、资源管理模块和任务执行模块;

所述任务接收模块,用于将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;

所述任务调度模块,用于调度测试队列中的测试子任务,将当前调度的测试子任务所对应的测试拓扑通知给资源管理模块;以及当所述资源管理模块通知查找到所述测试拓扑所需的可用状态的测试仪和测试设备时,将当前调度的测试子任务和资源管理模块查找到的所需的可用状态的测试仪和测试设备,通知所述任务执行模块;

所述资源管理模块,用于根据任务调度模块通知的当前调度的测试子任务所对应的测试拓扑查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备,并通知任务调度模块;

所述任务执行模块,用于通过拓扑切换设备将所述任务调度模块通知的查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。

8.如权利要求7所述的自动测试装置,其特征在于,所述任务接收模块,具体包括:分解单元,用于根据接收到的测试任务中各个测试脚本的所需的测试拓扑,将所述测试任务中的测试脚本进行分类,得到包含需要相同测试拓扑的若干测试脚本的测试子任务;

入队单元,用于根据测试子任务的优先级将测试子任务加入测试任务队列中,并记录测试子任务的状态信息。

9.如权利要求7所述的自动测试装置,其特征在于,所述任务调度模块,具体包括:第一调度单元,用于当所述任务接收模块接收到的测试任务时或当所述任务执行模块通知有测试子任务测试完成时,按照优先级顺序依次调度测试队列中待测试的测试子任务;若没有可调度的待测试的测试子任务或待测试的测试子任务调度完成时,则调度正在测试的测试子任务;

第二调度单元,用于当所述资源管理模块查找到所述测试拓扑所需的可用状态的测试仪和测试设备,将当前调度的测试子任务和资源管理模块查找到的所需的可用状态的测试仪和测试设备,通知所述任务执行模块。

10.如权利要求7-9任一所述的自动测试装置,其特征在于,还包括:测试资源数据库,用于存储测试仪和测试设备的使用状态信息;所述状态信息包括空闲状态、可获取状态和使用状态;所述处于可获取状态的测试仪和测试设备是指被由正在运行的测试子任务分解出来的子测试子任务占用的测试仪和测试设备;

所述资源管理模块,具体用于根据任务调度模块通知的当前调度的测试子任务所对应的测试拓扑查找所述测试资源数据库,确定是否有所述测试拓扑所需的可用状态的测试仪和测试设备,并通知任务调度模块;其中,若当前调度的是待测试的测试子任务时,可用状态的测试仪和测试设备包括空闲状态和可获取状态的测试仪和测试设备;若当前调度的是正在测试的测试子任务时,可用状态的测试仪和测试设备包括空闲状态的测试仪和测试设备。

11.如权利要求10所述的自动测试装置,其特征在于,所述资源管理模块,具体包括:第一查找模块,用于若当前调度的测试子任务为待测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找所述测试资源数据库,确定是否有该测试拓扑所需的处于空闲状态和/或处于可获取状态的测试仪和测试设备;

第二查找模块,用于若当前调度的测试子任务为正在测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找所述测试资源数据库,确定是否有该测试拓扑所需的处于空闲状态的测试仪和测试设备。

12.如权利要求11所述的自动测试装置,其特征在于,所述任务执行模块,具体包括:组合单元,用于获取可用状态的测试仪和测试设备,由所述拓扑切换设备按照当前调度的测试子任务所需的测试拓扑将可用状态的测试仪和测试设备连接起来,组成与当前调度的测试子任务所需的测试拓扑对应的测试子系统;

执行单元,用于若当前调度的测试子任务为待测试的测试子任务时,通过组成的测试子系统执行当前调度的测试子任务的测试脚本;若当前调度的测试子任务为正在测试的测试子任务时,将当前调度的正在测试的测试子任务进行分解,通过组成的测试子系统执行分解出的子测试子任务的测试脚本。

13.一种自动测试系统,其特征在于,包括:若干测试仪、若干测试设备、拓扑切换设备和上述权利要求7-12任一所述的自动测试装置;

所述自动测试装置,用于将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;控制拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试;

所述拓扑切换设备,用于连接所述测试仪和测试设备,将自动测试装置查找到的可用状态的测试仪和测试设备组成测试子系统。

说明书 :

一种自动测试方法、系统及装置

技术领域

[0001] 本发明涉及通信技术领域,尤指一种用于多个测试任务脚本自动化执行的自动测试方法、系统及装置。

背景技术

[0002] 目前,在实现使用测试脚本进行测试时,不同的测试脚本对应不同的测试拓扑,常见的测试拓扑可以分别是如图1所示的测试拓扑1和如图2所示的测试拓扑2。其中,测试拓扑1所需要的测试资源包含一台测试设备1和测试仪。测试拓扑2所需要的测试资源包含测试设备1、测试设备2和测试仪。
[0003] 在现有使用测试脚本进行测试的过程中,一般会针对每个不同种类的测试拓扑分别搭建至少一个独立的测试环境,测试环境中包含了测试拓扑所需要的所有测试仪和测试设备等测试资源。
[0004] 在使用测试脚本进行测试时,先根据测试拓扑类型、优先级分解成多个不同的测试子任务,分解出的每个测试子任务里的测试脚本对应的测试拓扑类型都是相同的,不同测试子任务中的测试脚本所对应的测试拓扑类型可能是相同或者不相同的。通过人工选择与测试子任务中测试脚本所需的测试拓扑对应的测试环境,调用所选择的测试环境对测试脚本进行测试。
[0005] 如果测试子任务所需的测试拓扑的测试环境都处于使用状态,则需要等待该测试环境空闲时,才能进行测试。由于每个测试拓扑测试环境都是单独搭建,不同测试拓扑的测试环境中的测试资源不能够共享使用,因此即使其他测试环境中的资源能够满足测试子任务对应的测试拓扑中所需的测试资源,也不能为测试子任务所使用。测试子任务只能等待某一个或几个针对其测试拓扑搭建的测试环境空闲时才能进行测试。也就是说,这种方式测试子任务所需的测试环境都忙时就处于等待状态,直到符合条件的测试环境空闲。这种方式在测试资源充足时,由于每种测试拓扑类型可能对应多个测试环境来满足测试任务的需要,此时可以自动地调度测试子任务到符合测试拓扑的测试环境进行并行执行,但由于其资源不能共享,其应用过程中存在以下问题:
[0006] (1)由于测试环境都是独立设置的,每个测试环境中的测试资源不能够被另一个测试环境使用,导致测试资源不能够充分利用、测试执行效率没有进一步提高。
[0007] 例如:预先搭建了三个测试环境:测试环境1、测试环境2和测试环境3,其中,测试环境1和测试环境2里的测试资源加起来可以满足测试环境3的测试资源条件。当测试环境3中需要执行的测试子任务个数比测试环境1、测试环境2的多且时间也比较长,在测试环境1和测试环境2的测试子任务都执行结束后,测试环境1、测试环境2处于空闲状态,虽然测试环境1和测试环境2的测试资源能够满足测试环境3所需的测试资源,但是由于测试资源不能共享,测试环境1和2的测试资源即使在空闲状态时也不能执行测试环境3所能执行的测试子任务。因此,导致测试资源闲置,测试资源的利用率低。
[0008] (2)当某两种测试环境均能满足测试子任务的测试需求时,若该测试子任务的执行时间比较长,即使其他的测试资源空闲也不能用于对这个测试子任务进行并行测试。
[0009] 例如:测试子任务1在测试环境1上执行,且所需要的时间很长,同时测试环境2也可以满足测试子任务1的测试需求,当测试环境2上的测试子任务执行完成处于空闲状态时,即使测试子任务1还没有执行完,也不能使用测试环境2的空闲资源进行并行执行测试子任务1。导致测试资源利用率不高,执行效率也比较低。
[0010] (3)即使一个测试子任务只需要某个测试环境的部分测试资源,但由于各个测试环境已经搭建好,不能拆分使用,因此即使一个测试任务只需要部分测试资源,也会使整个测试环境的全部测试资源处于不可用状态。
[0011] 例如:测试子任务1的测试拓扑是测试环境1的测试拓扑的一个子集,当测试子任务1在测试环境1中执行时,就使得测试环境1的所有测试资源处于不可用状态,测试环境1中没有被测试子任务1使用的部分测试资源也不能释放给其他测试子任务使用,因此也会导致测试资源闲置,测试资源利用率不高,测试资源利用的灵活度低。
[0012] 可见,现有技术中单独搭建的各个测试环境,当其中一个测试环境的测试脚本执行完释放测试资源后,释放的测试资源不能够自动给另一个缺少测试资源的测试环境使用,除非对测试环境进行重新搭建以满足其他测试脚本的需求。从而使得在自动化测试过程中需要投入较多的人力资源。例如:测试环境2中缺少一台测试设备或其中的一台测试设备因故障不能使用,即使测试环境1中有该测试设备且处于空闲状态,也不能直接共享给测试环境2使用,而必须人工干预,将测试环境1中的空闲设备切换加入到测试环境2中,实现对测试环境2的重新搭建后才能使用。
[0013] 随着测试拓扑复杂度的提高或者测试设备数量的增加,需要调整的和重新搭建的可能性也增大,所需投入的人力资源也就更多;由此可见,现有的自动化测试实现方案,测试资源也不能达到很好共享利用的效果且需要投入大量的人力、物力、财力。例如:测试环境2刚好缺少一台测试设备,需要利用测试环境1测试脚本执行完后释放的测试设备,当测试环境1的测试脚本执行完了,需要人工干预使测试环境1的测试资源未测试环境2所利用时,也许测试人员已经下班或者不在,从而不能及时进行切换测试环境,因此,导致测试资源就一直处于空闲状态,测试资源利用率不高,自动化测试执行效率低。

发明内容

[0014] 本发明实施例提供一种自动测试方法、系统及装置,用以解决现有技术中存在测试资源不能共享,测试资源利用率低,测试效率低等问题。
[0015] 一种自动测试方法,包括:
[0016] 将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;
[0017] 调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;
[0018] 通过拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。
[0019] 一种自动测试装置,包括:任务接收模块、任务调度模块、资源管理模块和任务执行模块;
[0020] 任务接收模块,用于将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;
[0021] 任务调度模块,用于调度测试队列中的测试子任务,将当前调度的测试子任务所对应的测试拓扑通知给资源管理模块;以及当所述资源管理模块通知查找到所述测试拓扑所需的可用状态的测试仪和测试设备时,将当前调度的测试子任务和资源管理模块查找到的所需的可用状态的测试仪和测试设备,通知所述任务执行模块;
[0022] 资源管理模块,用于根据任务调度模块通知的当前调度的测试子任务所对应的测试拓扑查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备,并通知任务调度模块;
[0023] 任务执行模块,用于通过拓扑切换设备将任务调度模块通知的查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。
[0024] 一种自动测试系统,包括:若干测试仪、若干测试设备、拓扑切换设备和上述的自动测试装置;
[0025] 所述自动测试装置,用于将接收到的测试任务分解成若干测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;控制拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试;
[0026] 所述拓扑切换设备,用于连接所述测试仪和测试设备,将自动测试装置查找到的可用状态的测试仪和测试设备组成测试子系统。
[0027] 本发明有益效果如下:
[0028] 本发明实施例提供的脚本自动测试方法、系统及拓扑切换设备,通过将接收到的测试任务分解成测试子任务加入测试任务队列中,所述测试子任务中包含的脚本所需的测试拓扑相同;调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有所述测试拓扑所需的可用状态的测试仪和测试设备;将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。该方式通过拓扑切换设备实现测试仪和测试设备的动态组合,根据不同测试子任务的测试拓扑需求组成不同的测试子系统,对各个测试子任务进行测试,这样只要测试仪和测试设备未被占用,就可以被待测试的测试子任务使用,从而能够充分利用测试系统中的测试资源,包括各个测试仪和测试设备,提高了测试资源利用率,实现了测试资源的共享使用,由于不同的子系统可以动态组成,减少了测试资源空闲的可能性。该方法可以不受测试拓扑类型的限制,只需通过拓扑切换设备即可动态利用和共享测试仪和测试设备形成各种测试拓扑的测试子系统,为要求不同测试拓扑的测试子任务所用。且可以同时组成多个测试子系统,提高测试的速度和效率,尤其是在运行多个测试子任务时,其提高测试速度和执行效率的作用更加显著。

附图说明

[0029] 图1为现有技术中测试拓扑的一种结构示例图;
[0030] 图2为现有技术中测试拓扑的另一种结构示例图;
[0031] 图3为本发明实施例中自动测试系统的结构示意图;
[0032] 图4为本发明实施例一中自动测试方法的实现流程示意图;
[0033] 图5为本发明实施例二中自动测试系统的具体结构示意图;
[0034] 图6为本发明实施例二中任务接收模块的实现流程示意图;
[0035] 图7为本发明实施例二中任务调度模块的实现流程示意图;
[0036] 图8为本发明实施例二中任务调度模块对待测试的测试子任务进行调度的流程示意图;
[0037] 图9为本发明实施例二中任务调度模块对正在测试的测试子任务进行调度的流程示意图;
[0038] 图10为本发明实施例二中资源管理模块的实现流程示意图;
[0039] 图11为本发明实施例二中任务执行模块的实现流程示意图;
[0040] 图12为本发明实施例三中一个自动测试实例的实现流程图。

具体实施方式

[0041] 针对现有技术中单独搭建的各个测试环境资源利用率低、测试效率也比较低的问题,本申请实施例提供一种脚本自动测试方法,该方法搭建一个包含各种测试仪、测试设备和拓扑切换设备的测试系统(即搭建一个统一的测试环境),将各种测试仪和测试设备通过拓扑切换设备连接,通过自动测试装置的控制使得各个测试仪和测试设备能够动态组合成满足各种测试拓扑要求的测试子系统(即动态组合满足各种测试拓扑的测试环境),实现测试资源的灵活组合、动态搭配,以提高测试资源利用率和测试效率。
[0042] 本发明实施例提供的自动测试系统的结构如图3所示,包括:若干测试仪、若干测试设备、拓扑切换设备和自动测试装置。如图所示,测试仪包括测试仪1、测试仪2、测试仪3、......、测试仪n等,测试设备包括测试设备1、测试设备2、测试设备3、......、测试设备n等。其中各个测试仪和各个测试设备均与拓扑切换设备直接相连,并能通过拓扑切换设备的控制实现互连及连接切换。
[0043] 上述自动测试装置,用于将接收到的测试任务分解成测试子任务加入测试任务队列中,其中每个测试子任务中包含的脚本所需的测试拓扑相同;调度测试队列中的测试子任务,根据当前调度的测试子任务所对应的测试拓扑,查找是否有当前调度的测试任务所对用的测试拓扑所需的可用状态的测试仪和测试设备;控制拓扑切换设备将查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。
[0044] 上述拓扑切换设备,由于连接所述测试仪和测试设备,将自动测试装置查找到的可用状态的测试仪和测试设备组成测试子系统。
[0045] 上述测试仪和测试设备,用于在自动测试装置的控制下,通过拓扑切换设备动态组成对测试子任务进行测试的测试子系统。其中,测试仪用于可以根据测试脚本的配置发送测试所需的测试信号和原始数据信息等。
[0046] 上述自动测试装置可以如图3所示的单独设置为一个独立的装置,也可以设置在拓扑切换设备中。
[0047] 下面通过具体实施例对使用上述自动测试系统进行测试脚本自动测试的实现过程进行具体描述。
[0048] 实施例一:
[0049] 本发明实施例提供一的自动测试方法,使用如图1所示的自动测试系统实现,该方法流程如图4所示,执行步骤如下:
[0050] 步骤S1:对接收到的测试任务进行分解,得到若干测试子任务。
[0051] 接收到测试人员提交的测试任务时,一般根据接收到的测试任务中各个测试脚本的所需的测试拓扑,将接收到的测试任务中的测试脚本进行分类,得到包含需要相同测试拓扑的若干测试脚本的测试子任务;也就是说将接收到的测试任务进行分解得到的测试子任务中包含的脚本所需的测试拓扑相同。
[0052] 步骤S2:将分解得到的各个测试子任务加入测试任务队列中。
[0053] 将分解得到的测试子任务加入到测试任务队列中,排队等候测试。
[0054] 优选的,可以根据测试子任务的优先级将测试子任务加入测试任务队列中,并记录测试子任务的状态信息。
[0055] 步骤S3:调度测试任务队列中的测试子任务。
[0056] 当接收到的测试任务时或当有测试子任务测试完成时,都会触发对测试任务队列中测试子任务的调度。一般从第一个待调度的测试子任务开始调度,并为其查找与其测试拓扑所需要的测试仪和测试设备后,并继续调度下一个测试子任务,直至调度完所有的测试子任务。
[0057] 优选的,按照优先级顺序依次调度测试队列中测试子任务。
[0058] 一般首先对测试任务队列中待测试的测试子任务进行调度,若没有可调度的待测试的测试子任务或待测试的测试子任务调度完成时,则继续调度正在测试的测试子任务。
[0059] 步骤S4:根据当前调度的测试子任务所对应的测试拓扑,查找是否有该测试拓扑所需的可用状态的测试仪和测试设备。
[0060] 若当前调度的测试子任务为待测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找自动测试系统的测试资源数据库,确定自动测试系统中是否有该测试拓扑所需的处于空闲状态和/或处于可获取状态的测试仪和测试设备;
[0061] 也就是说,可用状态的测试仪包括:处于空闲状态的测试仪和/或处于可获取状态的测试仪;可用状态的测试设备包括:处于空闲状态的测试设备,和/或处于可获取状态的测试设备。其中,处于可获取状态的测试仪和测试设备是指被由正在运行的测试子任务分解出来的子测试子任务占用的测试仪和测试设备。
[0062] 若当前调度的测试子任务为正在测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找自动测试系统的测试资源数据库,确定自动测试系统中是否有该测试拓扑所需的处于空闲状态的测试仪和测试设备。
[0063] 若是,执行步骤S5,并返回执行步骤S3,继续调度下一个测试子任务。否则直接返回执行步骤S3,继续调度下一个测试子任务。
[0064] 步骤S5:将查找到的可用状态的测试仪和测试设备组成测试子系统。
[0065] 具体从自动测试系统的测试资源数据库中获取可用状态的测试仪和测试设备,由拓扑切换设备按照当前调度的测试子任务所需的测试拓扑将可用状态的测试仪和测试设备连接起来,组成与当前调度的测试子任务所需的测试拓扑对应的测试子系统。
[0066] 步骤S6:通过组成的测试子系统对测试子任务进行测试。
[0067] 若当前调度的测试子任务为待测试的测试子任务时,通过组成的测试子系统执行当前调度的测试子任务的测试脚本。
[0068] 若当前调度的测试子任务为正在测试的测试子任务时,将当前调度的正在测试的测试子任务进行分解,通过组成的测试子系统执行分解出的子测试子任务的测试脚本。
[0069] 实施例二:
[0070] 本发明实施例提供二的脚本自动测试方法,针对如图3所示的自动测试系统中拓扑切换设备中的各个模块,具体说明各个模块在测试过程中的实现流程。自动测试系统的具体结构如图5所示,包括自动测试装置、拓扑切换设备、测试仪和测试设备,其中,测试仪和测试设备可以根据需要组成测试子系统1、......、测试子系统n等,用于执行测试子任务1、......、测试子任务n等。
[0071] 其中,拓扑切换设备与测试仪和测试设备的连接关如图3中所示,各个测试仪和测试设备之间不直接连接,均与拓扑切换设备连接,从而可以实现针对不同测试拓扑的动态组合。
[0072] 其中,自动测试装置具体包括:任务接收模块10、任务调度模块20、资源管理模块30和任务执行模块40。上述自动测试装置,还包括测试资源数据库50。
[0073] 任务接收模块10,用于将接收到的测试任务分解成若干测试子任务加入测试任务队列中,其中一个测试子任务中包含的脚本所需的测试拓扑相同。
[0074] 优选的,上述任务接收模块10具体可以包括:分解单元和入队单元。
[0075] 分解单元,用于根据接收到的测试任务中各个测试脚本的所需的测试拓扑,将测试任务中的测试脚本进行分类,得到包含需要相同测试拓扑的若干测试脚本的测试子任务。
[0076] 入队单元,用于根据测试子任务的优先级将测试子任务加入测试任务队列中,并记录测试子任务的状态信息。
[0077] 任务调度模块20,用于调度测试队列中的测试子任务,将当前调度的测试子任务所对应的测试拓扑通知给资源管理模块30;以及当资源管理模块30通知查找到该测试拓扑所需的可用状态的测试仪和测试设备时,将当前调度的测试子任务和资源管理模块30查找到的所需的可用状态的测试仪和测试设备,通知该任务执行模块40。
[0078] 优选的,上述任务调度模块20,具体可以包括:第一调度单元和第二调度单元。
[0079] 第一调度单元,用于当任务接收模块10接收到的测试任务时或当任务执行模块40通知有测试子任务测试完成时,按照优先级顺序依次调度测试队列中待测试的测试子任务;若没有可调度的待测试的测试子任务或待测试的测试子任务调度完成时,则调度正在测试的测试子任务。
[0080] 第二调度单元,用于当资源管理模块30查找到当前调度的测试子任务测试拓扑所需的可用状态的测试仪和测试设备,将当前调度的测试子任务和资源管理模块30查找到的所需的可用状态的测试仪和测试设备,通知任务执行模块40。
[0081] 资源管理模块30,用于根据任务调度模块通知的当前调度的测试子任务所对应的测试拓扑查找是否有当前调度的测试子任务的测试拓扑所需的可用状态的测试仪和测试设备,通知任务调度模块20。
[0082] 较佳的,上述资源管理模块30,具体用于根据任务调度模块20通知的当前调度的测试子任务所对应的测试拓扑查找所述测试资源数据库,确定自动测试系统中是否有当前调度的测试子任务的测试拓扑所需的可用状态的测试仪和测试设备,并通知任务调度模块20。
[0083] 优选的,上述资源管理模块30,具体可以包括:第一查找模块和第二查找模块。
[0084] 第一查找模块,用于若当前调度的测试子任务为待测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找自动测试系统的测试资源库,确定自动测试系统中是否有该测试拓扑所需的处于空闲状态和/或处于可获取状态的测试仪和测试设备;其中,处于可获取状态的测试仪和测试设备是指被由正在运行的测试子任务分解出来的子测试子任务占用的测试仪和测试设备。
[0085] 第二查找模块,用于若当前调度的测试子任务为正在测试的测试子任务时,根据当前调度的测试子任务所对应的测试拓扑,查找自动测试系统的测试资源库,确定自动测试系统中是否有该测试拓扑所需的处于空闲状态的测试仪和测试设备。
[0086] 任务执行模块40,用于将任务调度模块20通知的查找到的可用状态的测试仪和测试设备组成测试子系统对测试子任务进行测试。
[0087] 优选的,上述任务执行模块40,具体可以包括:组合模块和执行模块。
[0088] 组合单元,用于从自动测试系统的测试资源数据库中获取可用状态的测试仪和测试设备,按照当前调度的测试子任务所需的测试拓扑,由拓扑切换设备将可用状态的测试仪和测试设备连接起来,组成与当前调度的测试子任务所需的测试拓扑对应的测试子系统。
[0089] 执行单元,用于若当前调度的测试子任务为待测试的测试子任务时,通过组成的测试子系统执行当前调度的测试子任务的测试脚本;若当前调度的测试子任务为正在测试的测试子任务时,将当前调度的正在测试的测试子任务进行分解,通过组成的测试子系统执行分解出的子测试子任务的测试脚本。
[0090] 上述测试资源数据库50,用于存储测试仪和测试设备的状态信息;上述状态信息包括空闲状态、可获取状态和使用状态;其中,处于可获取状态的测试仪和测试设备是指被由正在运行的测试子任务分解出来的子测试子任务占用的测试仪和测试设备;
[0091] 资源管理模块30,具体用于根据任务调度模块20通知的当前调度的测试子任务所对应的测试拓扑查找测试资源数据库50,确定是否有当前调度的测试子任务测试拓扑所需的可用状态的测试仪和测试设备,并通知任务调度模块20;其中,若当前调度的是待测试的测试子任务时,可用状态的测试仪和测试设备包括空闲状态和可获取状态的测试仪和测试设备;若当前调度的是正在测试的测试子任务时,可用状态的测试仪和测试设备包括空闲状态的测试仪和测试设备。
[0092] 下面针对上述自动测试装置中的各个模块,分别说明各个模块的在测试过程中的实现过程。
[0093] 任务接收模块10实现对测试人员提交的测试任务的接收和分解后的子任务入队,即上述步骤S1、步骤S2的所述的执行过程,其实现流程如图6所示,执行步骤如下:
[0094] 步骤S11:接收测试人员提交的测试任务。
[0095] 测试人员将需要测试的测试任务提交给自动测试系统,接收到新提交的测试任务时,需要对该任务进行处理。
[0096] 步骤S12:将接收到的测试任务进行分解,得到若干测试子任务。
[0097] 一般根据测试任务中测试脚本的测试拓扑的类型进行分类,将测试拓扑相同的分解到一个测试子任务中。优选的,进一步考虑测试任务中测试脚本的优先级,将测试拓扑相同且优先级也相同的测试脚本分解到一个测试子任务中。
[0098] 步骤S13:确定每个测试子任务的测试预期时长。
[0099] 每个测试子任务预期所需要的测试预期时长,可以根据每个测试子任务中需要执行的测试脚本名称到测试脚本库中获取对应测试脚本预期执行时间长度,进而得出测试子任务预期执行的总时间长度,即测试预期时长。
[0100] 测试脚本库是测试人员维护的一个文件,其中记录了测试脚本各种属性信息,测试脚本库里的测试脚本预期执行用时间长度,是在测试脚本第一次完整执行完后,根据执行该脚本所用的时间确定出来的,该时间可以由测试人员填写。
[0101] 步骤S14:根据测试子任务的优先级将测试子任务加入测试任务队列中。
[0102] 测试任务队列用于存放测试子任务即测试子任务的属性信息,其属性信息包括测试子任务名称、测试子任务的状态、测试子任务的测试预期时长,此外,还可以包括正在执行的测试子任务的已测试时间长度等等。
[0103] 将测试子任务提交到测试队列中时,根据其优先级提交,针对相同优先级的测试子任务,则根据提交的先后顺序依次放入测试任务队列中。
[0104] 将测试子任务放入测试任务队列中时,将其状态设置为“新状态”,以表征该测试子任务处于待测试状态。
[0105] 测试任务队列中的测试子任务包括待测试状态和正在测试状态(即运行状态),测试任务队列中的测试子任务还可以包括测试完成状态。其中,待测试状态包括:新提交的“新状态”的测试子任务和和先前提交的经过至少一次调度没有找到满足条件的测试资源(包括测试仪和测试设备)来执行测试而处于“等待状态”的测试子任务。运行状态是指测试子任务经过调度,有满足测试条件的测试资源来执行测试,从而正在进行测试且尚未测试完成的测试子任务。
[0106] 测试子任务名称是测试人员提交测试子任务时定义的,且是唯一的。
[0107] 测试子任务的测试预期时长即上述步骤S13中确定出的测试预期时长。
[0108] 测试子任务已测试时间长度是针对正在测试的测试子任务而言的,具体是指测试子任务执行过程中已经消耗的时间。该时间在每执行完测试子任务中的一个测试脚本进行一次更新,具体由任务执行模块来完成对测试队列中的该项纪录的更新的。
[0109] 步骤S15:检测任务调度模块是否正在执行测试任务调度流程。
[0110] 通过任务调度模块的运行状态信息变量,可以判断出任务调度模块是否正在执行测试任务调度流程。
[0111] 若是,则执行步骤S17;若否,执行步骤S16。
[0112] 步骤S16:触发测试任务调度流程。
[0113] 也就是说,新的测试任务提交时,如果任务调度模块没有运行,既没有执行测试任务调度流程,则触发任务调度模块运行,启动测试任务调度流程。
[0114] 触发测试任务调度流程后执行步骤S17。
[0115] 步骤S17:结束本次测试任务提交流程。
[0116] 也就是说,新的测试任务提交时,如果任务调度模块正在运行,既正在执行测试任务调度流程,则可以直接结束本次测试任务提交流程,继续等待接收测试人员提交的测试任务。
[0117] 此外,如果新的测试任务提交时,任务调度模块没有运行,则在触发任务调度模块运行,启动测试任务调度流程后结束本次测试任务提交流程,继续等待接收测试人员提交的测试任务。
[0118] 上述任务调度模块20,主要用于测试子任务以及所需要的测试资源的调度,也就是说,任务调度模块的作用从测试任务队列中获取测试子任务,然后根据测试资源的满足情况来管理测试子任务的执行。其实现流程如图7所示,执行步骤如下:
[0119] 步骤S21:监听到触发消息时启动测试任务调度流程。
[0120] 监听测试任务调度流程的触发消息,测试任务调度流程的触发消息,一般在任务接收模块接收到新的测试任务时或任务执行模块执行完一个测试子任务释放测试资源时,会向任务调度模块发送测试任务调度流程的触发消息,也就是说,当任务接收模块接收到的测试任务时或当任务执行模块通知有测试子任务测试完成时,按照优先级顺序依次调度测试队列中测试子任务。
[0121] 步骤S22:测试任务队列中是否有待测试状态的测试子任务。
[0122] 一般若是测试任务提交触发调度模块执行调度,则测试任务队列中一般有待测试的测试子任务,若是测试资源释放触发调度模块执行调度,则测试队列中可能没有待测试的测试子任务。
[0123] 若是,执行步骤S23;若否,执行步骤S25。
[0124] 步骤S23:对待测试状态的测试子任务进行调度。
[0125] 对待测试的测试子任务进行调度的具体实现过程在下面进行详细论述。
[0126] 步骤S24:测试任务队列中待测试状态的测试子任务是否调度完。
[0127] 若是,执行步骤S25,否则返回继续执行步骤S23。
[0128] 步骤S25:测试任务队列中是否有正在测试状态的测试子任务。
[0129] 若没有待测试的测试子任务或在处于待测试状态的测试子任务全部调度处理完之后,开始查看是否有正在测试状态的测试子任务,并调度处理正在测试状态的测试子任务。
[0130] 优选的,当所有状态待测试状态的测试子任务都调度后,任务调度模块开始从测试任务队列中按照剩余执行时间(剩余执行时间=测试预期时长-已测试时间长度)从长到短得关系调度正在测试状态的测试子任务。
[0131] 若是,执行步骤S26,否则,执行步骤S28。
[0132] 步骤S26:对正在测试状态的测试子任务进行调度。
[0133] 对正在测试的测试子任务进行调度的具体实现过程在下面进行详细论述。
[0134] 步骤S27:测试任务队列中正在测试状态的测试子任务是否调度完。
[0135] 若是,执行步骤S28,否则返回继续执行步骤S26。
[0136] 步骤S28:结束本次测试任务调度流程。
[0137] 当处于待测试状态和处于正在测试状态的测试子任务全部调度处理完之后,本次启动的测试任务调度流程结束。任务调度模块继续监听启动测试任务调度流程的触发消息。
[0138] 也就是说,每次测试任务调度流程启动后,首先按照测试任务队列中测试子任务的排列顺序,依次调度待测试的测试子任务进行处理。然后再从测试任务队列中依次调度正在测试的测试子任务进行处理。直至所有状态的测试子任务都调度处理一次后,本次测试任务调度流程结束,任务调度模块处于监听状态。
[0139] 步骤S23对待测试状态的测试子任务进行调度具体实现过程如图8所示,执行步骤如下:
[0140] 步骤S231:任务调度模块从测试队列中调度待测试状态的测试子任务,并将当前调度的测试子任务通知给资源管理模块。
[0141] 任务调度模块按照测试子任务在测试任务队列中的优先级顺序,从测试任务队列中依次调度待测试状态(包括“新状态”或“等待状态”)的测试子任务。然后调用资源管理模块到测试资源数据库中查找是否有与该测试子任务的测试拓扑所需的可用的测试资源,包括可用状态的测试仪和测试设备。
[0142] 步骤S232:资源管理模块是否查找到有至少一套可用状态的测试仪和测试设备。
[0143] 若查找到一套满足当前调度的测试子任务的测试拓扑所需的可用状态的测试仪和测试设备时,执行步骤S233,否则执行步骤S239。
[0144] 步骤S233:判断查找到的可用状态的测试仪和测试设备中是否包含可获取状态的测试仪或测试设备。
[0145] 可获取状态的测试仪和测试设备是指被一个测试子任务分解出的子测试子任务占用的测试仪和测试设备。当存在空闲的测试资源,且空闲的测试资源满足正在测试的测试子任务的测试需求时,将正在测试的测试子任务分解,分解出的子测试子任务(不限于一个子测试子任务,其数量根据空闲的测试资源可以组成几套满足该测试子任务需要的测试子系统确定)由空闲的测试仪和测试设备组成的测试子系统执行测试,将这些用于执行子测试子任务的空闲状态的测试仪和测试设备的状态变为可获取状态,而测试子任务最先占用的测试仪和测试设备(即父测试子任务占用的测试仪和测试设备)仍然为使用状态,不能被其他测试子任务使用。
[0146] 若是,执行步骤S234,若否,执行步骤S237。
[0147] 步骤S234:确定使用可获取状态的测试仪或测试设备的子测试子任务。
[0148] 步骤S235:通知任务执行模块停止执行该子测试子任务。
[0149] 步骤S236:将该子测试子任务合并到所属的测试子任务中执行。
[0150] 也就是说,如果找到一套测试资源且测试资源有“可获取状态”的测试仪和测试设备,则停止使用该测试仪或测试设备的子测试子任务的运行,将可获取状态的测试仪或测试设备释放出来。执行当前调度的测试子任务。同时,把没有测试完成的子测试子任务合并回所属的测试子任务中继续执行。
[0151] 步骤S237:更新测试任务队列中当前调度的测试子任务为正在测试状态。
[0152] 也就是说,当查找到的可用状态的测试仪和测试设备中不包含可获取状态的测试仪或测试设备是,则可以调度执行当前调度的测试子任务了。例如:如果找到一套测试资源且测试资源都为“空闲状态”,就执行调度的测试子任务,同时在测试任务队列中设置该测试子任务为“运行状态”。
[0153] 步骤S238:调度任务执行模块将可用状态的测试仪和测试设备组成子系统,测试当前调度的测试子任务。
[0154] 然后执行步骤S240。
[0155] 步骤S239:若当前调度的测试子任务为新状态的测试子任务,更新当前调度的测试子任务的状态为等待状态。
[0156] 也就是说,如果资源管理模块没有查找到可用状态的测试仪和测试设备,即没有测试资源满足当前调度的测试子任务的测试需求,则不执行调度测试该测试子任务的流程。若其为等待状态的测试子任务则直接执行步骤S240,若其为新状态的测试子任务则将其改为等待状态,然后执行步骤S240。
[0157] 步骤S240:结束对该测试子任务的调度流程。
[0158] 上述处理方式,可以优先保证每一个测试子任务都有一套测试资源执行,防止某个测试子任务的测试资源被其他测试子任务占用严重处于等待状态,使得测试子任务很好地并行执行的效果,达到充分利用测试资源,提高测试执行效率。
[0159] 步骤S26对正在测试状态的测试子任务进行调度的具体实现过程如图9所示,执行步骤如下:
[0160] 步骤S261:任务调度模块从测试队列中调度正在测试状态的测试子任务,并将当前调度的测试子任务通知给资源管理模块。
[0161] 任务调度模块按照设定的规则从测试任务队列中依次调度正在测试状态(运行状态)的测试子任务。然后调用资源管理模块到测试资源数据库中查找是否有与该测试子任务的测试拓扑所需的可用的测试资源(即空闲的测试仪和测试设备)。
[0162] 例如:可以按照正在测试的测试子任务在测试任务队列中的优先级顺序依次调度,也可以按照正在测试的测试子任务的剩余时间由高到低的顺序依次调度正在运行侧测试子任务。
[0163] 步骤S262:资源管理模块是否查找到有至少一套可用状态的测试仪和测试设备。
[0164] 若查找到至少一套满足当前调度的测试子任务的测试拓扑所需的可用状态的测试仪和测试设备时,执行步骤S263,否则执行步骤S265。
[0165] 也就是说,如果找到一套空闲的测试仪和测试设备则执行调度该正在运行的测试子任务的步骤。
[0166] 步骤S263:根据查找到的可用状态的测试仪和测试设备能够组建的测试子系统的数量对于测试子任务进行分解。
[0167] 例如:如果找到还有2套测试测试仪和测试设备可以满足该正在运行的测试子任务的测试需求,则任务调度模块就把该正在运行的测试子任务没有执行的部分按照时间平均分成3个任务执行,新分出了2个任务为子测试子任务。
[0168] 步骤S264:通知执行模块将查找到的可用状态的测试仪和测试设备组成测试子系统,将分解得到的子测试子任务加入到组建的测试子系统中执行测试。
[0169] 沿用上边的例子,调用任务执行模块将查找到的可用状态的测试仪和测试设备组成这2个测试子系统分别执行两个子测试子任务。原来测试子任务仍继续执行,只是执行的测试脚本变少。
[0170] 步骤S265:结束对当前调度的正在运行的测试子任务的调度流程。
[0171] 如果没有找到满足当前调度的测试子任务需求的测试资源,则不对该测试子任务进行分解。
[0172] 上述方式,在测试系统的资源有空闲时,能够动态地充分利用测试资源,通过将测试子任务动态分成多个“子测试子任务”并行执行,在充分利用测试资源的同时,进一步提高了测试执行效率。
[0173] 上述资源管理模块,主要用于查找是否有调度子任务需要的可用状态的测试仪和测试设备,其实现流程如图10所示,执行步骤如下:
[0174] 步骤S31:监控任务调度模块需要获取资源的通知和任务执行模块释放资源的通知。
[0175] 若是任务调度模块需要获取资源,则执行步骤S32;若是任务执行模块释放资源,则执行步骤S34。
[0176] 其中,测试资源包括测试仪和测试设备,测试资源的相关信息统一保存在测试资源数据库中,测试资源数据库中的保存的测试资源信息包括:测试仪的属性信息(如名称)、使用状态信息、与拓扑切换设备的连接关系(包括测试端口信息)、使用该测试仪的测试子任务等;以及测试设备的名称、属性信息、使用状态信息与拓扑切换设备的连接关系(包括测试端口信息)、使用该测试设备的测试子任务名称等。这些测试资源的信息,在搭建自动测试系统时由测试人员预先设置,当自动测试系统改变时,由测试人员更改。其中:
[0177] 测试端口信息是指测试仪或测试设备参与测试的端口信息。
[0178] 测试资源和拓扑切换设备的连接关系是测试仪或测试设备与拓扑切换设备相互连接的测试端口信息。
[0179] 测试资源属性信息包含测试资源类型、测试资源的名称、测试资源的访问地址等信息。
[0180] 使用状态信息包括可用状态(即可用状态的测试仪和测试设备)和不可用状态(即不可用状态的测试仪和测试设备),其中,可用状态针对不同的测试子任务的含义不同,针对待测试的测试子任务包括可获取状态和空闲状态,针对正在测试的测试子任务包括空闲状态。而不可用状态针对不同的测试任务的含义也不同,针对待测试的测试子任务包括使用状态和坏状态,针对正在测试的测试子任务包括可获取状态、使用状态,当测试设备或测试仪故障时,还可以包括坏状态。
[0181] 其中测试仪和测试设备的四种状态分别说明如下:
[0182] 空闲状态是指测试仪或测试设备默认的初始状态,该状态的测试仪或测试设备可以提供任何测试子任务使用。
[0183] 使用状态是测试资源被测试子任务使用,而在被释放前不能被其他测试子任务使用。
[0184] 可获取状态是指被一个测试子任务的子测试子任务占用的测试仪或测试设备。也就是说当一个测试子任务可能占用多套测试资源并行执行,将最先占用的一套测试资源设置为使用状态(不能被其他测试子任务使用),之后占用的测试资源设置为可获取状态(可以被待测试状态的测试子任务使用)。
[0185] 坏状态是指测试仪或测试设备被损坏不能用作测试。
[0186] 使用测试资源的测试子任务名称是指当测试资源被某个测试子任务使用时,同时把该测试子任务的名称记录下来,根据测试子任务的名称可以知道测试仪或测试设备可以供哪个测试子任务时用,其中测试子任务的名称是唯一的。
[0187] 步骤S32:查找任务调度模块需要调度的测试资源。
[0188] 即根据任务调度模块当前调度的测试子任务,到测试资源数据库查找是否有当前调度的测试子任务所需要的可用状态的测试仪和测试设备。
[0189] 如上述对任务调度模块的描述中所述的,若当前调度的是待测试的测试子任务或是正在测试的测试子任务,其查找可用状态的测试仪和测试设备的匹配条件不同。
[0190] 如果是正在测试的测试子任务则只查找测试资源数据库中是否有符合该测试子任务需求的空闲状态的测试仪和测试设备。如果是待测试的测试子任务,则查找测试资源数据库中是否有符合该测试子任务需求的可获取状态的和空闲状态的测试仪和测试设备。
[0191] 同时判断和匹配测试资源的类型(是测试仪还是测试设备)以及其端口号是否满足,直到找到可用状态的测试仪和测试设备位置,返回查找到的测试仪和测试设备等查找结果。如果查找完整个数据库都没有查找到,则返回为查找到满足测试子任务需求的测试仪和测试设备的查找结果。
[0192] 步骤S33:向任务调度模块返回查找结果。
[0193] 然后执行步骤S36
[0194] 步骤S34:释放测试完成的测试子任务所占用的测试资源。
[0195] 资源管理模块接收到任务执行模块通知释放测试子任务占用的测试资源时,将该测试子任务占用的测试资源的使用状态更改为空闲状态。
[0196] 步骤S35:触发任务执行模块启动测试任务调度流程。
[0197] 资源管理模块释放资源后触发新的测试任务调度流程,以便重新调度测试子任务,达到充分利用测试资源的目的。
[0198] 步骤S36:结束。
[0199] 上述任务执行模块,主要用于在资源管理模块查找到满足测试条件的测试资源时,将查找的可用状态的测试仪和测试设备进行连接,组成测试子系统,将任务调度模块调度的测试子任务该子系统中执行。其实现流程如图11所示,执行步骤如下:
[0200] 步骤S41:任务执行模块根据任务调度模块的调度将查找到的可用状态的测试仪和测试设备组成测试子系统。
[0201] 任务执行模块接收到一个测试子任务执行,就根据测试子任务的测试拓扑,将查找到的可用状态的测试仪和测试设备根据其与拓扑切换设备的连接端口信息连接起来,形成一个测试子系统。
[0202] 一般通过对拓扑切换设备配置,创建特殊虚拟局域网(Virtual Local Area Network,VLAN)的通信隧道,动态搭建与测试子任务的测试拓扑对应的测试子系统。
[0203] 步骤S42:任务执行模块将任务调度模块当前调度的测试子任务调度到组成的测试子系统中执行测试。
[0204] 测试子系统组成后,加载自动化运行的公共库、测试脚本,接着开始执行测试子任务的测试脚本,每执行完一个测试脚本,就及时更新测试任务队列中测试子任务的已测试时间长度。直到测试子任务的所有测试脚本执行结束后,就及时更新测试任务队列中测试子任务的状态为完成状态。
[0205] 也就是说,任务执行模块的作用是负责搭建测试子任务所需的测试子系统,完成对测试子系统的测试拓扑配置和初始化、控制测试子任务的执行、控制多个测试子任务并行执行、更新测试子任务的已测试时间长度等。
[0206] 如图5中所示,任务执行模块根据任务调度模块的调度可以组成测试子系统1、......、测试子系统n分别对测试子任务1、......、测试子任务n进行测试。
[0207] 实施例三:
[0208] 本发明实施例提供三的自动测试方法,以一个具体实例说明使用如图5所示的自动测试系统实现自动测试的过程,其中,提交测试任务并加入测试任务队列的过程该方法流程如图12所示,执行步骤如下:
[0209] 步骤S51:搭建自动测试系统。
[0210] 将拓扑切换设备、测试仪和测试设备相连接,具体将测试仪和测试设备均与拓扑切换设备连接起来。
[0211] 其中,每个测试仪、测试设备与拓扑切换相连接的端口个数可以根据各种不同类型的测试拓扑的需求进行连接,最好以需求端口个数最多的为标准,连接的测试资源尽可能多些。例如:将四台测试仪(测试仪1、2、3、4)和5台测试设备(测试设备1、2、3、4、5)连接到一个拓扑切换设备,搭建成一个自动测试系统(即统一的测试环境)[0212] 步骤S52:创建测试资源数据库,将自动测试系统中的测试资源信息录入测试资源数据库中。
[0213] 录入的测试资源信息包括:测试资源访问地址、测试资源类型(测试仪还是测试设备)、测试资源的测试端口、测试资源和拓扑切换设备连接关系。具体包括:测试仪的名称、属性信息、使用状态信息与拓扑切换设备的连接关系、测试端口信息、使用该测试设备的测试子任务名称等;以及测试设备的名称、属性信息、使用状态信息与拓扑切换设备的连接关系、测试端口信息、使用该测试设备的测试子任务名称等。
[0214] 步骤S53:向自动测试系统提交测试任务。
[0215] 具体参见上述实施例一和实施例二中提交测试任务的步骤。
[0216] 步骤S54:分解提交的测试任务。
[0217] 例如:将提交的测试任务分解为4个测试子任务:测试子任务1、测试子任务2、测试子任务3、测试子任务4。其中
[0218] 测试子任务1所需要的测试资源包括1台测试仪和1台测试设备、测试时间为1小时、优先级最高。
[0219] 测试子任务2所需要的测试资源包括1台测试仪和1台测试设备、测试时间为2小时、优先级第2。
[0220] 测试子任务3所需要的测试资源包括1台测试仪和2台测试设备,测试时间为6小时、优先级第3。
[0221] 测试子任务4所需要的测试资源需要1台测试仪和3台测试设备,测试时间为1小时、优先级第4。
[0222] 步骤S55:调度测试子任务。
[0223] 根据上边是实施例一和二的描述,由任务调度模块调度测试子任务。
[0224] 沿用上边的例子,首先调度测试子任务1;然后依次调度测试子任务2、测试子任务3、测试子任务4
[0225] 步骤S56:查找当前调度的测试子任务所需要的测试资源。
[0226] 根据上边是实施例一和二的描述,由资源管理模块查找是否存在符合当前调度的测试子任务的测试拓扑的测试仪和测试设备。
[0227] 沿用上边的例子,例如:
[0228] 针对测试子任务1,假如测试仪1和测试设备1满足测试子任务1的测试拓扑,且处于空闲状态,即查找到了可用测试仪和测试设备。
[0229] 针对测试子任务2,假如测试仪2和测试设备2满足测试子任务2的测试拓扑,且处于空闲状态,即查找到了可用测试仪和测试设备。
[0230] 针对测试子任务3,假如测试仪3和测试设备3、4满足测试子任务3的测试拓扑,且处于空闲状态,即查找到了可用测试仪和测试设备。
[0231] 针对测试子任务4,没有查找到符合测试子任务4的测试需求的可用测试仪和测试设备,则测试子任务4的状态更改为等待状态。
[0232] 步骤S57:对当前调度的测试子任务进行测试。
[0233] 由任务执行模块将查找到的测试仪和测试设备组成测试子系统,对当前调度的测试子任务执行测试。
[0234] 沿用上边的例子,例如:
[0235] 针对测试子任务1,将测试仪1和测试设备1通过拓扑切换设备组成测试子系统1,对测试子任务1进行测试;并将测试仪1和测试设备1状态改为使用状态。
[0236] 针对测试子任务2,将测试仪2和测试设备2通过拓扑切换设备组成测试子系统2,对测试子任务2进行测试;并将测试仪2和测试设备2状态改为使用状态。
[0237] 针对测试子任务3,将测试仪3和测试设备3、4通过拓扑切换设备组成测试子系统3,对测试子任务3进行测试;并将测试仪3和测试设备3、4状态改为使用状态。
[0238] 步骤S58:测试子任务测试完成释放测试资源,触发测试任务调度流程。
[0239] 测试子任务完成后任务执行模块通知资源管理模块释放所占用的测试仪和测试设备。
[0240] 仍沿用上边的例子,例如:
[0241] 等待一个小时后测试子任务1执行结束,测试仪1和测试设备1被释放。
[0242] 又等待一个小时后测试子任务2(即等待两个小时后)执行结束,测试仪2和测试设备2被释放。
[0243] 测试子任务2测试完成后,测试任务4开始测试,再等待一个小时后测试子任务4(即等待三个小时后)执行结束,测试仪1和测试设备1、2、5被释放。
[0244] 步骤S59:对测试任务队列中的测试子任务进行调度。
[0245] 沿用上边的例子,例如:
[0246] 当测试子任务1测试完成时,先调度测试任务队列处于待测试状态的测试子任务,此时处于待测试状态的只有测试子任务4,则由于释放了测试仪1和测试设备1,空闲的测试资源只有测试仪1、4,测试设备1、5。不能满足测试测试子任务4的测试需求。则测试子任务4继续等待,同时开始调度正在运行的测试子任务2和3。
[0247] 由于测试子任务3的剩余执行时间比较长,因此先调度测试子任务3,例如测试仪1和测试设备1、5满足测试需求。在调度了测试子任务3之后调度测试任务2,剩余的测试资源不能满足其测试需求了。
[0248] 又例如:
[0249] 当测试子任务2测试完成时,先调度测试任务队列处于待测试状态的测试子任务,此时处于待测试状态的只有测试子任务4,则由于又释放了测试仪2和测试设备2,可用的测试资源有测试仪1、2、4,测试设备1、2、5,能满足测试测试子任务4的测试需求。例如测试仪1和测试设备1、2、5满足测试需求。
[0250] 在调度了测试子任务4之后调度测试任务3,剩余的测试资源不能满足其测试需求了。
[0251] 再例如:
[0252] 当测试子任务4测试完成时,测试任务队列没有处于待测试状态的测试子任务,则开始调度正在运行的测试子任3。此时空闲的测试资源只有测试仪1、2、4,测试设备1、2、5,能够测试子任务3的测试需求。例如测试仪1和测试设备1、2满足测试需求。
[0253] 步骤S60:对当前调度的测试子任务进行分解后并行测试。
[0254] 若当前调度的是待测试状态的测试子任务,则直接组成测试子系统进行测试,将占用的测试资源该为使用状态。若当前调度的是正在测试状态的测试子任务,则组成测试子系统进行测试,将占用的测试资源该为可获取状态。
[0255] 沿用上边的例子,例如:
[0256] 在测试子任务1测试完成后,将测试测试仪1和测试设备1、5组成测试子系统4,将测试子任务3拆分出一个子测试子任务,由测试子系统4执行测试。从而实现了对测试子任务3的并行测试。
[0257] 当测试子任务2测试完成时,需要测试仪1和测试设备1、2、5组成测试子系统5,由测试子系统5对测试子任务4的进行测试。由于测试仪1和测试设备1、5属于可获取的测试资源,因此,需要先停止测试子任务3的子测试子任务的并行测试,释放测试资源并将测试子任务3的子测试子任务合并回测试子任务3中。
[0258] 再例如:
[0259] 当测试子任务4测试完成时将测试仪1和测试设备1、2组成测试子系统6,将测试子任务3拆分出一个子测试子任务,由测试子系统6执行测试。从而实现了对测试子任务3的并行测试。
[0260] 上述处理过程仅可能的充分利用你够了自动测试系统中的测试资源,尽量保证每个测试子任务都有一套测试资源可以被使用,缩短了测试任务的总体测试时间。
[0261] 步骤S61:完成对提交的测试任务的测试。
[0262] 沿用上边的例子,当测试热舞3测试完成时,完成对提交的测试任务1的测试。
[0263] 上述仅仅是以提交一个测试任务为例进行说明,实际应用中,可以在测试过程中随时提交测试任务进行测试。
[0264] 本发明实施例提供的上述自动测试系统、方法及拓扑交换设备,通过拓扑切换设备连接测试仪和测试设备,实现根据不同测试子任务的测试拓扑需求动态组成不同的测试子系统,对各个测试子任务进行测试,这样只要测试仪和测试设备未被占用,就可以被待测试的测试子任务使用,从而能够充分利用测试系统中的测试资源,包括各个测试仪和测试设备。提高了测试资源利用率,实现了测试资源的共享使用。由于不同的子系统可以动态组成,减少了测试资源空闲的可能性。
[0265] 该方法可以不受测试拓扑类型的限制,只需通过拓扑切换设备即可动态利用和共享测试仪和测试设备形成各种测试拓扑的测试子系统,为要求不同测试拓扑的测试子任务所用。可以同时组成多个测试子系统,提高测试的速度和效率,尤其是在运行多个测试子任务时,其提高测试速度和执行效率的作用更加显著。
[0266] 该方法只要有空闲的测试资源时就能够被各个不同测试拓扑类型的测试子任务充分利用,且在没有待测试的测试子任务时,还可以将正在测试测试子任务进行分解并行测试。从而进一步提高测试执行效率,缩短测试时间。当有待测试的测试子任务时,可已经并行测试的测试资源释放出来,尽量保证每个的测试子任务都能够尽快获取到可用的测试资源,减少等待时间。
[0267] 该方法可以综合考虑各个测试仪和测试设备的状态实现协调共享使用,结合测试子系统检测机制,检测测试拓扑的测试子系统是否可以使用,测试拓扑中的各个测试仪和测试设备是否能够相互通信,在不能满足测试需求时,可以及时切换到其他符合测试条件的测试资源执行测试,减小和尽量避免测试终止的可能性。
[0268] 上述自动测试系统不需要针对不同的测试拓扑,分别搭建多个测试系统,不需要区分测试子任务的测试拓扑,有针对性的选择固定搭建好的测试系统。而是根据测试子任务的需求动态组合。从而减少了测试仪和测试设备的投入数量,减少了自动测试的成本投入。且通过拓扑切换设备自动动态调配测试资源,减少了人工操作,节约了人力资源投入。
[0269] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。