陳 思
(南京郵電大學(xué) 自動化學(xué)院,南京 210003)
自動化部署,是指在測試前自動的進行虛擬機創(chuàng)建,還原快照,系統(tǒng)配置等一系列的操作。在軟件的自動化測試過程中,首先遇到的問題是要對測試環(huán)境進行部署,需要同時創(chuàng)建和配置大量虛擬機,但是手動復(fù)制和配置大量虛擬機是一件繁瑣重復(fù)的任務(wù)。與此同時還需要完成網(wǎng)絡(luò)設(shè)置、主機名和域的配置——這些工作很快就變成了體力活。正如可以通過自動化構(gòu)建來減少錯誤并加快軟件開發(fā)一樣,也可以通過自動化部署流程來減少錯誤和加快軟件交付。
本文采用VMware SDK (API操作)+Ant(項目管理)的模式實現(xiàn)了一個可重復(fù)創(chuàng)建、測試和配置的自動化部署方案。可實現(xiàn)分布式的多平臺部署,僅需要對配置文件進行修改,就可以同時部署多臺虛擬機,其目的在于把測試者從這種繁瑣的勞動中解脫出來,從而更有效的減輕軟件測試中的負擔(dān)。
所謂自動化部署流程,它包括編譯、數(shù)據(jù)修改集成(例如數(shù)據(jù)庫表)、向其他計算機遠程部署發(fā)行包(如 JAR 和WAR)以及管理遠程計算機中的資源。盡管如此,仍然
有很多工作可以通過自動化完成,比如創(chuàng)建虛擬機、測試、程序的靜態(tài)安裝等等。
目前,基于VMware Tools API的關(guān)鍵開源客戶端程序庫和工具可以為測試者提供大部分的功能。其他開源工具通過插件也能對VMWare的虛擬機進行控制。實現(xiàn)自動化部署的核心工具是一個構(gòu)建腳本,在本文中,我使用的是 Ant 。
Ant是一款開源Java構(gòu)建工具,它利用VMWare相關(guān)插件使開源工具和開發(fā)者生態(tài)系統(tǒng)能夠獲取VMware vCloud API。Ant 腳本將使用屬性文件(特定于目標(biāo)環(huán)境,如演示和生產(chǎn)環(huán)境),通過 Ant 的 sql 任務(wù)與 MySQL 數(shù)據(jù)庫交互,使用 Java Secure Channel (JSch) 將文件復(fù)制到遠程機器上(通過 Secure-Copy 協(xié)議(SCP))并進行環(huán)境設(shè)置和安裝程序(通過 SSH)。
因此,通過自動化實現(xiàn)這些流程,可以使測試者更迅速更順利地向用戶交付軟件。
針對現(xiàn)有的自動化測試工具,我們可以通過兩種方式來控制部署模式。如圖1所示,第一,創(chuàng)建虛擬機,進行開關(guān)機以及快照管理,可調(diào)用VMWare上的一些API來進行實現(xiàn),VMware vCenter Server 可以集中管理數(shù)百臺 VMware ESX 主機以及數(shù)千個虛擬機,可為 IT 環(huán)境提供操作自動化、資源優(yōu)化和高可用性。通過使用單一 Windows 管理客戶端來管理所有任務(wù),管理員可以把鍵盤和鼠標(biāo)控制寫入腳本來自動部署、配置、啟動、停止、刪除、重新定位和遠程訪問虛擬機。第二,實現(xiàn)在虛擬機上的系統(tǒng)配置,網(wǎng)絡(luò)部署,程序的靜態(tài)安裝則需要在控制端安裝Ant,借用Ant的封裝接口遠程調(diào)用測試機上的bat腳本來實現(xiàn)。

圖1 自動部署方案工作原理
利用VMWare提供的SDK,可對Vmware的exsi中的虛擬機進行如下操作,具體來說需要的操作有以下幾個:
1) 連接exsi server; 2) 啟動虛擬機 ;3) 執(zhí)行快照; 4)還原快照;5) 獲取快照 ;6) 刪除快照 。
其中vSphere提供了兩套對VMWare的ESXi Server進行操作的SDK,一套是針對power shell腳本的,一套是針對.NET的。
2.1.1 針對powershell的腳本
以下是PowerCLI Cmdlets的一段power shell腳本:

這段腳本執(zhí)行的功能是將vmlist中的機器還原到”Clean”的snapshot,并重啟機器。在power shell腳本會用到的操作exsi的命令有以下5個:


2.1.2 針對.net的腳本
對于針對.NET的SDK,我們把需要的操作封裝到snapshotmgr.exe文件中,使用時只要提供不同的運行參數(shù)即可。 以下是一段.net的腳本:

