基于多平台的自动化部署方案的研究与实现

2011-03-16 06:17
电子测试 2011年5期
关键词:快照软件测试脚本

陈 思

(南京邮电大学 自动化学院,南京 210003)

0 引言

自动化部署,是指在测试前自动的进行虚拟机创建,还原快照,系统配置等一系列的操作。在软件的自动化测试过程中,首先遇到的问题是要对测试环境进行部署,需要同时创建和配置大量虚拟机,但是手动复制和配置大量虚拟机是一件繁琐重复的任务。与此同时还需要完成网络设置、主机名和域的配置——这些工作很快就变成了体力活。正如可以通过自动化构建来减少错误并加快软件开发一样,也可以通过自动化部署流程来减少错误和加快软件交付。

本文采用VMware SDK (API操作)+Ant(项目管理)的模式实现了一个可重复创建、测试和配置的自动化部署方案。可实现分布式的多平台部署,仅需要对配置文件进行修改,就可以同时部署多台虚拟机,其目的在于把测试者从这种繁琐的劳动中解脱出来,从而更有效的减轻软件测试中的负担。

1 方案的工作原理

所谓自动化部署流程,它包括编译、数据修改集成(例如数据库表)、向其他计算机远程部署发行包(如 JAR 和WAR)以及管理远程计算机中的资源。尽管如此,仍然

有很多工作可以通过自动化完成,比如创建虚拟机、测试、程序的静态安装等等。

目前,基于VMware Tools API的关键开源客户端程序库和工具可以为测试者提供大部分的功能。其他开源工具通过插件也能对VMWare的虚拟机进行控制。实现自动化部署的核心工具是一个构建脚本,在本文中,我使用的是 Ant 。

Ant是一款开源Java构建工具,它利用VMWare相关插件使开源工具和开发者生态系统能够获取VMware vCloud API。Ant 脚本将使用属性文件(特定于目标环境,如演示和生产环境),通过 Ant 的 sql 任务与 MySQL 数据库交互,使用 Java Secure Channel (JSch) 将文件复制到远程机器上(通过 Secure-Copy 协议(SCP))并进行环境设置和安装程序(通过 SSH)。

因此,通过自动化实现这些流程,可以使测试者更迅速更顺利地向用户交付软件。

针对现有的自动化测试工具,我们可以通过两种方式来控制部署模式。如图1所示,第一,创建虚拟机,进行开关机以及快照管理,可调用VMWare上的一些API来进行实现,VMware vCenter Server 可以集中管理数百台 VMware ESX 主机以及数千个虚拟机,可为 IT 环境提供操作自动化、资源优化和高可用性。通过使用单一 Windows 管理客户端来管理所有任务,管理员可以把键盘和鼠标控制写入脚本来自动部署、配置、启动、停止、删除、重新定位和远程访问虚拟机。第二,实现在虚拟机上的系统配置,网络部署,程序的静态安装则需要在控制端安装Ant,借用Ant的封装接口远程调用测试机上的bat脚本来实现。

图1 自动部署方案工作原理

2 方案的实现

2.1 利用 Vmware API实现自动化部署

利用VMWare提供的SDK,可对Vmware的exsi中的虚拟机进行如下操作,具体来说需要的操作有以下几个:

1) 连接exsi server; 2) 启动虚拟机 ;3) 执行快照; 4)还原快照;5) 获取快照 ;6) 删除快照 。

其中vSphere提供了两套对VMWare的ESXi Server进行操作的SDK,一套是针对power shell脚本的,一套是针对.NET的。

2.1.1 针对powershell的脚本

以下是PowerCLI Cmdlets的一段power shell脚本:

这段脚本执行的功能是将vmlist中的机器还原到”Clean”的snapshot,并重启机器。在power shell脚本会用到的操作exsi的命令有以下5个:

2.1.2 针对.net的脚本

对于针对.NET的SDK,我们把需要的操作封装到snapshotmgr.exe文件中,使用时只要提供不同的运行参数即可。 以下是一段.net的脚本:

2.2 利用 Ant实现自动化部署

Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。如图2所示,每一项部署的实现都写在bat脚本中,在自动部署终端安装Ant,通过XML文件来控制流程,从而实现了从自动部署终端到客户端的VM的远程控制以及对网络文件服务器的映射。

2.2.1 Ant的安装与配置

