開源Web自動化測試指南_第1頁
開源Web自動化測試指南_第2頁
開源Web自動化測試指南_第3頁
開源Web自動化測試指南_第4頁
開源Web自動化測試指南_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、文件修訂歷史修訂時間修訂說明作者審核2011-8-5創(chuàng)建目錄岑海菊溫素劍2011-8-17章節(jié)1、2、4、岑海菊溫素劍章節(jié)3李穎、陳建紅、岑海菊溫素劍章節(jié)5李穎溫素劍模板修訂歷史版本生效時間變更概要作者審核批準1.0.02011-8-5創(chuàng)建自動化測試方法文檔岑海菊目錄 TOC o 1-3 h z HYPERLINK l _Toc301513134 1引言與概述 PAGEREF _Toc301513134 h 4 HYPERLINK l _Toc301513135 1.1背景 PAGEREF _Toc301513135 h 4 HYPERLINK l _Toc301513136 1.2開源Web

2、自動化測試的優(yōu)勢 PAGEREF _Toc301513136 h 4 HYPERLINK l _Toc301513137 1.2.1Selenium簡介 PAGEREF _Toc301513137 h 4 HYPERLINK l _Toc301513138 1.2.2Selenium的優(yōu)勢 PAGEREF _Toc301513138 h 4 HYPERLINK l _Toc301513139 2開源Web自動化測試架構 PAGEREF _Toc301513139 h 6 HYPERLINK l _Toc301513140 2.1基于Selenium 2.0的自動化測試框架 PAGEREF _T

3、oc301513140 h 6 HYPERLINK l _Toc301513141 2.2新Web自動化測試代碼架構 PAGEREF _Toc301513141 h 7 HYPERLINK l _Toc301513142 3Web自動化測試編寫 PAGEREF _Toc301513142 h 8 HYPERLINK l _Toc301513143 3.1集成開發(fā)環(huán)境搭建 PAGEREF _Toc301513143 h 8 HYPERLINK l _Toc301513144 3.1.1選擇底層實現方法 PAGEREF _Toc301513144 h 8 HYPERLINK l _Toc30151

4、3145 3.1.2eclipse配置 PAGEREF _Toc301513145 h 9 HYPERLINK l _Toc301513146 3.1.3項目環(huán)境配置 PAGEREF _Toc301513146 h 10 HYPERLINK l _Toc301513147 3.2測試案例編寫 PAGEREF _Toc301513147 h 13 HYPERLINK l _Toc301513148 3.2.1Selenese語法 PAGEREF _Toc301513148 h 14 HYPERLINK l _Toc301513149 3.2.2XPath介紹 PAGEREF _Toc301513

5、149 h 14 HYPERLINK l _Toc301513150 3.2.3測試案例框架 PAGEREF _Toc301513150 h 16 HYPERLINK l _Toc301513151 4管理測試案例 PAGEREF _Toc301513151 h 19 HYPERLINK l _Toc301513152 4.1測試工程目錄結構 PAGEREF _Toc301513152 h 19 HYPERLINK l _Toc301513153 4.2使用Ant運行測試案例 PAGEREF _Toc301513153 h 20 HYPERLINK l _Toc301513154 4.2.1A

6、nt介紹 PAGEREF _Toc301513154 h 20 HYPERLINK l _Toc301513155 4.2.2Ant基本語法 PAGEREF _Toc301513155 h 20 HYPERLINK l _Toc301513156 4.2.3輸出測試報告樣式 PAGEREF _Toc301513156 h 21 HYPERLINK l _Toc301513157 4.2.4Ant Build PAGEREF _Toc301513157 h 21 HYPERLINK l _Toc301513158 4.3使用Jenkins管理自動化測試任務 PAGEREF _Toc3015131

7、58 h 22 HYPERLINK l _Toc301513159 4.3.1Jenkins介紹 PAGEREF _Toc301513159 h 22 HYPERLINK l _Toc301513160 4.3.2Jenkins任務創(chuàng)建 PAGEREF _Toc301513160 h 22 HYPERLINK l _Toc301513161 4.3.3Jenkins任務執(zhí)行 PAGEREF _Toc301513161 h 24 HYPERLINK l _Toc301513162 4.3.4Jenkins執(zhí)行結果查看 PAGEREF _Toc301513162 h 24 HYPERLINK l