Ant是一個Apache基金會下的跨平臺的構(gòu)件工具,它可以實現(xiàn)項目的自動構(gòu)建和部署等功能。如圖2所示,每一項部署的實現(xiàn)都寫在bat腳本中,在自動部署終端安裝Ant,通過XML文件來控制流程,從而實現(xiàn)了從自動部署終端到客戶端的VM的遠程控制以及對網(wǎng)絡(luò)文件服務(wù)器的映射。
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可以看出,當(dāng)運行Ant的命令時,需要進入到Ant的bin目錄,如何才能讓系統(tǒng)自動找到Ant呢?這時需要在系統(tǒng)環(huán)境變量path中添加Ant的bin目錄。設(shè)置完成后,就可以在任何目錄(例如C:"Documents and Settings"AmigoXie目錄)輸入Ant的命令,來獲得命令的運行結(jié)果。
2.2.2 部署流程分析
安裝好了Ant,就要開始編寫構(gòu)件文件。
Ant的構(gòu)件文件是基于XML編寫的,可按照以下步驟:
(1)定制部署的需求
把所有的需求放狀態(tài)集S中,
S=(A,B,C1,C2,C3,D1,D2,E1,E2,E3,E4,F,G)
(2)部署流程分析
●部署流程
●依賴關(guān)系
通常情況下,可以通過繪制流程圖進行分析。
如圖4所示,B的運行依賴于A,D1的運行依賴于B等等。

圖4 流程圖
(3)編寫流程文件 Ant腳本
基于流程圖,就可以開始編寫Ant構(gòu)件文件,
如下就是一個簡單的xml文件:

這段程序的依賴關(guān)系如圖5所示。

圖5 調(diào)用關(guān)系
Deploy的運行取決于DeployHub,DeployHub的運行取決于DeployAD,DeployAD的運行取決于logFile。
2.2.3 部署實例分析
這是自動化部署的一個實例,目的是進行Exchange環(huán)境自動部署,要分別在3臺Server:AD Server,Edge Server和Mailbox Server調(diào)用相應(yīng)的腳本,來完成自動化安裝。
這是各個事件的狀態(tài)以及它們之間的依賴關(guān)系如,圖6是定義的Deploy Exchange Workflow,各個腳本的調(diào)用關(guān)系如圖7所示,首先在AD Server上面調(diào)用ImportLocalOvfApp,把虛擬機導(dǎo)入VMWare,然后調(diào)用PowerOnVM_VIX開機和CopyFileToGuest_VIX把文件拷貝到相應(yīng)的虛擬機上面,AD Server將調(diào)用adinstall.bat完成AD Server的安裝,調(diào)用netdom.bat加入域和調(diào)用feature-install-xml.bat完成相應(yīng)的exchange software的安裝。

圖6 部署實例分析

圖7 腳本的調(diào)用關(guān)系
通過本文所述的自動化虛擬機部署解決方案可以看到,虛擬機的部署和初始配置已變得非常自動化。只需在 VM 部署任務(wù)文件中寫下配置,然后 VM 部署控制端將自動部署和配置所有虛擬機。此解決方案也是非常靈活的 —— 可以在已部署的 VM 啟動后運行自己的應(yīng)用程序。例如,可以通過在 VM 部署任務(wù)中搭建AD Server,要求 VM 在系統(tǒng)啟動后運行一個應(yīng)用程序以自動完成所有的配置。
總而言之,部署是軟件開發(fā)中另一個適合自動化的方面。自動化部署可以受益于可靠且可重復(fù)的流程:提高準(zhǔn)確性、速度和控制能力,也節(jié)省大量時間,從而對于提高軟件測試的效率和實現(xiàn)自動化測試的穩(wěn)定性具有很好的意義。
[1] 李夏安,陳志泊. 基于STAF的軟件自動化測試系統(tǒng)的研究和實現(xiàn)[J].計算機應(yīng)用,1993,29(3):699.
[2] 朱芳,李曦,趙振西.一種多平臺自動化測試工具的設(shè)計和實現(xiàn)[J].計算機工程,2004,30(24):186.
[3] 嚴少清,陳革,萬年紅.軟件測試自動化管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程,2002, 28(9): 152.
[4] 商宇,基于STAF的自動化測試工具的研究與設(shè)計[J].云南民族大學(xué)學(xué)報,2009,18(3):279.
[5] Mosley,D.軟件測試自動化[M].北京:機械工業(yè)出版社,2002:10.
[6] Glenford J.Myers.軟件測試的藝術(shù)[M].2版. 王峰,陳杰 譯.北京:機械工業(yè)出版社,2006:5.
[7] 于海龍.軟件自動化測試輔助系統(tǒng)的分析與設(shè)計[D].濟南:山東大學(xué),2008.
[8] 劉曉明.軟件測試及其自動化模型的研究[D].無錫:江南大學(xué),2009.