首先要在控制端安装Ant,下载地址:http://ant. apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),即可使用。

图2 Ant自动部署框架

安装与配置完毕后,可以测试一下Ant是否可用,首先进入Ant的bin目录,运行命令ant –version,若安装和配置成功,则会显示Ant版本信息,如图3所示。

图3 Ant安装与配置

由图3可以看出,当运行Ant的命令时,需要进入到Ant的bin目录,如何才能让系统自动找到Ant呢?这时需要在系统环境变量path中添加Ant的bin目录。设置完成后,就可以在任何目录(例如C:"Documents and Settings"AmigoXie目录)输入Ant的命令,来获得命令的运行结果。

2.2.2 部署流程分析

安装好了Ant,就要开始编写构件文件。

Ant的构件文件是基于XML编写的,可按照以下步骤:

(1)定制部署的需求

把所有的需求放状态集S中,

S=(A,B,C1,C2,C3,D1,D2,E1,E2,E3,E4,F,G)

(2)部署流程分析

●部署流程

●依赖关系

通常情况下,可以通过绘制流程图进行分析。

如图4所示,B的运行依赖于A,D1的运行依赖于B等等。

图4 流程图

(3)编写流程文件 Ant脚本

基于流程图,就可以开始编写Ant构件文件,

如下就是一个简单的xml文件:

这段程序的依赖关系如图5所示。

图5 调用关系

Deploy的运行取决于DeployHub,DeployHub的运行取决于DeployAD,DeployAD的运行取决于logFile。

2.2.3 部署实例分析

这是自动化部署的一个实例,目的是进行Exchange环境自动部署,要分别在3台Server:AD Server,Edge Server和Mailbox Server调用相应的脚本,来完成自动化安装。

这是各个事件的状态以及它们之间的依赖关系如,图6是定义的Deploy Exchange Workflow,各个脚本的调用关系如图7所示,首先在AD Server上面调用ImportLocalOvfApp,把虚拟机导入VMWare,然后调用PowerOnVM_VIX开机和CopyFileToGuest_VIX把文件拷贝到相应的虚拟机上面,AD Server将调用adinstall.bat完成AD Server的安装,调用netdom.bat加入域和调用feature-install-xml.bat完成相应的exchange software的安装。

图6 部署实例分析

图7 脚本的调用关系

3 结束语

通过本文所述的自动化虚拟机部署解决方案可以看到,虚拟机的部署和初始配置已变得非常自动化。只需在 VM 部署任务文件中写下配置,然后 VM 部署控制端将自动部署和配置所有虚拟机。此解决方案也是非常灵活的 —— 可以在已部署的 VM 启动后运行自己的应用程序。例如,可以通过在 VM 部署任务中搭建AD Server,要求 VM 在系统启动后运行一个应用程序以自动完成所有的配置。

总而言之,部署是软件开发中另一个适合自动化的方面。自动化部署可以受益于可靠且可重复的流程:提高准确性、速度和控制能力,也节省大量时间,从而对于提高软件测试的效率和实现自动化测试的稳定性具有很好的意义。

[1] 李夏安,陈志泊. 基于STAF的软件自动化测试系统的研究和实现[J].计算机应用,1993,29(3):699.

[2] 朱芳,李曦,赵振西.一种多平台自动化测试工具的设计和实现[J].计算机工程,2004,30(24):186.

[3] 严少清,陈革,万年红.软件测试自动化管理系统的设计与实现[J].计算机工程,2002, 28(9): 152.

[4] 商宇,基于STAF的自动化测试工具的研究与设计[J].云南民族大学学报,2009,18(3):279.

[5] Mosley,D.软件测试自动化[M].北京:机械工业出版社,2002:10.

[6] Glenford J.Myers.软件测试的艺术[M].2版. 王峰,陈杰 译.北京:机械工业出版社,2006:5.

[7] 于海龙.软件自动化测试辅助系统的分析与设计[D].济南:山东大学,2008.

[8] 刘晓明.软件测试及其自动化模型的研究[D].无锡:江南大学,2009.

猜你喜欢
快照软件测试脚本
酒驾
EMC存储快照功能分析
安奇奇与小cool 龙(第二回)
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
EXCEL和VBA实现软件测试记录管理
快乐假期
一种基于Linux 标准分区的快照方法
小编的新年愿望
创建磁盘组备份快照