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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

name為工程名稱;

default為默認(rèn)的target,就是任務(wù);

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

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

引用的時(shí)候這么引用${test}

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

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

name的值為target的名稱,可以在編譯的時(shí)候指定是完成哪個(gè)target,

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

depends那么定義了依賴關(guān)系,值為其他target的name。多個(gè)依賴關(guān)系用","隔開,

順序執(zhí)行完定義的依賴關(guān)系,才會(huì)執(zhí)行這個(gè)target。

target在build.xml中定義的順序無(wú)所謂,但是depends中的順序必須正確。構(gòu)建文件包括<project>元素,以及其中嵌套的<target>、<property>和<path>元素,下面是一個(gè)通用的構(gòu)建文件,它很適合作為一個(gè)模板。<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>關(guān)于構(gòu)建文件的考前須知:

●所有構(gòu)建文件都要有<project>元素,而且至少有一個(gè)<target>元素;●對(duì)于<project>元素的default屬性并沒有默認(rèn)值;●構(gòu)建文件并不一定要被命名為build.xml。不過(guò)build.xml是Ant要搜索的默認(rèn)文件名;●每個(gè)構(gòu)建文件只能有一個(gè)<project>元素。輸出測(cè)試報(bào)告樣式將xsl文件夾下,測(cè)試報(bào)告樣式模板中的“NETS-ITSADMIN〞全部替換成當(dāng)前測(cè)試系統(tǒng)名稱即可。AntBuildAnt的XML配置文件的結(jié)構(gòu)很簡(jiǎn)單,這也是Ant的一個(gè)優(yōu)點(diǎn),簡(jiǎn)單易懂,容易上手,Ant的配置文件主要由project,target和task三層樹型結(jié)構(gòu)組成。一般情況下,工程中的build.xml不需要修改,只需要根據(jù)當(dāng)前的目錄,修改配置文件perties即可。我們用到的build.xml,其中包含了4個(gè)任務(wù)〔target〕,分別是Junit、Compile、RunTest、DataClean,且按順序執(zhí)行,每個(gè)target的實(shí)現(xiàn),請(qǐng)結(jié)合4.2.2Ant根本語(yǔ)法參看模板文件〔build.xml〕。Junit:完成初始化;Compile:完成測(cè)試案例的編譯;RunTest:運(yùn)行測(cè)試案例,并生成測(cè)試報(bào)告;DataClean:清理測(cè)試數(shù)據(jù)。測(cè)試人員可根據(jù)執(zhí)行機(jī)上的實(shí)際目錄修改perties配置文件。perties中有6個(gè)參數(shù),如下:testSrc.dir=測(cè)試案例目錄;xsl.dir=測(cè)試報(bào)告樣式目錄;lib.dir=引用外部jar包和配置文件目錄;reports.dir=執(zhí)行機(jī)本地生成的測(cè)試報(bào)告目錄;run.classes=編譯后的測(cè)試案例目錄;use_jenkins=是否在使用Jenkins監(jiān)控〔yes/no〕;使用Jenkins管理自動(dòng)化測(cè)試任務(wù)Jenkins介紹Jenkins〔原Hudson〕是一款Java平臺(tái)的開源持續(xù)集成〔ContinuousIntegration,CI〕引擎。它易于安裝,配置簡(jiǎn)單,豐富的插件支持,高度的可擴(kuò)展性,強(qiáng)大的分布式構(gòu)建能力都讓它在眾多的CI引擎中脫穎而出。所以我們選用Jenkins來(lái)管理測(cè)試案例,以便以后進(jìn)行持續(xù)集成。Jenkins任務(wù)創(chuàng)立在Jenkins中創(chuàng)立任務(wù)的步驟如下:登陸Jenkins:://hcd-it-44:8000/jenkins/〔此地址后續(xù)可能會(huì)更改〕;新建任務(wù),根據(jù)測(cè)試系統(tǒng)填寫任務(wù)名稱,選擇構(gòu)建一個(gè)多配置工程,點(diǎn)擊OK〔參見圖4-2〕;圖STYLEREF1\s4SEQ圖\*ARABIC\s12選擇執(zhí)行機(jī):ConfigurationMatrix→Slaves→Individualnodes勾選執(zhí)行測(cè)試案例的執(zhí)行機(jī)〔參見圖4.3、圖4.4〕圖STYLEREF1\s4SEQ圖\*ARABIC\s13圖STYLEREF1\s4SEQ圖\*ARABIC\s14選擇構(gòu)建方式:Build→InvokeAnt〔參見圖4.5〕→Targets:build.xml文件中的default→BuildFile:執(zhí)行機(jī)上build.xml的路徑〔參見圖4.6〕。圖STYLEREF1\s4SEQ圖\*ARABIC\s15圖STYLEREF1\s4SEQ圖\*ARABIC\s16選擇打印輸出結(jié)果:Post-buildActions→PublishJUnittestresultreport→TestreportXMLs:/*/*.xml〔參見圖4.7〕圖STYLEREF1\s4SEQ圖\*ARABIC\s17Jenkins任務(wù)執(zhí)行選中建好的Jenkins任務(wù)〔NETS-ITSADMIN〕,點(diǎn)擊立即構(gòu)建,即可運(yùn)行測(cè)試案例〔參見圖4.8〕。圖STYLEREF1\s4SEQ圖\*ARABIC\s18Jenkins執(zhí)行結(jié)果查看案例執(zhí)行完之后,可以通過(guò)執(zhí)行狀態(tài),查看執(zhí)行結(jié)果。任務(wù)狀態(tài)及描述如圖4.9。圖STYLEREF1\s4SEQ圖\*ARABIC\s19在案例執(zhí)行的時(shí)候,也可進(jìn)入構(gòu)建狀態(tài),通過(guò)查看命令行輸出,進(jìn)行測(cè)試案例的監(jiān)控。參加圖4.10。圖STYLEREF1\s4SEQ圖\*ARABIC\s110數(shù)據(jù)管理自動(dòng)化測(cè)試流程圖自動(dòng)化測(cè)試的過(guò)程包括:測(cè)試數(shù)據(jù)準(zhǔn)備、測(cè)試腳本運(yùn)行、生成測(cè)試報(bào)告;其中測(cè)試數(shù)據(jù)準(zhǔn)備包括兩個(gè)步驟:JDBC連接數(shù)據(jù)庫(kù)、數(shù)據(jù)回滾腳本的運(yùn)行,如圖5-1所示。圖STYLEREF1\s5SEQ圖\*ARABIC\s11自動(dòng)化測(cè)試流程圖JDBC連接數(shù)據(jù)庫(kù)代碼范例JAVA的數(shù)據(jù)庫(kù)操作,需要先建立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ù)庫(kù)的連接串,用戶名、密碼;fileName="config.xml"; url=parserFromXml(fileName,"url"); username=parserFromXml(fileName,"ldsuser"); password=parserFromXml(fileName,"ldspwd");步驟2:加載oracle數(shù)據(jù)庫(kù)驅(qū)動(dòng);Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 注:需要加載oracleJDBC的jar包到Eclipse的lib中下載地址:步驟3:登錄oracle數(shù)據(jù)庫(kù);Connectioncon=DriverManager.getConnection(url,user,pwd);步驟4:創(chuàng)立Statement對(duì)象; Statementst=con.createStatement();步驟5:通過(guò)Statement對(duì)象執(zhí)行SQL語(yǔ)句; 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:獲取測(cè)試人員關(guān)心的查詢結(jié)果;Stringdescription=""; while(result_select.next()){ description=result_select.getString("description"); }步驟7:關(guān)閉數(shù)據(jù)庫(kù)連接:con.close();注:如果不關(guān)閉數(shù)據(jù)庫(kù)連接可能帶來(lái)一些嚴(yán)重的問(wèn)題。數(shù)據(jù)回滾腳本數(shù)據(jù)回滾腳本的根本原那么:數(shù)據(jù)回滾腳本需將自動(dòng)化數(shù)據(jù)回滾到初始化狀態(tài);測(cè)試人員應(yīng)該屏蔽系統(tǒng)歸檔/備份功能對(duì)測(cè)試數(shù)據(jù)的影響,例如可以通過(guò)修改創(chuàng)立日期使其永遠(yuǎn)不會(huì)被歸檔或備份;自動(dòng)化測(cè)試新生成的垃圾數(shù)據(jù),建議及時(shí)清理〔如delete語(yǔ)句〕,以免造成系統(tǒng)負(fù)載過(guò)大;建議測(cè)試邏輯涵蓋測(cè)試數(shù)據(jù)的整個(gè)生命周期,例如:案例A:新建測(cè)試機(jī)構(gòu)Dept案例B:查詢測(cè)試機(jī)構(gòu)Dept案例C:修改測(cè)試機(jī)構(gòu)Dept案例D:刪除測(cè)試機(jī)構(gòu)Dept數(shù)據(jù)回滾腳本應(yīng)在每次執(zhí)行自動(dòng)化測(cè)試案例前執(zhí)行。數(shù)據(jù)初始化腳本數(shù)據(jù)初始化腳本的根本原那么:自動(dòng)化測(cè)試數(shù)據(jù)要與手動(dòng)測(cè)試別離,如將自動(dòng)化測(cè)試數(shù)據(jù)特定到某個(gè)特定條件,如某個(gè)機(jī)構(gòu)或某天;自動(dòng)化測(cè)試數(shù)據(jù)的命名應(yīng)該顯著區(qū)別于手工測(cè)試數(shù)據(jù);數(shù)據(jù)初始化腳本要有備份,以便在數(shù)據(jù)庫(kù)發(fā)生變更后快速恢復(fù)測(cè)試數(shù)據(jù);數(shù)據(jù)初始化腳本不需要定期執(zhí)行,僅在新建測(cè)試環(huán)境或測(cè)試數(shù)據(jù)庫(kù)發(fā)生變更后執(zhí)行。配置文件管理配置文件內(nèi)容范例自動(dòng)化測(cè)試的配置文件用來(lái)存放一些參數(shù),例如:登錄URL、用戶名、密碼等,便于后續(xù)維護(hù)。配置文件范例如下:<?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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論