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

下載本文檔

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

文檔簡介

開源WEB自動化測試實施指南[說明:本文件中“[]〞中內容為舉例和說明文字,請在文件擬制時替換或刪除;假設文中某章節(jié)內容可省略、不需要或適用,請保存該標題,并根據(jù)實際在內容局部寫明“略〞、“勿需〞或“不適用〞等,同時適當說明原因;請作者注意在文檔右上角修改該文檔的密級。]TITLE文件修訂歷史修訂時間修訂說明作者審核2023-8-5創(chuàng)立目錄岑海菊溫素劍2023-8-17章節(jié)1、2、4、岑海菊溫素劍章節(jié)3李穎、陳建紅、岑海菊溫素劍章節(jié)5李穎溫素劍模板修訂歷史版本生效時間變更概要作者審核批準2023-8-5創(chuàng)立自動化測試方法文檔岑海菊目錄TOC\o"1-3"\h\z1 引言與概述 41.1 背景 41.2 開源Web自動化測試的優(yōu)勢 4 Selenium簡介 4 Selenium的優(yōu)勢 42 開源Web自動化測試架構 62.1 基于Selenium2.0的自動化測試框架 62.2 新Web自動化測試代碼架構 73 Web自動化測試編寫 83.1 集成開發(fā)環(huán)境搭建 8 選擇底層實現(xiàn)方法 8 eclipse配置 9 工程環(huán)境配置 103.2 測試案例編寫 13 Selenese語法 14 XPath介紹 14 測試案例框架 164 管理測試案例 194.1 測試工程目錄結構 194.2 使用Ant運行測試案例 20 Ant介紹 20 Ant根本語法 20 輸出測試報告樣式 21 AntBuild 214.3 使用Jenkins管理自動化測試任務 22 Jenkins介紹 22 Jenkins任務創(chuàng)立 22 Jenkins任務執(zhí)行 24 Jenkins執(zhí)行結果查看 245 數(shù)據(jù)管理 25 自動化測試流程圖 25 JDBC連接數(shù)據(jù)庫代碼范例 26 數(shù)據(jù)回滾腳本 28 數(shù)據(jù)初始化腳本 28 配置文件管理 296 疑難手冊 31附錄A-Selenium2.0常用命令 32附錄B-案例文件、配置文件demo 32附錄C-CC使用及培訓資料 32HYPERLINK引言與概述背景目前QTP是我司使用最廣泛的自動化測試工具,在實際使用中發(fā)現(xiàn),QTP存在以下缺乏之處:QTP基于測試對象庫來識別測試對象,其內部機制是不透明的,在實際工作中,對測試對象庫的維護工作量很大,消耗了測試人員大量的精力,效果卻并不好;QTP的設計架構決定了當前測試腳本可復用性差,很難積累可重復使用的函數(shù)、組件、包等測試資產;使用QTP的描述性編程來創(chuàng)立測試腳本,嚴重依賴于測試人員的個人經驗和技巧,難以大規(guī)模推廣;自動化測試數(shù)據(jù)經常失效,原因在于沒有統(tǒng)一的數(shù)據(jù)回滾措施。基于商業(yè)自動化測試工具QTP的錄制/回放模式,無法構建健壯的自動化測試腳本,所以我們迫切地需要新的工具來替換QTP。當前有多種開源自動化測試工具可供選擇,Selenium2.0便是目前使用最廣泛的開源測試工具之一。開源Web自動化測試的優(yōu)勢Selenium簡介Selenium是一系列基于Web的自動化測試工具。Selenium提供了一系列測試函數(shù)用于支持Web自動化測試,這些函數(shù)非常靈活,他們能夠通過多種方式定位UI元素,并將預期結果與系統(tǒng)實際表現(xiàn)相比擬,測試人員通過這些測試函數(shù)來模擬用戶操作,從而實現(xiàn)Web自動化測試。Selenium2.0集成了WebDriverAPI,解決了Selenium1.0的局限,二者相互彌補,提供了更多可選的編程接口。Selenium的優(yōu)勢QTP的測試對象庫,對與測試人員來說是不透明的。圖1-1為構建QTP自動化測試腳本的流程,在使用QTP錄制測試腳本的時候,測試人員根本不清楚測試對象庫中的測試對象是否有效,能否滿足需求,這給使用者帶來很大的困擾。圖STYLEREF1\s1SEQ圖\*ARABIC\s11構建QTP自動化測試腳本的流程Selenium2.0具有很強的靈活性和很好的擴展性,測試人員從頁面數(shù)據(jù)中提取對象,引入測試邏輯構建測試腳本。通過這樣的方式,測試人員能夠確保測試對象的有效性,對測試對象的維護也更容易。圖STYLEREF1\s1SEQ圖\*ARABIC\s12構建Selenium2.0自動化測試腳本的流程比照QTP和Selenium2.0構建自動化測試腳本的流程圖,我們可以發(fā)現(xiàn),Selenium不再基于錄制/回放模式來創(chuàng)立自動化測試腳本,彌補了QTP的缺乏:開源測試工具識別測試對象的機制是透明的,可以減少測試人員的維護工作量;采用開源測試工具,可以將需要重用的測試代碼打包到jar中。后續(xù)方案引入配置管理,保證可重用jar包的質量;采用java語言來編寫測試腳本,在測試對象識別得到保證的前提下,這并不是一件充滿技巧性的工作;針對自動化測試數(shù)據(jù)經常失效的問題,新渠道目前的做法是將恢復測試數(shù)據(jù)的SQL放在定時JOB中,在自動化測試運行前恢復相關測試數(shù)據(jù)。除此之外,Selenium2.0在很多方面都優(yōu)于QTP,如表1-1所示。表STYLEREF1\s1SEQ表\*ARABIC\s11QTP與Selenium2.0的比照比照項QTP〔商業(yè)〕Selenium2.0〔開源〕SeleniumWebDriver購置本錢昂貴免費免費測試對象識別機制不透明透明透明編碼語言VBSJava\Python\Ruby等多種語言Java代碼可重用性低高高腳本維護工作量高低低是否支持錄制/回放模式是是〔功能較弱〕否執(zhí)行效率低一般高測試腳本是否支持配置管理不支持支持支持是否支持訂制否是是開源Web自動化測試架構基于Selenium2.0的自動化測試框架圖2-1是基于Selenium2.0的自動化測試的整體框架〔虛線代表尚未實現(xiàn)的功能〕:步驟1:在開發(fā)人員提交代碼后,持續(xù)集成引擎〔Jenkins〕會對最新的代碼進行編譯和部署;步驟2:Jenkins從配置管理工具〔SVN/CC〕獲取測試腳本;步驟3:Jenkins調用Ant編譯測試腳本;步驟4:Jenkins調用Ant去運行Junit測試案例;步驟5:Junit通過Selenium2.0操作瀏覽器;步驟6:Jenkins輸出測試報告,并以郵件的形式向測試人員發(fā)送自動化測試結果。圖STYLEREF1\s2SEQ圖\*ARABIC\s11新Web自動化測試整體框架新Web自動化測試代碼架構基于Selenium2.0的Web自動化測試,每個測試案例就是一個JunitTestCase。Junit測試案例,由測試數(shù)據(jù)和測試邏輯兩局部組成。測試邏輯最底層的實現(xiàn)是Selenium2.0庫,通過抽象和擴展出webtest類。測試人員通過調用webtest類的方法,來構建測試邏輯。關于測試數(shù)據(jù),請參考第5章數(shù)據(jù)管理。圖STYLEREF1\s2SEQ圖\*ARABIC\s12新Web自動化測試代碼框架Web自動化測試編寫集成開發(fā)環(huán)境搭建選擇底層實現(xiàn)方法前面提到,Selenium2.0集成了WebDriver的API,因此我們首先需要選擇底層的實現(xiàn)方法是Selenium還是WebDriver。二者比照方表3-1所示,Selenium提供了豐富的方法,支持多種瀏覽器,可以滿足各種各樣的測試邏輯需求,所以,一般情況下優(yōu)先選擇Selenium。但有些系統(tǒng)比擬特殊,某些功能Selenium無法支持,此時可考慮使用WebDriver。WebDriver提供的方法雖不及Selenium多〔如截屏等功能〕,但是也根本能滿足系統(tǒng)的要求,最主要的是它的執(zhí)行速度非常的快,這點是Selenium所望塵莫及的??偠灾?,還是要根據(jù)系統(tǒng)的實際情況,選擇適宜的實現(xiàn)方法。

