APP下载

基于拓扑调度的自动化测试方法的研究

2011-11-26代云华余立建廖新良

铁路计算机应用 2011年12期
关键词:任务调度测试用例调度

代云华,余立建,廖新良

(1.西南交通大学 信息科学与技术学院,成都 610031; 2.电子科技大学 软件学院,成都 611731)

数据通信技术的快速发展对自动化测试技术提出了更高的要求,在保障自动化测试高可靠性的前提下,高效率的自动化测试成了近年来自动化测试发展的主要瓶颈[1]。目前一般的自动化测试系统[2]包含任务管理模块、任务调度模块、用例执行模块、设备管理模块和日志服务器模块,如图1。任务管理模块主要提供对测试任务的添加、删除、查看等管理;任务调度模块主要是按照一定的调度算法对提交的各测试任务或测试任务中的各测试用例进行排序,使测试任务或测试用例按照排好的顺序先后执行;用例执行模块主要是运行调度后测试任务中的测试用例;设备管理模块主要是提供对设备的添加、删除、查看等功能;日志服务器模块主要是将测试过程产生的日志及测试结果发送给相关的测试人员。可以看出,自动化测试效率的提高主要集中在任务调度模块。

1 基于任务调度的自动化测试

图1 自动化测试系统结构图

为了提高自动化测试的效率,大部分公司的自动化测试系统都支持并行运行的多个测试任务,每个测试任务完成一组测试用例,这种方式也称为基于任务调度的自动化测试[3],如图2。与以往手工测试或串行的自动化测试方法相比,测试效率提高了许多倍。这种并行运行多个测试任务的方式有以下特点:

图2 基于任务调度的自动化测试

(1)基于优先级的方式调度任务。将需要运行的任务按照之前自定义的任务优先级来排序,优先级相同的任务再按提交任务的时间先后来排序。优先级越高,空闲设备若满足该测试任务的要求就先执行该测试任务,若空闲设备不满足,则让低优先级的任务先运行起来,这样可以提高设备的利用率。同时一旦平台中设备满足测试任务的需求,测试任务便可运行,这样多个任务可以并行独立的运行。

(2)测试设备的最大化占用。在测试任务运行之前,需要给该测试任务分配所需的测试设备,对所需测试设备的选取采用读取该测试任务包含的所有测试拓扑中对设备的需求,包括设备类型、设备的接口类型、设备连接数等信息,统计出该测试任务对测试设备的最大需求数量,选出符合要求的设备。

(3)测试用例串行运行。测试任务中包含的所有测试用例按照预先编写的测试套件中的先后顺序依次执行,每运行一个测试用例,都需要根据该测试用例所需的测试设备从之前任务所占用的设备中选出本测试用例所需的测试设备,然后根据选出的测试设备构造拓扑环境,再执行预先编写好的本测试用例的测试脚本。

(4)测试设备的互斥访问。一台测试设备只能被一个测试任务占用,不能被多个测试任务同时占用,测试任务运行结束后能主动释放占用的测试设备,供其它测试任务继续使用。

从上述分析可以看出,采用基于任务调度的方式,以测试用例为最小的测试脚本单位,每执行一个测试用例都需要重新选择一次测试设备,重新构造一次拓扑,只有当一个测试用例执行完时,才能执行下一个测试用例,这样大大降低了自动化测试的高效性;另外在测试任务执行前,测试设备的选取是以最大化的占用方式,既节省了每个测试用例在整个平台中选择测试设备所带来的麻烦,又使得每个测试用例占用的测试设备与测试任务占有的设备相比通常要少很多,会形成该测试任务实际上占用了很多的测试设备,但大部分时间却只用到了其中的少部分,其它因测试设备不足而无法运行起来的测试任务却被阻塞了;再者,只有平台中空闲的设备满足了测试任务最大的设备需求后,测试任务才能运行,否则一直处于等待状态,这样大大降低了设备的利用率。

2 基于拓扑调度的自动化测试

2.1 拓扑调度思想的形成

在自动化测试系统中,每一个需要测试的任务(如一个协议vlan)包括许多需要测试的功能点,这些功能点即为一个测试用例,一个测试用例包含了测试该功能点需要搭建的拓扑环境及在该拓扑环境下测试该功能点的具体步骤(测试脚本)。因此,一个测试任务包含多个测试用例,每个测试用例包含一个拓扑,各测试用例的拓扑有可能是一样的,一般情况下,一个测试任务只有几个拓扑,即一个拓扑对应多个测试用例,对于拓扑相同的测试用例,需要的测试设备是相同的,因此,可以将它们归为一类,在运行时只用分配一次设备,构造一次拓扑即可。