8、_Toc301513163 5數據管理 PAGEREF _Toc301513163 h 25 HYPERLINK l _Toc301513164 5.1.1自動化測試流程圖 PAGEREF _Toc301513164 h 25 HYPERLINK l _Toc301513165 5.1.2JDBC連接數據庫代碼范例 PAGEREF _Toc301513165 h 26 HYPERLINK l _Toc301513166 5.1.3數據回滾腳本 PAGEREF _Toc301513166 h 28 HYPERLINK l _Toc301513167 5.1.4數據初始化腳本 PAGEREF _T

9、oc301513167 h 28 HYPERLINK l _Toc301513168 5.1.5配置文件管理 PAGEREF _Toc301513168 h 29 HYPERLINK l _Toc301513169 6疑難手冊 PAGEREF _Toc301513169 h 31 HYPERLINK l _Toc301513170 附錄ASelenium 2.0常用命令 PAGEREF _Toc301513170 h 32 HYPERLINK l _Toc301513171 附錄B案例文件、配置文件demo PAGEREF _Toc301513171 h 32 HYPERLINK l _Toc

10、301513172 附錄CCC使用及培訓資料 PAGEREF _Toc301513172 h 32 HYPERLINK l _引言與概述 引言與概述背景目前QTP是我司使用最廣泛的自動化測試工具,在實際使用中發(fā)現,QTP存在以下不足之處:QTP基于測試對象庫來識別測試對象,其內部機制是不透明的,在實際工作中,對測試對象庫的維護工作量很大,耗費了測試人員大量的精力,效果卻并不好;QTP的設計架構決定了當前測試腳本可復用性差,很難積累可重復使用的函數、組件、包等測試資產;使用QTP的描述性編程來創(chuàng)建測試腳本,嚴重依賴于測試人員的個人經驗和技巧,難以大規(guī)模推廣;自動化測試數據經常失效,原因在于沒有統(tǒng)

11、一的數據回滾措施。 基于商業(yè)自動化測試工具QTP的錄制/回放模式,無法構建健壯的自動化測試腳本,所以我們迫切地需要新的工具來替換QTP。當前有多種開源自動化測試工具可供選擇,Selenium 2.0 便是目前使用最廣泛的開源測試工具之一。開源Web自動化測試的優(yōu)勢Selenium簡介Selenium是一系列基于Web的自動化測試工具。Selenium提供了一系列測試函數用于支持Web自動化測試,這些函數非常靈活,他們能夠通過多種方式定位UI元素,并將預期結果與系統(tǒng)實際表現相比較,測試人員通過這些測試函數來模擬用戶操作,從而實現Web自動化測試。Selenium 2.0集成了WebDriver

12、API,解決了Selenium 1.0的局限,二者相互彌補,提供了更多可選的編程接口。Selenium的優(yōu)勢QTP的測試對象庫,對與測試人員來說是不透明的。圖1-1為構建QTP自動化測試腳本的流程,在使用QTP錄制測試腳本的時候,測試人員根本不清楚測試對象庫中的測試對象是否有效,能否滿足需求,這給使用者帶來很大的困擾。圖 STYLEREF 1 s 1 SEQ 圖 * ARABIC s 1 1構建QTP自動化測試腳本的流程Selenium 2.0具有很強的靈活性和很好的擴展性,測試人員從頁面數據中提取對象,引入測試邏輯構建測試腳本。通過這樣的方式,測試人員能夠確保測試對象的有效性,對測試對象的維