表STYLEREF1\s3SEQ表\*ARABIC\s11Selenium與WebDriver的比照比照項SeleniumWebDriver編碼語言Java\Python\Ruby等多種語言Java是否支持錄制/回放模式是否執(zhí)行效率一般高支持的瀏覽器IE、Firefox、Chrome、Safari、OperaIE、Firefox、Chrome提供的測試方法多根本eclipse配置新標裝的電腦,Eclipse配置已經完成,請按照下述步驟檢查配置是否正確:步驟1:設置電腦環(huán)境變量JAVA_HOME:我的電腦〔右鍵〕→屬性→高級→環(huán)境變量→〔系統(tǒng)變量〕新建,進行如下編輯:變量名:JAVA_HOME20步驟2:設置電腦環(huán)境變量CLASSPATH::我的電腦〔右鍵〕→屬性→高級→環(huán)境變量→〔系統(tǒng)變量〕新建,進行如下編輯:變量名:CLASSPATH變量值〔java安裝的目錄〕:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;步驟3:在eclipse中配置java點擊eclipse菜單中Window→Preferences→Java→InstalledJREs,配置如圖3-1。圖STYLEREF1\s3SEQ圖\*ARABIC\s11Eclipse中JRES配置圖工程環(huán)境配置新建Eclipse工程File→New→Project〔參見圖3-2〕→JavaProject→Next〔參見圖3-3〕→ProjectName〔工程名Webtest_Project,參見圖3-4〕→Next→Finish〔參見圖3-5〕圖STYLEREF1\s3SEQ圖\*ARABIC\s12圖STYLEREF1\s3SEQ圖\*ARABIC\s13輸入創(chuàng)立的工程名字圖STYLEREF1\s3SEQ圖\*ARABIC\s14圖STYLEREF1\s3SEQ圖\*ARABIC\s15導入自動化測試的jar包和相應的lib庫Classpath→BuildPath→ConfigureBuidpath〔參見圖3-6〕→Libraries→AddExternalJARs→參加jar→OK〔參見圖3-7〕圖STYLEREF1\s3SEQ圖\*ARABIC\s16圖STYLEREF1\s3SEQ圖\*ARABIC\s17從官網(wǎng)上下載的selenium,包含了、和libs,其中是源文件的jar包,不需要導入工程,其他包都要導入。所有需導入工程的jar包已整理在Selenium02.0中,詳細說明如下:webtest_selenium.jar/webtest_webdirver.jar章節(jié),根據(jù)選擇的實現(xiàn)方法參加對應的jar包〕;參加;參加selenium-java-2.0b3文件夾下libs里面的所有jar;新建package包在src包文件夾下面建立一個屬于自己系統(tǒng)的Web自動化測試的package包。包〔package〕的命名標準:全部小寫,測試代碼package為com.paic.<系統(tǒng)縮寫>.<功能模塊>。例如:。選中src資源包→右鍵單擊→New→Package〔參見圖3-8〕→name〔〕→Finish〔參見圖3-9〕圖STYLEREF1\s3SEQ圖\*ARABIC\s18圖STYLEREF1\s3SEQ圖\*ARABIC\s19測試案例編寫Selenese語法Selenium提供了一套豐富的命令來測試你的web應用,這套命令通常叫Selenese。它可以用于測試基于HTML標簽的頁面元素,例如:鏈接,輸入框,下拉框,提交表單,表格數(shù)據(jù)等?!簿唧w常用命令可以參見附錄A〕Selenese命令調用格式主要包括三局部:Command〔命令〕、Target〔目標〕、Value〔值〕,下面通過個簡單的例子說明:selenium.type("j_username",username);此命令的目的是輸入登陸用戶名,具體解析如圖STYLEREF1\s3SEQ圖\*ARABIC\s110所示:Command〔命令〕Target〔目標〕Value〔值〕例1selenium.type"j_username"username圖STYLEREF1\s3SEQ圖\*ARABIC\s110Selenese命令調用格式圖Selenese命令可以轉變?yōu)榫幊檀a,他可以同時支持包括C#、java、php、Perl在內的多種語言,這里我以java語言為例舉一個簡單的例子。這是一個系統(tǒng)登陸的案例,實現(xiàn)的功能包括:翻開登陸界面-輸入登陸用戶名、密碼-點擊登陸。通過這個案例我們可以很容易的理解selenium如何運行Selenese命令,同時細心的人應該注意到了,在Selenese命令中Target〔目標〕或者Value〔值〕有時是可以省略的〔例如:selenium.open、selenium.waitForPageToLoad〕。publicvoidtestLogin()throwsException{ Stringusername="gtdtest115"; //登陸用戶名 Stringpassword="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"); //等待加載界面 selenium.stop(); //關閉selenium}XPath介紹XPath是一門在XML文檔中查找信息的語言。XPath用于在XML文檔中通過元素和屬性進行導航。它包含一個標準函數(shù)庫,使用路徑表達式來選取,這些路徑表達式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達式非常相似。Selenium用XPath技術來記錄網(wǎng)頁元素的位置和屬性。下面通過個簡單的例子說明:在這個案例中我們要做的操作是選擇查詢結果中的第一條數(shù)據(jù),系統(tǒng)界面圖和代碼解析圖見圖3-11和圖3-12。XPath路徑為"http://table[@id='questResult']/tbody/tr[1]/td[1]/input"。圖STYLEREF1\s3SEQ圖\*ARABIC\s111系統(tǒng)界面圖圖STYLEREF1\s3SEQ圖\*ARABIC\s112代碼解析圖解析如下:路徑以雙斜線//開頭,那么表示選擇文檔中所有滿足雙斜線//之后規(guī)那么的元素(無論層級關系),即尋找table下面所有滿足此路徑條件的數(shù)據(jù)。前綴@用于指定屬性,//table[@id='questResult']那么表示在table下面查詢到滿足id='questResult'的數(shù)據(jù),如圖3-13。圖STYLEREF1\s3SEQ圖\*ARABIC\s113代碼解析圖以斜線/開始,那么該路徑就表示到一個元素的絕對路徑,在此案例中/tbody/tr[1]/td[1]/input那么表示選擇在tbody下面第一行第一列的input數(shù)據(jù),如圖3-14。圖STYLEREF1\s3SEQ圖\*ARABIC\s114代碼解析圖測試案例框架Selenium的開發(fā)提供的SeleneseTestCase是Junit3風格的,所以我們的自動化測試案例要符合Junit3的框架。Junit3的測試案例,包括三個局部:測試方法test***()、初始化函數(shù)setUp()和結束初始化函數(shù)tearDown()。這三者的執(zhí)行順序是:setUp()→test***()→tearDown()。此外,Junit3在命名標準和繼承層次上有嚴格的要求:測試類測試類必須繼承TestCase。SeleneseTestCase是TestCase的子類,所以在新建的測試類直接繼承SeleneseTestCase即可。測試方法測試方法必須是Public,且以test開頭。為了使命名更為標準,測試方法名應與測試案例的功能模塊相關,如:測試保單查詢功能的測試方法寫為testPolicySerch()。初始化函數(shù)測試案例中,必須包含初始化函數(shù)setUp()和tearDown()。setUp()執(zhí)行在測試方法之前,我們統(tǒng)一將初始化瀏覽器,登陸測試系統(tǒng)的操作放在這一函數(shù)中,在每次測試方法運行前執(zhí)行。tearDown()函數(shù)中統(tǒng)一放置關閉瀏覽器的操作,在測試方法之后執(zhí)行,結束當前測試案例。新建測試案例的步驟如下:選中新建的Package→右鍵→New→JunitTestCase〔參見圖3.15〕→Name→Finish〔參見圖3.16〕圖STYLEREF1\s3SEQ圖\*ARABIC\s115圖STYLEREF1\s3SEQ圖\*ARABIC\s116建好的SeleneseTestCase,會提示“ThetypeSeleneseTestCaseisdeprecated〞,根據(jù)提示增加“@SuppressWarnings("deprecation")〞,忽略類已過時的警告。接下來完善我們的測試案例,根據(jù)命名規(guī)那么,新建測試方法,重寫setUp()和tearDown(),詳見模板文件Demo.java。步驟簡單介紹如下:創(chuàng)立webtest類的對象webtestitsTest=newwebtest();重寫setUp()setUp()需要完成webtest的初始化和測試系統(tǒng)的登陸。相關參數(shù)均從配置文件中讀取〔參見第5章,數(shù)據(jù)管理〕,范例如下:publicvoidsetUp()throwsException{ //變量賦值 StringfileName="config.xml"; //配置文件名 Stringip=itsTest.parserFromXml(fileName,"ip"); //ip intport=Integer.parseInt(itsTest.parserFromXml(fileName,"port")); //端口號 Stringbrowser=itsTest.parserFromXml(fileName,"browser"); //瀏覽器 StringbaseUrl=itsTest.parserFromXml(fileName,"url"); //根本URL StringextendedUrl=itsTest.parserFromXml(fileName,"extendedUrl"); //擴展URL Stringusername=itsTest.parserFromXml(fileName,"user"); //登陸用戶名 Stringpassword=itsTest.parserFromXml(fileName,"pwd"); //登陸密碼 //測試初始化 itsTest.initialize(baseUrl,ip,port,browser); //初始化 itsTest.login(extendedUrl,username,password); //系統(tǒng)登陸 }上面的范例是基于selenium的,如果是基于WebDriver,在初始化的時候,只需要傳Url參數(shù),其他參數(shù)不用傳,如:itsTest.initialize(baseUrl,null,0,null); //初始化重寫tearDown()publicvoidtearDown()throwsException{ itsTest.close(); //關閉瀏覽器,結束測試 }新建測試方法在不同的測試案例中,除了測試方法,其他根本大同小異。編寫測試方法的時候,要以測試邏輯為依據(jù),并結合selenese命令去實現(xiàn)測試邏輯。以NETS-ITSADMIN的名單批次查詢?yōu)槔瑴y試方法編寫如下: /** *測試方法 *@throwsException */ publicvoidtestDemo()throwsException{ StringfirMenu="Image2"; //一級菜單 StringsecMenu="link=名單批次查詢"; //二級菜單 StringinputBatchName="batchName"; //名單批次 StringbtnSerch="http://input[@value='查詢']"; //查詢按鈕 StringresultBatchName="http://tr[@id=row0]/td[1]"; //查詢結果 StringvalueBatchName="CMP202303021564-03-202303"; //批次名稱 StringserchMode1="element" itsTest.isPresent(10,firMenu,serchMode1); //驗證菜單是否存在 itsTest.click(firMenu); //點擊“名單管理〞 itsTest.click(secMenu); //點擊“名單批次查詢〞 itsTest.type(inputBatchName,valueBatchName); itsTest.click(btnSerch); //點擊查詢按鈕 assertEquals(valueBatchName,itsTest.getText(resultBatchName)); }至此,一個測試案例就完成了,參照圖3.17運行測試案例。需要注意的是,如果使用的底層實現(xiàn)方法是Selenium,要先啟動Seleniumserver,啟動命令如下:java–jarselenium-server.jar圖STYLEREF1\s3SEQ圖\*ARABIC\s117管理測試案例測試工程目錄結構單個測試案例調試完畢之后,需將案例放到執(zhí)行機下的固定目錄,統(tǒng)一運行和管理測試案例集?,F(xiàn)在我們使用的方案是通過Jenkins調用Ant,完成測試案例的編譯和運行。如圖4-1,這是一個被測系統(tǒng)在執(zhí)行機上必須要有的文件和文件夾:src:測試案例源文件,直接復制Eclipse工程下的測試案例文件,后續(xù)將會統(tǒng)一從配置管理工具〔CC/SVN〕上取得。lib:需要用到的外部包和配置文件,即在Eclipse中加載到Classpath中的所有包和文件xsl:Ant輸出的測試報告樣式,待Jenkins功能完善后,Ant不需要輸出測試報告,那么該文件夾可以取消。樣式模板詳見:測試報告樣式模板。build.xml:Ant的腳本文件,一般不作修改。perties:配置Ant的測試腳本,可以根據(jù)實際的目錄修改。模板詳見:腳本文件模板圖STYLEREF1\s4SEQ圖\*ARABIC\s11使用Ant運行測試案例Ant介紹AntAnotherNeatTool,是一個基于Java的跨平臺構建工具,作為一個優(yōu)秀的構建工具Ant有如下的優(yōu)點:跨平臺--因為ant是使用java實現(xiàn)的,所以它跨平臺;使用簡單--與ant的兄弟make比起來;語法清晰--同樣是和make相比。Ant下載地址:Ant根本語法ant的編譯文件默認為build.xml,一般無需改變。build.xml的根節(jié)點為<project>,一般格式如下:

