開(kāi)源Web自動(dòng)化測(cè)試指南_第1頁(yè)
開(kāi)源Web自動(dòng)化測(cè)試指南_第2頁(yè)
開(kāi)源Web自動(dòng)化測(cè)試指南_第3頁(yè)
開(kāi)源Web自動(dòng)化測(cè)試指南_第4頁(yè)
開(kāi)源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)介

1、文件修訂歷史修訂時(shí)間修訂說(shuō)明作者審核2011-8-5創(chuàng)建目錄岑海菊溫素劍2011-8-17章節(jié)1、2、4、岑海菊溫素劍章節(jié)3李穎、陳建紅、岑海菊溫素劍章節(jié)5李穎溫素劍模板修訂歷史版本生效時(shí)間變更概要作者審核批準(zhǔn)1.0.02011-8-5創(chuàng)建自動(dòng)化測(cè)試方法文檔岑海菊目錄 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開(kāi)源Web

2、自動(dòng)化測(cè)試的優(yōu)勢(shì) PAGEREF _Toc301513136 h 4 HYPERLINK l _Toc301513137 1.2.1Selenium簡(jiǎn)介 PAGEREF _Toc301513137 h 4 HYPERLINK l _Toc301513138 1.2.2Selenium的優(yōu)勢(shì) PAGEREF _Toc301513138 h 4 HYPERLINK l _Toc301513139 2開(kāi)源Web自動(dòng)化測(cè)試架構(gòu) PAGEREF _Toc301513139 h 6 HYPERLINK l _Toc301513140 2.1基于Selenium 2.0的自動(dòng)化測(cè)試框架 PAGEREF _T

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

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

5、149 h 14 HYPERLINK l _Toc301513150 3.2.3測(cè)試案例框架 PAGEREF _Toc301513150 h 16 HYPERLINK l _Toc301513151 4管理測(cè)試案例 PAGEREF _Toc301513151 h 19 HYPERLINK l _Toc301513152 4.1測(cè)試工程目錄結(jié)構(gòu) PAGEREF _Toc301513152 h 19 HYPERLINK l _Toc301513153 4.2使用Ant運(yùn)行測(cè)試案例 PAGEREF _Toc301513153 h 20 HYPERLINK l _Toc301513154 4.2.1A

6、nt介紹 PAGEREF _Toc301513154 h 20 HYPERLINK l _Toc301513155 4.2.2Ant基本語(yǔ)法 PAGEREF _Toc301513155 h 20 HYPERLINK l _Toc301513156 4.2.3輸出測(cè)試報(bào)告樣式 PAGEREF _Toc301513156 h 21 HYPERLINK l _Toc301513157 4.2.4Ant Build PAGEREF _Toc301513157 h 21 HYPERLINK l _Toc301513158 4.3使用Jenkins管理自動(dòng)化測(cè)試任務(wù) PAGEREF _Toc3015131

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

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

9、oc301513167 h 28 HYPERLINK l _Toc301513168 5.1.5配置文件管理 PAGEREF _Toc301513168 h 29 HYPERLINK l _Toc301513169 6疑難手冊(cè) 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使用及培訓(xùn)資料 PAGEREF _Toc301513172 h 32 HYPERLINK l _引言與概述 引言與概述背景目前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ù)工作量很大,耗費(fèi)了測(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)常失效,原因在于沒(méi)有統(tǒng)

11、一的數(shù)據(jù)回滾措施。 基于商業(yè)自動(dòng)化測(cè)試工具QTP的錄制/回放模式,無(wú)法構(gòu)建健壯的自動(dòng)化測(cè)試腳本,所以我們迫切地需要新的工具來(lái)替換QTP。當(dāng)前有多種開(kāi)源自動(dòng)化測(cè)試工具可供選擇,Selenium 2.0 便是目前使用最廣泛的開(kāi)源測(cè)試工具之一。開(kāi)源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è)試。Selenium 2.0集成了WebDriver