13、護也更容易。圖 STYLEREF 1 s 1 SEQ 圖 * ARABIC s 1 2構建Selenium 2.0自動化測試腳本的流程對比QTP和Selenium2.0構建自動化測試腳本的流程圖,我們可以發(fā)現,Selenium不再基于錄制/回放模式來創(chuàng)建自動化測試腳本,彌補了QTP的不足:開源測試工具識別測試對象的機制是透明的,可以減少測試人員的維護工作量;采用開源測試工具,可以將需要重用的測試代碼打包到jar中。后續(xù)計劃引入配置管理,保證可重用jar包的質量;采用java語言來編寫測試腳本,在測試對象識別得到保證的前提下,這并不是一件充滿技巧性的工作; 針對自動化測試數據經常失效的問題,新渠

14、道目前的做法是將恢復測試數據的SQL放在定時JOB中,在自動化測試運行前恢復相關測試數據。除此之外,Selenium 2.0在很多方面都優(yōu)于QTP,如表1-1所示。表 STYLEREF 1 s 1 SEQ 表 * ARABIC s 1 1 QTP與Selenium 2.0的對比對比項QTP(商業(yè))Selenium 2.0(開源)SeleniumWebDriver購置成本昂貴免費免費測試對象識別機制不透明透明透明編碼語言VBSJavaPythonRuby等多種語言Java代碼可重用性低高高腳本維護工作量高低低是否支持錄制/回放模式是是(功能較弱)否執(zhí)行效率低一般高測試腳本是否支持配置管理不支持支

15、持支持是否支持訂制否是是開源Web自動化測試架構基于Selenium 2.0的自動化測試框架圖2-1是基于Selenium 2.0的自動化測試的整體框架(虛線代表尚未實現的功能):步驟1:在開發(fā)人員提交代碼后,持續(xù)集成引擎(Jenkins)會對最新的代碼進行編譯和部署;步驟2:Jenkins從配置管理工具(SVN/CC)獲取測試腳本;步驟3:Jenkins調用Ant編譯測試腳本;步驟4:Jenkins調用Ant去運行Junit測試案例;步驟5:Junit通過Selenium 2.0操作瀏覽器;步驟6:Jenkins輸出測試報告,并以郵件的形式向測試人員發(fā)送自動化測試結果。圖 STYLEREF

16、1 s 2 SEQ 圖 * ARABIC s 1 1新Web自動化測試整體框架新Web自動化測試代碼架構基于Selenium 2.0的Web自動化測試,每個測試案例就是一個Junit Test Case。Junit測試案例,由測試數據和測試邏輯兩部分組成。測試邏輯最底層的實現是Selenium2.0庫,通過抽象和擴展出webtest類。測試人員通過調用webtest類的方法,來構建測試邏輯。關于測試數據,請參考第5章數據管理。圖 STYLEREF 1 s 2 SEQ 圖 * ARABIC s 1 2 新Web自動化測試代碼框架Web自動化測試編寫 集成開發(fā)環(huán)境搭建選擇底層實現方法前面提到,Se

17、lenium 2.0集成了WebDriver的API,因此我們首先需要選擇底層的實現方法是Selenium還是WebDriver。二者對比如表3-1所示,Selenium提供了豐富的方法,支持多種瀏覽器,可以滿足各種各樣的測試邏輯需求,所以,一般情況下優(yōu)先選擇Selenium。但有些系統(tǒng)比較特殊,某些功能Selenium無法支持,此時可考慮使用WebDriver。WebDriver提供的方法雖不及Selenium多(如截屏等功能),但是也基本能滿足系統(tǒng)的要求,最主要的是它的執(zhí)行速度非常的快,這點是Selenium所望塵莫及的。總而言之,還是要根據系統(tǒng)的實際情況,選擇合適的實現方法。表 STYL

18、EREF 1 s 3 SEQ 表 * ARABIC s 1 1 Selenium與WebDriver的對比對比項SeleniumWebDriver編碼語言JavaPythonRuby等多種語言Java是否支持錄制/回放模式是否執(zhí)行效率一般高支持的瀏覽器IE、Firefox、Chrome、Safari、OperaIE、Firefox、Chrome提供的測試方法多基本eclipse配置新標裝的電腦,Eclipse配置已經完成,請按照下述步驟檢查配置是否正確:步驟1:設置電腦環(huán)境變量JAVA_HOME:我的電腦(右鍵) 屬性 高級 環(huán)境變量 (系統(tǒng)變量)新建 ,進行如下編輯:變量名:JAVA_HOM