<projectname="AntStudy"default="init"basedir=".">

name為工程名稱;

default為默認的target,就是任務;

basedir就是基路徑。一般為"."property可以定義變量,一般格式如下:

<propertyname="test"value="shit"/>

引用的時候這么引用${test}

如果變量是路徑的話,那么可以這么定義:

<propertyname="src"value="src"/>定義target:<targetname="compile"depends="init"><!--othercommand--></target>

name的值為target的名稱,可以在編譯的時候指定是完成哪個target,

否那么采用project那里定義的default。

depends那么定義了依賴關系,值為其他target的name。多個依賴關系用","隔開,

順序執(zhí)行完定義的依賴關系,才會執(zhí)行這個target。

target在build.xml中定義的順序無所謂,但是depends中的順序必須正確。構建文件包括<project>元素,以及其中嵌套的<target>、<property>和<path>元素,下面是一個通用的構建文件,它很適合作為一個模板。<projectdefault="all"> <propertyname="perty"value="avalue"/> <propertyname="perty"value="bvalue"/> <pathid="a.path"> <pathelementlocation="${java.home}/jre/lib/rt.jar"/> </path> <targetname="all"> <javacsrcdir="."> <classpathrefid="a.path"/> </javac> </target></project>關于構建文件的考前須知:

●所有構建文件都要有<project>元素,而且至少有一個<target>元素;●對于<project>元素的default屬性并沒有默認值;●構建文件并不一定要被命名為build.xml。不過build.xml是Ant要搜索的默認文件名;●每個構建文件只能有一個<project>元素。輸出測試報告樣式將xsl文件夾下,測試報告樣式模板中的“NETS-ITSADMIN〞全部替換成當前測試系統(tǒng)名稱即可。AntBuildAnt的XML配置文件的結構很簡單,這也是Ant的一個優(yōu)點,簡單易懂,容易上手,Ant的配置文件主要由project,target和task三層樹型結構組成。一般情況下,工程中的build.xml不需要修改,只需要根據(jù)當前的目錄,修改配置文件perties即可。我們用到的build.xml,其中包含了4個任務〔target〕,分別是Junit、Compile、RunTest、DataClean,且按順序執(zhí)行,每個target的實現(xiàn),請結合4.2.2Ant根本語法參看模板文件〔build.xml〕。Junit:完成初始化;Compile:完成測試案例的編譯;RunTest:運行測試案例,并生成測試報告;DataClean:清理測試數(shù)據(jù)。測試人員可根據(jù)執(zhí)行機上的實際目錄修改perties配置文件。perties中有6個參數(shù),如下:testSrc.dir=測試案例目錄;xsl.dir=測試報告樣式目錄;lib.dir=引用外部jar包和配置文件目錄;reports.dir=執(zhí)行機本地生成的測試報告目錄;run.classes=編譯后的測試案例目錄;use_jenkins=是否在使用Jenkins監(jiān)控〔yes/no〕;使用Jenkins管理自動化測試任務Jenkins介紹Jenkins〔原Hudson〕是一款Java平臺的開源持續(xù)集成〔ContinuousIntegration,CI〕引擎。它易于安裝,配置簡單,豐富的插件支持,高度的可擴展性,強大的分布式構建能力都讓它在眾多的CI引擎中脫穎而出。所以我們選用Jenkins來管理測試案例,以便以后進行持續(xù)集成。Jenkins任務創(chuàng)立在Jenkins中創(chuàng)立任務的步驟如下:登陸Jenkins:://hcd-it-44:8000/jenkins/〔此地址后續(xù)可能會更改〕;新建任務,根據(jù)測試系統(tǒng)填寫任務名稱,選擇構建一個多配置工程,點擊OK〔參見圖4-2〕;圖STYLEREF1\s4SEQ圖\*ARABIC\s12選擇執(zhí)行機:ConfigurationMatrix→Slaves→Individualnodes勾選執(zhí)行測試案例的執(zhí)行機〔參見圖4.3、圖4.4〕圖STYLEREF1\s4SEQ圖\*ARABIC\s13圖STYLEREF1\s4SEQ圖\*ARABIC\s14選擇構建方式:Build→InvokeAnt〔參見圖4.5〕→Targets:build.xml文件中的default→BuildFile:執(zhí)行機上build.xml的路徑〔參見圖4.6〕。圖STYLEREF1\s4SEQ圖\*ARABIC\s15圖STYLEREF1\s4SEQ圖\*ARABIC\s16選擇打印輸出結果:Post-buildActions→PublishJUnittestresultreport→TestreportXMLs:/*/*.xml〔參見圖4.7〕圖STYLEREF1\s4SEQ圖\*ARABIC\s17Jenkins任務執(zhí)行選中建好的Jenkins任務〔NETS-ITSADMIN〕,點擊立即構建,即可運行測試案例〔參見圖4.8〕。圖STYLEREF1\s4SEQ圖\*ARABIC\s18Jenkins執(zhí)行結果查看案例執(zhí)行完之后,可以通過執(zhí)行狀態(tài),查看執(zhí)行結果。任務狀態(tài)及描述如圖4.9。圖STYLEREF1\s4SEQ圖\*ARABIC\s19在案例執(zhí)行的時候,也可進入構建狀態(tài),通過查看命令行輸出,進行測試案例的監(jiān)控。參加圖4.10。圖STYLEREF1\s4SEQ圖\*ARABIC\s110數(shù)據(jù)管理自動化測試流程圖自動化測試的過程包括:測試數(shù)據(jù)準備、測試腳本運行、生成測試報告;其中測試數(shù)據(jù)準備包括兩個步驟:JDBC連接數(shù)據(jù)庫、數(shù)據(jù)回滾腳本的運行,如圖5-1所示。圖STYLEREF1\s5SEQ圖\*ARABIC\s11自動化測試流程圖JDBC連接數(shù)據(jù)庫代碼范例JAVA的數(shù)據(jù)庫操作,需要先建立DB連接,然后在DB中執(zhí)行查詢、更新、插入、刪除等操作,并從查詢操作中獲取數(shù)據(jù)。代碼范例如下: publicvoidDBTest()throwsException { Stringurl; //OracelDBURL Stringusername; //OracelDBusername Stringpassword; //OracleDBpassword StringfileName; //configfile Stringcmd_select="selectdescriptionfromN_OTHER_TESTING"; Stringcmd_update="updateN_OTHER_TESTINGsetdescription=NUll"; Stringcmd_insert="insertintoN_OTHER_TESTING"; Stringcmd_delete="deletefromN_OTHER_TESTING"; Stringcmd_commit="commit"; //Fetchparameterfromconfigfile fileName="config.xml"; url=parserFromXml(fileName,"url"); username=parserFromXml(fileName,"ldsuser"); password=parserFromXml(fileName,"ldspwd"); //LoadOracleServerJDBCdriver. Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //GetconnectiontoDB Connectioncon=DriverManager.getConnection(url,user,pwd); //Createstatementobject Statementst=con.createStatement(); //SendSQLSELECTstatementstothedatabaseviatheStatement.executeQuery ResultSetresult_select=st.executeQuery(cmd_select); ResultSetresult_update=st.executeQuery(cmd_update); ResultSetresult_insert=st.executeQuery(cmd_insert); ResultSetresult_delete=st.executeQuery(cmd_delete); ResultSetresult_commit=st.executeQuery(cmd_commit); //Fetchvalueof"description"from"result_select"object. Stringdescription=""; while(result_select.next()){ description=result_select.getString("description"); } con.close(); }步驟1:從配置文件中獲取登錄數(shù)據(jù)庫的連接串,用戶名、密碼;fileName="config.xml"; url=parserFromXml(fileName,"url"); username=parserFromXml(fileName,"ldsuser"); password=parserFromXml(fileName,"ldspwd");步驟2:加載oracle數(shù)據(jù)庫驅動;Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 注:需要加載oracleJDBC的jar包到Eclipse的lib中下載地址:步驟3:登錄oracle數(shù)據(jù)庫;Connectioncon=DriverManager.getConnection(url,user,pwd);步驟4:創(chuàng)立Statement對象; Statementst=con.createStatement();步驟5:通過Statement對象執(zhí)行SQL語句; ResultSetresult_select=st.executeQuery(cmd_select); ResultSetresult_update=st.executeQuery(cmd_update); ResultSetresult_insert=st.executeQuery(cmd_insert); ResultSetresult_delete=st.executeQuery(cmd_delete); ResultSetresult_commit=st.executeQuery(cmd_commit); 步驟6:獲取測試人員關心的查詢結果;Stringdescription=""; while(result_select.next()){ description=result_select.getString("description"); }步驟7:關閉數(shù)據(jù)庫連接:con.close();注:如果不關閉數(shù)據(jù)庫連接可能帶來一些嚴重的問題。數(shù)據(jù)回滾腳本數(shù)據(jù)回滾腳本的根本原那么:數(shù)據(jù)回滾腳本需將自動化數(shù)據(jù)回滾到初始化狀態(tài);測試人員應該屏蔽系統(tǒng)歸檔/備份功能對測試數(shù)據(jù)的影響,例如可以通過修改創(chuàng)立日期使其永遠不會被歸檔或備份;自動化測試新生成的垃圾數(shù)據(jù),建議及時清理〔如delete語句〕,以免造成系統(tǒng)負載過大;建議測試邏輯涵蓋測試數(shù)據(jù)的整個生命周期,例如:案例A:新建測試機構Dept案例B:查詢測試機構Dept案例C:修改測試機構Dept案例D:刪除測試機構Dept數(shù)據(jù)回滾腳本應在每次執(zhí)行自動化測試案例前執(zhí)行。數(shù)據(jù)初始化腳本數(shù)據(jù)初始化腳本的根本原那么:自動化測試數(shù)據(jù)要與手動測試別離,如將自動化測試數(shù)據(jù)特定到某個特定條件,如某個機構或某天;自動化測試數(shù)據(jù)的命名應該顯著區(qū)別于手工測試數(shù)據(jù);數(shù)據(jù)初始化腳本要有備份,以便在數(shù)據(jù)庫發(fā)生變更后快速恢復測試數(shù)據(jù);數(shù)據(jù)初始化腳本不需要定期執(zhí)行,僅在新建測試環(huán)境或測試數(shù)據(jù)庫發(fā)生變更后執(zhí)行。配置文件管理配置文件內容范例自動化測試的配置文件用來存放一些參數(shù),例如:登錄URL、用戶名、密碼等,便于后續(xù)維護。配置文件范例如下:<?xmlversion="1.0"encoding="UTF-8"?><project><url></url><loginurl>/lds</loginurl><extendedUrl>/lds</extendedUrl><ip></ip><port>4444</port><browser>iexplore</browser><user1>jiangyujun001</user1><pwd1>jiangyujun001</pwd1><user2>DONGXIAOHUAN921</user2><pwd2>abcde123</pwd2><campaignName>

溫馨提示

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

評論

0/150

提交評論