12、API,解決了Selenium 1.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)很大的困擾。圖 STYLEREF 1 s 1 SEQ 圖 * ARABIC s 1 1構(gòu)建QTP自動(dòng)化測(cè)試腳本的流程Selenium 2.0具有很強(qiáng)的靈活性和很好的擴(kuò)展性,測(cè)試人員從頁(yè)面數(shù)據(jù)中提取對(duì)象,引入測(cè)試邏輯構(gòu)建測(cè)試腳本。通過(guò)這樣的方式,測(cè)試人員能夠確保測(cè)試對(duì)象的有效性,對(duì)測(cè)試對(duì)象的維

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

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

15、持支持是否支持訂制否是是開(kāi)源Web自動(dòng)化測(cè)試架構(gòu)基于Selenium 2.0的自動(dòng)化測(cè)試框架圖2-1是基于Selenium 2.0的自動(dòng)化測(cè)試的整體框架(虛線代表尚未實(shí)現(xiàn)的功能):步驟1:在開(kāi)發(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ò)Selenium 2.0操作瀏覽器;步驟6:Jenkins輸出測(cè)試報(bào)告,并以郵件的形式向測(cè)試人員發(fā)送自動(dòng)化測(cè)試結(jié)果。圖 STYLEREF

16、1 s 2 SEQ 圖 * ARABIC s 1 1新Web自動(dòng)化測(cè)試整體框架新Web自動(dòng)化測(cè)試代碼架構(gòu)基于Selenium 2.0的Web自動(dòng)化測(cè)試,每個(gè)測(cè)試案例就是一個(gè)Junit Test Case。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ù)管理。圖 STYLEREF 1 s 2 SEQ 圖 * ARABIC s 1 2 新Web自動(dòng)化測(cè)試代碼框架Web自動(dòng)化測(cè)試編寫 集成開(kāi)發(fā)環(huán)境搭建選擇底層實(shí)現(xiàn)方法前面提到,Se

17、lenium 2.0集成了WebDriver的API,因此我們首先需要選擇底層的實(shí)現(xiàn)方法是Selenium還是WebDriver。二者對(duì)比如表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)方法。表 STYL

18、EREF 1 s 3 SEQ 表 * ARABIC s 1 1 Selenium與WebDriver的對(duì)比對(duì)比項(xiàng)SeleniumWebDriver編碼語(yǔ)言JavaPythonRuby等多種語(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_HOM

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

20、RABIC s 1 1 Eclipse中JRES配置圖項(xiàng)目環(huán)境配置新建Eclipse項(xiàng)目FileNewProject(參見(jiàn)圖3-2)Java ProjectNext(參見(jiàn)圖3-3)Project Name(項(xiàng)目名Webtest_Project,參見(jiàn)圖3-4)NextFinish(參見(jiàn)圖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導(dǎo)入自動(dòng)化測(cè)試的jar包和相應(yīng)的lib庫(kù)ClasspathBuild PathConfigure Buid path(參見(jiàn)圖3-6)LibrariesAdd External JARs加入jarOK(參見(jiàn)圖3-7)圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 6圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 7從官網(wǎng)上下載的selenium,包含了selenium-java-2.0b3.jar、selenium-java-2.0b3-srcs.jar和libs,其中selenium-java-2.0b3-srcs.jar是源文件的jar

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

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

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

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

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

27、 /等待加載界面selenium.stop(); /關(guān)閉seleniumXPath介紹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)界面圖和代碼解析圖見(jiàn)圖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 代碼解析圖解析如下:路徑以雙斜線 / 開(kāi)頭, 則表示選擇文檔中所有滿足雙斜線/之后規(guī)則的元素(無(wú)論層級(jí)關(guān)系),即尋找table下面所有滿足此路徑條件的數(shù)據(jù)。前綴 用于指定屬性,/tableid=questResult則表示在table下面查詢到滿足id=questResult的數(shù)據(jù),如圖3-13 。圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 13 代碼解析圖以斜線 / 開(kāi)始, 那么該路徑就表示到一個(gè)元素的絕對(duì)路

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

30、求:測(cè)試類測(cè)試類必須繼承TestCase。SeleneseTestCase是TestCase的子類,所以在新建的測(cè)試類直接繼承SeleneseTestCase即可。測(cè)試方法測(cè)試方法必須是Public,且以test開(kāi)頭。為了使命名更為規(guī)范,測(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è)試

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

32、試方法,重寫setUp()和tearDown(),詳見(jiàn)模板文件Demo.java。步驟簡(jiǎn)單介紹如下:創(chuàng)建webtest類的對(duì)象webtest itsTest = new webtest();重寫setUp()setUp()需要完成webtest的初始化和測(cè)試系統(tǒng)的登陸。相關(guān)參數(shù)均從配置文件中讀取(參見(jiàn)第5章,數(shù)據(jù)管理),范例如下: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);/端口號(hào)String browser = itsTest.parserFromXml(fileName, browser);/瀏覽器String baseUrl = itsTest.parserFromXml(fileName, url);/基本URLString extendedUrl = itsTest.parserFromXml(fileName, extendedUrl);/擴(kuò)展URLString username = itsTest.parserFromXml(fi

34、leName, user);/登陸用戶名String password = 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);/初始化重寫t

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

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

