论文部分内容阅读
随着软件行业的快速发展,软件的开发周期和开发成本越来越被重视,软件测试作为软件开发过程中的一个重要环节,不仅仅为软件产品提供质量把关,而且还能降低人力重复投入的风险,从而缩短开发周期、减少开发成本。云计算的出现与发展,为软件测试技术提供了新的方向,将测试任务迁移到云平台,在云环境下执行测试任务,不仅可以节省配置环境的成本,而且还极大的加快了测试任务的执行速度,减少测试时间的同时还减少了测试人员的冗余工作。在云平台上执行测试任务,高效的任务调度算法是必不可少的。优秀的调度算法可以提高整个系统的资源利用率,缩短任务的执行时间。目前云环境中的调度算法一般都存在着一些局限性,不能完全适应测试任务,因为测试任务不同于一般的任务,测试任务不仅本身带有不同的优先级别,而且测试任务之间还存在着依赖关系。尤其是在执行回归测试任务时,调度算法变得更为重要。因此本文针对云平台下的回归测试任务调度问题,对测试任务的调度策略进行了深入的研究。针对优先级不同的特性,提出了一种基于权重的调度算法Weight Scheduler,算法不仅考虑了测试任务的初始优先级,还可以根据集群的具体资源使用情况,调度测试任务;为了避免出现饥饿现象,对于等待时间较长的测试任务给予适当增长权重,使调度尽可能公平。对比的实验结果表明,Weight Scheduler调度算法比Hadoop自带调度算法Capacity Scheduler效率更高。针对任务间依赖关系,策略中首先对测试任务进行预处理,根据用户上传的测试任务抽象出DAG图。从DAG图中划分出路径,每条路径中的节点间有依赖,不同路径之间任务可并行。然后根据DAG图中路径,整合测试用例和修改测试脚本。考虑了脚本维护成本问题,实现了测试脚本的参数化。最后,将测试脚本和测试用例上传到Hadoop的HDFS文件系统。结合MapReduce编程模型,对修改后的测试脚本设计map函数和reduce函数,其中加入启动自动化测试工具语句,自动执行测试,回收测试结果。MapReduce的执行需要Weight Scheduler来控制,算法根据Hadoop云平台状态对测试任务进行调度。结合自动化测试工具Selenium在Hadoop上搭建云测试任务管理平台,以校内网站为被测目标进行了测试整个平台的实验。实验结果证明了本文研究算法的高效性以及调度策略的有效性,相比于单机执行测试任务,在云平台下节省了测试时间,加快了测试速度。