这样,对于一个测试任务,就可以以拓扑为基本单位来划分测试用例,即基于拓扑调度的方式,如图3。这种方式有以下特点:

图3 基于拓扑调度的自动化测试

(1)各测试任务并行运行相互独立,延续了基于任务调度方式的思想,采用优先级方式调度测试任务。

(2)各测试拓扑间的运行相互独立,即各拓扑选择设备、构造拓扑、运行脚本等都是互不干扰的;测试拓扑也有优先级关系,各测试拓扑按照自定义的优先级排序,优先级相同的按照测试拓扑资源需求高低来排序,资源需求相同就任选其中的一个测试拓扑。

(3)在一个测试拓扑中,先选择本测试拓扑所需的测试设备,根据选出的测试设备构造拓扑,然后运行各测试用例的脚本。一个测试拓扑包含多个测试用例,采用串行的方式运行,无需重新选择测试设备和构造拓扑,直接沿用上个测试用例搭建的拓扑环境。

(4) 测试任务的状态由所包括的各拓扑的状态决定,只有当测试任务中的所有拓扑所包含的测试用例都执行完后,测试任务才算执行完。

2.2 拓扑调度方式的分析

与基于任务调度方式相比,基于拓扑调度方式具有以下优点:

(1)在测试设备满足的情况下,一个测试任务中的多个测试用例并行运行,大大减少了该测试任务的总体测试时间。

(2)从为每个测试用例分配设备、构造拓扑到为不同的拓扑分配设备、构造拓扑,节约了系统为测试脚本准备测试拓扑环境的时间。

(3)只要平台中空闲的测试设备满足测试任务中的某个测试拓扑的设备需求,测试任务便可运行起来,而基于任务调度方式只有当平台中空闲的测试设备满足测试任务的最大设备需求时,测试任务才会运行,否则一直处于等待状态。相比之下,基于拓扑调度的方式大大提高了设备的利用率。

(4)一般情况下,自动化测试非常容易受环境的影响,含多个测试用例的测试任务经常不能一次性全完成,采用原来串行运行测试用例的方式,由于测试时间过长,受环境影响的概率相应增加,采用基于拓扑调度的方式,由于测试时间相对更短,也减少了受环境影响的概率。

2.3 拓扑调度方式在自动化测试系统中的设计

根据以上对拓扑调度方式的分析,本文在图1的基础上将任务调度模块进行细化,分成了任务调度模块、拓扑调度模块和任务状态更新模块,如图4。任务调度模块的主要功能是在测试任务队列中根据测试任务的优先级选出一个测试任务;拓扑调度模块的主要功能是为任务调度模块选出的测试任务所包含的每个测试拓扑,根据优先级分配测试设备;任务状态更新模块主要功能是根据测试任务中各测试拓扑不断改变的运行状态,更新测试任务的状态。

3 测试结果及分析

图4 任务调度模块的设计

本文的自动化测试系统采用了目前非常成熟、流行的TCL[4]开发语言在linux系统上开发,使用SlickEdit开发工具,所有测试参数使用XML[5]语言,使系统具有协议描述能力强、灵活性好、移植性好的特点,充分保证了通用性和持续性。

利用拓扑调度方式实现的自动化测试系统在自动化测试平台上测试各模块,在平台测试设备充分的情况下,测试结果如表2。与基于任务调度方式的测试结果相比,节省了测试时间,提高了自动化测试的效率。

表2 各模块测试时间统计

4 结束语

本文给出了一种基于拓扑调度方式设计自动化测试系统的方法,该方法应用到实际的自动化测试系统中,大大减少了测试任务的总体运行时间,使自动化测试平台中的测试设备得到了充分的利用,降低了测试任务受环境的影响,提高了自动化测试效率和可靠性。

[1]郭伟斌,郭锡坤. 自动化测试的研究和探讨[J].电脑开发与应用,2008,21(12):10-12.

[2]柳 胜. 软件自动化测试框架设计与实践[M]. 北京:人民邮电出版社,2009.

[3]侯亚荣,张书杰,李 健,等. 一种实时系统任务调度方法[P]. 中国专利:200710176704. 2008-03-19.

[4]WelchBrent B. The complete Tcl/Tk training course[M]. 北京:电子工业出版社,2001.

[5]DalviDinar,GrayJoe,英 宇. NET XML高级编程[M].北京:清华大学出版社,2002.

猜你喜欢

任务调度测试用例调度
基于SmartUnit的安全通信系统单元测试用例自动生成
基于PEPA的云计算任务调度性能分析
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
基于需求模型的航天软件测试用例生成方法
基于小生境遗传算法的相控阵雷达任务调度
云计算环境中任务调度策略