19、E變量值(java安裝的目錄):C:Program FilesJavajdk1.6.0_20 步驟2:設置電腦環(huán)境變量CLASSPATH:我的電腦(右鍵) 屬性 高級 環(huán)境變量 (系統(tǒng)變量)新建,進行如下編輯:變量名:CLASSPATH變量值(java安裝的目錄):.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;步驟3:在eclipse中配置java點擊eclipse菜單中Window Preferences Java Installed JREs ,配置如圖3-1。圖 STYLEREF 1 s 3 SEQ 圖 * A

20、RABIC s 1 1 Eclipse中JRES配置圖項目環(huán)境配置新建Eclipse項目FileNewProject(參見圖3-2)Java ProjectNext(參見圖3-3)Project Name(項目名Webtest_Project,參見圖3-4)NextFinish(參見圖3-5)圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 2圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 3輸入創(chuàng)建的工程名字圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 4圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s

21、 1 5導入自動化測試的jar包和相應的lib庫ClasspathBuild PathConfigure Buid path(參見圖3-6)LibrariesAdd External JARs加入jarOK(參見圖3-7)圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 6圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 7從官網上下載的selenium,包含了selenium-java-2.0b3.jar、selenium-java-2.0b3-srcs.jar和libs,其中selenium-java-2.0b3-srcs.jar是源文件的jar

22、包,不需要導入工程,其他包都要導入。所有需導入工程的jar包已整理在HYPERLINK hcd-it-290ShareSelenium 2.0jarSelenium0 2.0中,詳細說明如下:webtest_selenium.jar/webtest_webdirver.jar(參見3.1.1章節(jié),根據選擇的實現方法加入對應的jar包);加入selenium-java-2.0b3.jar;加入selenium-java-2.0b3文件夾下libs里面的所有jar;新建package包在src包文件夾下面建立一個屬于自己系統(tǒng)的Web自動化測試的package包。包(package)的命名規(guī)范:全部

23、小寫,測試代碼package為com.paic.。例如:com.paic.its.demo。選中src資源包右鍵單擊NewPackage(參見圖3-8)name(com.paic.its.demo)Finish(參見圖3-9)圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 8圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 9測試案例編寫Selenese語法Selenium提供了一套豐富的命令來測試你的web應用,這套命令通常叫Selenese。 它可以用于測試基于HTML標簽的頁面元素,例如:鏈接,輸入框,下拉框,提交表單,表格數據等。(具體常用

24、命令可以參見附錄A)Selenese命令調用格式主要包括三部分:Command(命令)、Target(目標)、Value(值),下面通過個簡單的例子說明:selenium.type(j_username,username);此命令的目的是輸入登陸用戶名,具體解析如圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 10所示:Command(命令) Target(目標) Value(值) 例1 selenium.type j_username username 圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 10 Selenese命令調用格式圖Sele

25、nese命令可以轉變?yōu)榫幊檀a,他可以同時支持包括C#、java、php、Perl在內的多種語言,這里我以java語言為例舉一個簡單的例子。這是一個系統(tǒng)登陸的案例,實現的功能包括:打開登陸界面-輸入登陸用戶名、密碼-點擊登陸。通過這個案例我們可以很容易的理解selenium如何運行Selenese命令,同時細心的人應該注意到了,在Selenese命令中Target(目標)或者Value(值)有時是可以省略的(例如:selenium.open、selenium. waitForPageToLoad)。public void testLogin() throws Exception String

26、username = gtdtest115;/登陸用戶名String password = vvvvv88888;/登陸密碼selenium.open(/nets-tmr-life/login.jsp);/打開登陸界面selenium.waitForPageToLoad(30000); /等待頁面加載selenium.type(j_username,username);/輸入登陸用戶名selenium.type(j_password,password);/輸入登陸密碼selenium.click(Submit);/點擊登陸按鈕selenium.waitForPageToLoad(60000);