37、名單管理”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)HYPERLINK hcd-it-290ShareSelenium 2.0Selenium server,啟動(dòng)命令如下:jav

38、a jar selenium-server.jar圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 17 管理測(cè)試案例測(cè)試工程目錄結(jié)構(gòu)單個(gè)測(cè)試案例調(diào)試完畢之后,需將案例放到執(zhí)行機(jī)下的固定目錄,統(tǒng)一運(yùn)行和管理測(cè)試案例集。現(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

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

40、a的跨平臺(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下載地址: HYPERLINK /bindownload.cgi /bindownload.cgi Ant基本語(yǔ)法ant的編譯文件默認(rèn)為build.xml,一般無(wú)需改變。build.xml的根節(jié)點(diǎn)為,一般格式如下:name為工程名稱;default為默認(rèn)的target,就是任務(wù);basedir就是基路徑。一般為.property可以定義變量,一般格式如下:引用的時(shí)候這么引用$test如果變量是路徑的話

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

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

43、et),分別是Junit、Compile、RunTest、DataClean,且按順序執(zhí)行,每個(gè)target的實(shí)現(xiàn),請(qǐng)結(jié)合4.2.2Ant基本語(yǔ)法參看模板文件(HYPERLINK hcd-it-290ShareSelenium 2.0build.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包和配

44、置文件目錄;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)的開(kāi)源持續(xù)集成(Continuous Integration,CI)引擎。它易于安裝,配置簡(jiǎn)單,豐富的插件支持,高度的可擴(kuò)展性,強(qiáng)大的分布式構(gòu)建能力都讓它在眾多的CI引擎中脫穎而出。所以我們選用Jenkins來(lái)管理測(cè)試案例,以便以后進(jìn)行持續(xù)集成。Jenkins任務(wù)創(chuàng)建在Jenkins中創(chuàng)建任務(wù)的步驟如下:登陸Je

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

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

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

48、的時(shí)候,也可進(jìn)入構(gòu)建狀態(tài),通過(guò)查看命令行輸出,進(jìn)行測(cè)試案例的監(jiān)控。參加圖4.10。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 10數(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所示。圖 STYLEREF 1 s 5 SEQ 圖 * ARABIC s 1 1 自動(dòng)化測(cè)試流程圖JDBC連接數(shù)據(jù)庫(kù)代碼范例JAVA的數(shù)據(jù)庫(kù)操作,需要先建立DB連接,然后在DB中執(zhí)行查詢、更新、插入、刪除等操作,并從查詢操作中獲取數(shù)據(jù)。代碼范例如下: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:從配置文件中獲取登錄數(shù)據(jù)庫(kù)的連接串,用戶名、密碼;fileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspw

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

55、Statement();步驟5:通過(guò)Statement對(duì)象執(zhí)行SQL語(yǔ)句;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:獲取測(cè)試人員關(guān)心的查詢結(jié)果;String description = ;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ā)生變更

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論