27、 /等待加載界面selenium.stop(); /關閉seleniumXPath介紹XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。它包含一個標準函數庫,使用路徑表達式來選取,這些路徑表達式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達式非常相似。Selenium用XPath技術來記錄網頁元素的位置和屬性。下面通過個簡單的例子說明:在這個案例中我們要做的操作是選擇查詢結果中的第一條數據,系統(tǒng)界面圖和代碼解析圖見圖3-11和圖3-12。XPath路徑為/tableid=questResult/tbody/tr1/td1/input。圖 ST

28、YLEREF 1 s 3 SEQ 圖 * ARABIC s 1 11 系統(tǒng)界面圖圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 12 代碼解析圖解析如下:路徑以雙斜線 / 開頭, 則表示選擇文檔中所有滿足雙斜線/之后規(guī)則的元素(無論層級關系),即尋找table下面所有滿足此路徑條件的數據。前綴 用于指定屬性,/tableid=questResult則表示在table下面查詢到滿足id=questResult的數據,如圖3-13 。圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 13 代碼解析圖以斜線 / 開始, 那么該路徑就表示到一個元素的絕對路

29、徑,在此案例中/tbody/tr1/td1/input則表示選擇在tbody下面第一行第一列的input數據,如圖3-14。圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 14 代碼解析圖測試案例框架Selenium的開發(fā)提供的SeleneseTestCase是Junit3風格的,所以我們的自動化測試案例要符合Junit3的框架。Junit3的測試案例,包括三個部分:測試方法test*()、初始化函數setUp()和結束初始化函數tearDown()。這三者的執(zhí)行順序是:setUp()test*()tearDown()。此外,Junit3在命名規(guī)范和繼承層次上有嚴格的要

30、求:測試類測試類必須繼承TestCase。SeleneseTestCase是TestCase的子類,所以在新建的測試類直接繼承SeleneseTestCase即可。測試方法測試方法必須是Public,且以test開頭。為了使命名更為規(guī)范,測試方法名應與測試案例的功能模塊相關,如:測試保單查詢功能的測試方法寫為testPolicySerch()。初始化函數測試案例中,必須包含初始化函數setUp()和tearDown()。setUp()執(zhí)行在測試方法之前,我們統(tǒng)一將初始化瀏覽器,登陸測試系統(tǒng)的操作放在這一函數中,在每次測試方法運行前執(zhí)行。tearDown()函數中統(tǒng)一放置關閉瀏覽器的操作,在測試

31、方法之后執(zhí)行,結束當前測試案例。新建測試案例的步驟如下:選中新建的Package右鍵NewJunit Test Case(參見圖3.15)NameFinish(參見圖3.16)圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 15圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 16建好的SeleneseTestCase,會提示“The type SeleneseTestCase is deprecated”,根據提示增加“SuppressWarnings(deprecation)”,忽略類已過時的警告。接下來完善我們的測試案例,根據命名規(guī)則,新建測

32、試方法,重寫setUp()和tearDown(),詳見模板文件Demo.java。步驟簡單介紹如下:創(chuàng)建webtest類的對象webtest itsTest = new webtest();重寫setUp()setUp()需要完成webtest的初始化和測試系統(tǒng)的登陸。相關參數均從配置文件中讀取(參見第5章,數據管理),范例如下:public void setUp() throws Exception /變量賦值String fileName = config.xml;/配置文件名String ip = itsTest.parserFromXml(fileName, ip);/ipint po

33、rt = Integer.parseInt(itsTest.parserFromXml(fileName, port);/端口號String browser = itsTest.parserFromXml(fileName, browser);/瀏覽器String baseUrl = itsTest.parserFromXml(fileName, url);/基本URLString extendedUrl = itsTest.parserFromXml(fileName, extendedUrl);/擴展URLString username = itsTest.parserFromXml(fi

34、leName, user);/登陸用戶名String password = itsTest.parserFromXml(fileName, pwd);/登陸密碼/測試初始化itsTest.initialize(baseUrl, ip, port, browser);/初始化itsTest.login(extendedUrl, username, password);/系統(tǒng)登陸上面的范例是基于selenium的,如果是基于WebDriver,在初始化的時候,只需要傳Url參數,其他參數不用傳,如:itsTest.initialize(baseUrl, null, 0, null);/初始化重寫t

35、earDown()public void tearDown() throws Exception itsTest.close();/關閉瀏覽器,結束測試新建測試方法在不同的測試案例中,除了測試方法,其他基本大同小異。編寫測試方法的時候,要以測試邏輯為依據,并結合selenese命令去實現測試邏輯。以NETS-ITSADMIN的名單批次查詢?yōu)槔?,測試方法編寫如下:/* * 測試方法 * throws Exception */public void testDemo() throws ExceptionString firMenu = Image2;/一級菜單String secMenu = li

36、nk=名單批次查詢;/二級菜單String inputBatchName = batchName;/名單批次String btnSerch = /inputvalue=查 詢; /查詢按鈕String resultBatchName = /trid=row0/td1;/查詢結果String valueBatchName=CMP201103021564-03-201103 ;/批次名稱String serchMode1 = elementitsTest.isPresent(10, firMenu, serchMode1);/驗證菜單是否存在itsTest.click(firMenu);/點擊 “

37、名單管理”itsTest.click(secMenu);/點擊 “名單批次查詢”itsTest.type(inputBatchName,valueBatchName);itsTest.click(btnSerch);/點擊查詢按鈕assertEquals(valueBatchName, itsTest.getText(resultBatchName);至此,一個測試案例就完成了,參照圖3.17運行測試案例。需要注意的是,如果使用的底層實現方法是Selenium,要先啟動HYPERLINK hcd-it-290ShareSelenium 2.0Selenium server,啟動命令如下:jav

38、a jar selenium-server.jar圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 17 管理測試案例測試工程目錄結構單個測試案例調試完畢之后,需將案例放到執(zhí)行機下的固定目錄,統(tǒng)一運行和管理測試案例集。現在我們使用的方案是通過Jenkins調用Ant,完成測試案例的編譯和運行。如圖4-1,這是一個被測系統(tǒng)在執(zhí)行機上必須要有的文件和文件夾:src:測試案例源文件,直接復制 Eclipse工程下的測試案例文件,后續(xù)將會統(tǒng)一從配置管理工具(CC/SVN)上取得。lib:需要用到的外部包和配置文件,即在Eclipse中加載到Classpath中的所有包和文件xsl

39、:Ant輸出的測試報告樣式,待Jenkins功能完善后,Ant不需要輸出測試報告,則該文件夾可以取消。樣式模板詳見: HYPERLINK hcd-it-290ShareSelenium 2.0 xsl 測試報告樣式模板。build.xml:Ant的腳本文件,一般不作修改。perties:配置Ant的測試腳本,可以根據實際的目錄修改。模板詳見: HYPERLINK hcd-it-290ShareSelenium 2.0 腳本文件模板圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 1 使用Ant運行測試案例Ant介紹AntAnother Neat Tool,是一個基于Jav

40、a的跨平臺構建工具,作為一個優(yōu)秀的構建工具Ant有如下的優(yōu)點:跨平臺 -因為ant是使用java實現的,所以它跨平臺;使用簡單-與ant的兄弟make比起來;語法清晰-同樣是和make相比。Ant下載地址: HYPERLINK /bindownload.cgi /bindownload.cgi Ant基本語法ant的編譯文件默認為build.xml,一般無需改變。build.xml的根節(jié)點為,一般格式如下:name為工程名稱;default為默認的target,就是任務;basedir就是基路徑。一般為.property可以定義變量,一般格式如下:引用的時候這么引用$test如果變量是路徑的話

41、,則可以這么定義:定義target: name的值為target的名稱,可以在編譯的時候指定是完成哪個target, 否則采用project那里定義的default。 depends則定義了依賴關系,值為其他target的name。多個依賴關系用,隔開, 順序執(zhí)行完定義的依賴關系,才會執(zhí)行這個target。 target在build.xml中定義的順序無所謂,但是depends中的順序必須正確。構建文件包括元素,以及其中嵌套的、 和 元素,下面是一個通用的構建文件,它很適合作為一個模板。關于構建文件的注意事項: 所有構建文件都要有元素,而且至少有一個 元素; 對于 元素的default 屬性并

42、沒有默認值; 構建文件并不一定要被命名為build.xml。不過build.xml 是Ant 要搜索的默認文件名; 每個構建文件只能有一個 元素。輸出測試報告樣式將xsl文件夾下,測試報告樣式模板中的“NETS-ITSADMIN”全部替換成當前測試系統(tǒng)名稱即可。Ant BuildAnt的XML配置文件的結構很簡單,這也是Ant的一個優(yōu)點,簡單易懂,容易上手,Ant的配置文件主要由project,target和task三層樹型結構組成。一般情況下,工程中的build.xml不需要修改,只需要根據當前的目錄,修改配置文件perties即可。我們用到的build.xml,其中包含了4個任務(targ

43、et),分別是Junit、Compile、RunTest、DataClean,且按順序執(zhí)行,每個target的實現,請結合4.2.2Ant基本語法參看模板文件(HYPERLINK hcd-it-290ShareSelenium 2.0build.xml)。Junit:完成初始化;Compile:完成測試案例的編譯;RunTest:運行測試案例,并生成測試報告;DataClean:清理測試數據。測試人員可根據執(zhí)行機上的實際目錄修改perties配置文件。perties中有6個參數, 如下:testSrc.dir=測試案例目錄;xsl.dir=測試報告樣式目錄;lib.dir=引用外部jar包和配

44、置文件目錄;reports.dir=執(zhí)行機本地生成的測試報告目錄;run.classes=編譯后的測試案例目錄;use_jenkins=是否在使用Jenkins監(jiān)控(yes/no);使用Jenkins管理自動化測試任務Jenkins介紹Jenkins(原Hudson)是一款Java平臺的開源持續(xù)集成(Continuous Integration,CI)引擎。它易于安裝,配置簡單,豐富的插件支持,高度的可擴展性,強大的分布式構建能力都讓它在眾多的CI引擎中脫穎而出。所以我們選用Jenkins來管理測試案例,以便以后進行持續(xù)集成。Jenkins任務創(chuàng)建在Jenkins中創(chuàng)建任務的步驟如下:登陸Je

45、nkins: HYPERLINK http:/hcd-it-44:8000/jenkins/ http:/hcd-it-44:8000/jenkins/ (此地址后續(xù)可能會更改);新建任務,根據測試系統(tǒng)填寫任務名稱,選擇構建一個多配置項目,點擊OK(參見圖4-2);圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 2選擇執(zhí)行機:Configuration MatrixSlaves HYPERLINK javascript:YAHOO.widget.TreeView.getNode(yui-tv-auto-id-0,2).toggle() t _self Individua

46、l nodes 勾選執(zhí)行測試案例的執(zhí)行機(參見圖4.3、圖4.4)圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 3圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 4選擇構建方式:BuildInvoke Ant(參見圖4.5)Targets:build.xml文件中的defaultBuild File:執(zhí)行機上build.xml的路徑(參見圖4.6)。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 5圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 6選擇打印輸出結果:Post-build Actio

47、ns Publish JUnit test result report Test report XMLs:/*/*.xml(參見圖4.7)圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 7Jenkins任務執(zhí)行選中建好的Jenkins任務(NETS-ITSADMIN),點擊立即構建,即可運行測試案例(參見圖4.8)。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 8Jenkins執(zhí)行結果查看案例執(zhí)行完之后,可以通過執(zhí)行狀態(tài),查看執(zhí)行結果。任務狀態(tài)及描述如圖4.9。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 9在案例執(zhí)行

48、的時候,也可進入構建狀態(tài),通過查看命令行輸出,進行測試案例的監(jiān)控。參加圖4.10。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 10數據管理自動化測試流程圖自動化測試的過程包括:測試數據準備、測試腳本運行、生成測試報告;其中測試數據準備包括兩個步驟:JDBC連接數據庫、數據回滾腳本的運行,如圖5-1所示。圖 STYLEREF 1 s 5 SEQ 圖 * ARABIC s 1 1 自動化測試流程圖JDBC連接數據庫代碼范例JAVA的數據庫操作,需要先建立DB連接,然后在DB中執(zhí)行查詢、更新、插入、刪除等操作,并從查詢操作中獲取數據。代碼范例如下:public void

49、DBTest() throws ExceptionString url; /Oracel DB URLString username; /Oracel DB usernameString password; /Oracle DB passwordString fileName; /config file String cmd_select = select description from N_OTHER_TESTING;String cmd_update = update N_OTHER_TESTING set description=NUll;String cmd_insert = ins

50、ert into N_OTHER_TESTING;String cmd_delete = delete from N_OTHER_TESTING;String cmd_commit = commit;/Fetch parameter from config filefileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspwd);/Load Oracle Server JDB

51、C driver. Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();/ Get connection to DBConnection con = DriverManager.getConnection(url, user, pwd);/ Create statement object Statement st= con.createStatement();/ Send SQL SELECT statements to the database via the Statement.execute QueryResultSe

52、t result_select = st.executeQuery(cmd_select);ResultSet result_update = st.executeQuery(cmd_update);ResultSet result_insert = st.executeQuery(cmd_insert);ResultSet result_delete = st.executeQuery(cmd_delete);ResultSet result_commit = st.executeQuery(cmd_commit);/ Fetch value of description from resu

53、lt_select object.String description = ;while (result_select.next() description = result_select.getString(description);con.close();步驟1:從配置文件中獲取登錄數據庫的連接串,用戶名、密碼;fileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspw

54、d);步驟2:加載oracle數據庫驅動;Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();注:需要加載oracle JDBC的jar包到Eclipse的lib中下載地址: HYPERLINK /user/ashutc/ojdbc6.jar /user/ashutc/ojdbc6.jar 步驟3:登錄oracle數據庫;Connection con = DriverManager.getConnection(url, user, pwd);步驟4:創(chuàng)建Statement對象;Statement st= con.create

55、Statement();步驟5:通過Statement對象執(zhí)行SQL語句;ResultSet result_select = st.executeQuery(cmd_select);ResultSet result_update = st.executeQuery(cmd_update);ResultSet result_insert = st.executeQuery(cmd_insert);ResultSet result_delete = st.executeQuery(cmd_delete);ResultSet result_commit = st.executeQuery(cmd_c

56、ommit);步驟6:獲取測試人員關心的查詢結果;String description = ;while (result_select.next() description = result_select.getString(description);步驟7:關閉數據庫連接:con.close();注:如果不關閉數據庫連接可能帶來一些嚴重的問題。數據回滾腳本數據回滾腳本的基本原則:數據回滾腳本需將自動化數據回滾到初始化狀態(tài);測試人員應該屏蔽系統(tǒng)歸檔/備份功能對測試數據的影響,例如可以通過修改創(chuàng)建日期使其永遠不會被歸檔或備份;自動化測試新生成的垃圾數據,建議及時清理(如delete語句),以免造成系統(tǒng)負載過大;建議測試邏輯涵蓋測試數據的整個生命周期,例如:案例A:新建測試機構Dept案例B:查詢測試機構Dept案例C:修改測試機構Dept案例D:刪除測試機構Dept數據回滾腳本應在每次執(zhí)行自動化測試案例前執(zhí)行。數據初始化腳本數據初始化腳本的基本原則:自動化測試數據要與手動測試分離,如將自動化測試數據特定到某個特定條件,如某個機構或某天;自動化測試數據的命名應該顯著區(qū)別于手工測試數據;數據初始化腳本要有備份,以便在數據庫發(fā)生變更后快速恢復測試數據;數據初始化腳本不需要定期執(zhí)行,僅在新建測試環(huán)境或測試數據庫發(fā)生變更

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論