




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 秘密秘密第 1 頁 共 32 頁開源開源WEB自動(dòng)化測試自動(dòng)化測試實(shí)施指南實(shí)施指南說明: 1.本文件中“”中內(nèi)容為舉例和說明文字,請(qǐng)?jiān)谖募M制時(shí)替換或刪除;2.若文中某章節(jié)內(nèi)容可省略、不需要或適用,請(qǐng)保留該標(biāo)題,并根據(jù)實(shí)際在內(nèi)容部分寫明“略” 、“勿需”或“不適用”等,同時(shí)適當(dāng)說明原因;3.請(qǐng)作者注意在文檔右上角修改該文檔的密級(jí)。 秘密秘密第 2 頁 共 32 頁文件修訂歷史修訂時(shí)間修訂時(shí)間修訂說明修訂說明作者作者審核審核2011-8-5創(chuàng)建目錄岑海菊溫素劍2011-8-17章節(jié) 1、2、4、岑海菊溫素劍章節(jié) 3李穎、陳建紅、岑海菊溫素劍章節(jié) 5李穎溫素劍模板修訂歷史版本版本生效時(shí)間生效時(shí)間
2、變更概要變更概要作者作者審核審核批準(zhǔn)批準(zhǔn)1.0.02011-8-5創(chuàng)建自動(dòng)化測試方法文檔岑海菊 秘密秘密第 3 頁 共 32 頁目錄目錄1引言與概述引言與概述 .41.1背景 .41.2開源 WEB自動(dòng)化測試的優(yōu)勢(shì).41.2.1Selenium簡介.41.2.2Selenium的優(yōu)勢(shì).42開源開源 WEB 自動(dòng)化測試架構(gòu)自動(dòng)化測試架構(gòu).62.1基于 SELENIUM 2.0 的自動(dòng)化測試框架.62.2新 WEB自動(dòng)化測試代碼架構(gòu).73WEB 自動(dòng)化測試編寫自動(dòng)化測試編寫.83.1集成開發(fā)環(huán)境搭建 .83.1.1選擇底層實(shí)現(xiàn)方法.83.1.2eclipse配置.93.1.3項(xiàng)目環(huán)境配置.103.
3、2測試案例編寫 .133.2.1Selenese語法.143.2.2XPath介紹.143.2.3測試案例框架.164管理測試案例管理測試案例 .194.1測試工程目錄結(jié)構(gòu) .194.2使用 ANT運(yùn)行測試案例 .204.2.1Ant介紹.204.2.2Ant基本語法.204.2.3輸出測試報(bào)告樣式.214.2.4Ant Build.214.3使用 JENKINS管理自動(dòng)化測試任務(wù).224.3.1Jenkins介紹.224.3.2Jenkins任務(wù)創(chuàng)建.224.3.3Jenkins任務(wù)執(zhí)行.244.3.4Jenkins執(zhí)行結(jié)果查看.245數(shù)據(jù)管理數(shù)據(jù)管理 .255.1.1自動(dòng)化測試流程圖.25
4、5.1.2JDBC連接數(shù)據(jù)庫代碼范例.265.1.3數(shù)據(jù)回滾腳本.285.1.4數(shù)據(jù)初始化腳本.285.1.5配置文件管理.296疑難手冊(cè)疑難手冊(cè) .31附錄附錄ASELENIUM 2.0常用命令常用命令.32附錄附錄B案例文件、配置文件案例文件、配置文件DEMO.32附錄附錄CCC使用及培訓(xùn)資料使用及培訓(xùn)資料.32 秘密秘密第 4 頁 共 32 頁1引言與概述引言與概述1.1背景背景目前 QTP 是我司使用最廣泛的自動(dòng)化測試工具,在實(shí)際使用中發(fā)現(xiàn),QTP 存在以下不足之處:1)QTP 基于測試對(duì)象庫來識(shí)別測試對(duì)象,其內(nèi)部機(jī)制是不透明的,在實(shí)際工作中,對(duì)測試對(duì)象庫的維護(hù)工作量很大,耗費(fèi)了測試人
5、員大量的精力,效果卻并不好;2)QTP 的設(shè)計(jì)架構(gòu)決定了當(dāng)前測試腳本可復(fù)用性差,很難積累可重復(fù)使用的函數(shù)、組件、包等測試資產(chǎn);3)使用 QTP 的描述性編程來創(chuàng)建測試腳本,嚴(yán)重依賴于測試人員的個(gè)人經(jīng)驗(yàn)和技巧,難以大規(guī)模推廣;4)自動(dòng)化測試數(shù)據(jù)經(jīng)常失效,原因在于沒有統(tǒng)一的數(shù)據(jù)回滾措施。 基于商業(yè)自動(dòng)化測試工具 QTP 的錄制/回放模式,無法構(gòu)建健壯的自動(dòng)化測試腳本,所以我們迫切地需要新的工具來替換 QTP。當(dāng)前有多種開源自動(dòng)化測試工具可供選擇,Selenium 2.0 便是目前使用最廣泛的開源測試工具之一。1.2 開源開源 Web 自動(dòng)化測試的優(yōu)勢(shì)自動(dòng)化測試的優(yōu)勢(shì)1.2.1Selenium 簡介
6、簡介Selenium 是一系列基于 Web 的自動(dòng)化測試工具。Selenium 提供了一系列測試函數(shù)用于支持 Web 自動(dòng)化測試,這些函數(shù)非常靈活,他們能夠通過多種方式定位 UI 元素,并將預(yù)期結(jié)果與系統(tǒng)實(shí)際表現(xiàn)相比較,測試人員通過這些測試函數(shù)來模擬用戶操作,從而實(shí)現(xiàn)Web 自動(dòng)化測試。Selenium 2.0 集成了 WebDriver API,解決了 Selenium 1.0 的局限,二者相互彌補(bǔ),提供了更多可選的編程接口。1.2.2Selenium 的優(yōu)勢(shì)的優(yōu)勢(shì)QTP 的測試對(duì)象庫,對(duì)與測試人員來說是不透明的。圖 1-1 為構(gòu)建 QTP 自動(dòng)化測試腳本的流程,在使用 QTP 錄制測試腳本
7、的時(shí)候,測試人員根本不清楚測試對(duì)象庫中的測試對(duì)象是否有效,能否滿足需求,這給使用者帶來很大的困擾。 秘密秘密第 5 頁 共 32 頁圖 1-1 構(gòu)建 QTP 自動(dòng)化測試腳本的流程Selenium 2.0 具有很強(qiáng)的靈活性和很好的擴(kuò)展性,測試人員從頁面數(shù)據(jù)中提取對(duì)象,引入測試邏輯構(gòu)建測試腳本。通過這樣的方式,測試人員能夠確保測試對(duì)象的有效性,對(duì)測試對(duì)象的維護(hù)也更容易。圖 1-2 構(gòu)建 Selenium 2.0 自動(dòng)化測試腳本的流程對(duì)比 QTP 和 Selenium2.0 構(gòu)建自動(dòng)化測試腳本的流程圖,我們可以發(fā)現(xiàn),Selenium 不再基于錄制/回放模式來創(chuàng)建自動(dòng)化測試腳本,彌補(bǔ)了 QTP 的不足
8、:1)開源測試工具識(shí)別測試對(duì)象的機(jī)制是透明的,可以減少測試人員的維護(hù)工作量;2)采用開源測試工具,可以將需要重用的測試代碼打包到 jar 中。后續(xù)計(jì)劃引入配置管理,保證可重用 jar 包的質(zhì)量;3)采用 java 語言來編寫測試腳本,在測試對(duì)象識(shí)別得到保證的前提下,這并不是一 秘密秘密第 6 頁 共 32 頁件充滿技巧性的工作; 4)針對(duì)自動(dòng)化測試數(shù)據(jù)經(jīng)常失效的問題,新渠道目前的做法是將恢復(fù)測試數(shù)據(jù)的SQL 放在定時(shí) JOB 中,在自動(dòng)化測試運(yùn)行前恢復(fù)相關(guān)測試數(shù)據(jù)。除此之外,Selenium 2.0 在很多方面都優(yōu)于 QTP,如表 1-1 所示。表 1-1 QTP 與 Selenium 2.0
9、 的對(duì)比Selenium 2.0(開源)對(duì)比項(xiàng)QTP(商業(yè))SeleniumWebDriver購置成本昂貴免費(fèi)免費(fèi)測試對(duì)象識(shí)別機(jī)制不透明透明透明編碼語言VBSJavaPythonRuby 等多種語言Java代碼可重用性低高高腳本維護(hù)工作量高低低是否支持錄制/回放模式是是(功能較弱)否執(zhí)行效率低一般高測試腳本是否支持配置管理不支持支持支持是否支持訂制否是是2開源開源 Web 自動(dòng)化測試架構(gòu)自動(dòng)化測試架構(gòu)2.1基于基于 Selenium 2.0 的自動(dòng)化測試框架的自動(dòng)化測試框架圖 2-1 是基于 Selenium 2.0 的自動(dòng)化測試的整體框架(虛線代表尚未實(shí)現(xiàn)的功能):步驟 1:在開發(fā)人員提交代
10、碼后,持續(xù)集成引擎(Jenkins)會(huì)對(duì)最新的代碼進(jìn)行編譯和部署;步驟 2:Jenkins 從配置管理工具(SVN/CC)獲取測試腳本;步驟 3:Jenkins 調(diào)用 Ant 編譯測試腳本;步驟 4:Jenkins 調(diào)用 Ant 去運(yùn)行 Junit 測試案例;步驟 5:Junit 通過 Selenium 2.0 操作瀏覽器;步驟 6:Jenkins 輸出測試報(bào)告,并以郵件的形式向測試人員發(fā)送自動(dòng)化測試結(jié)果。 秘密秘密第 7 頁 共 32 頁持續(xù)集成引擎(Jenkins)AntJunitMailWebDriverSelenium ClientSelenium-RC瀏覽器(Browser)Sele
11、nium 2.0開發(fā)持續(xù)集成Report配置管理工具(SVN/CC)測試結(jié)果輸出圖 2-1 新 Web 自動(dòng)化測試整體框架2.2新新 Web 自動(dòng)化測試代碼架構(gòu)自動(dòng)化測試代碼架構(gòu)基于 Selenium 2.0 的 Web 自動(dòng)化測試,每個(gè)測試案例就是一個(gè) Junit Test Case。Junit測試案例,由測試數(shù)據(jù)和測試邏輯兩部分組成。測試邏輯最底層的實(shí)現(xiàn)是 Selenium2.0 庫,通過抽象和擴(kuò)展出 webtest 類。測試人員通過調(diào)用 webtest 類的方法,來構(gòu)建測試邏輯。關(guān) 秘密秘密第 8 頁 共 32 頁于測試數(shù)據(jù),請(qǐng)參考第 5 章數(shù)據(jù)管理。Junit Test CaseTes
12、t LogicWebtest Class(Jar)Selenium 2.0 libTest Data圖 2-2 新 Web 自動(dòng)化測試代碼框架3Web 自動(dòng)化測試編寫自動(dòng)化測試編寫3.1 集成開發(fā)環(huán)境搭建集成開發(fā)環(huán)境搭建3.1.1選擇底層實(shí)現(xiàn)方法選擇底層實(shí)現(xiàn)方法前面提到,Selenium 2.0 集成了 WebDriver 的 API,因此我們首先需要選擇底層的實(shí)現(xiàn)方法是 Selenium 還是 WebDriver。二者對(duì)比如表 3-1 所示,Selenium 提供了豐富的方法,支持多種瀏覽器,可以滿足各種各樣的測試邏輯需求,所以,一般情況下優(yōu)先選擇Selenium。但有些系統(tǒng)比較特殊,某些功
13、能 Selenium 無法支持,此時(shí)可考慮使用WebDriver。WebDriver 提供的方法雖不及 Selenium 多(如截屏等功能) ,但是也基本能滿足系統(tǒng)的要求,最主要的是它的執(zhí)行速度非常的快,這點(diǎn)是 Selenium 所望塵莫及的??偠灾?,還是要根據(jù)系統(tǒng)的實(shí)際情況,選擇合適的實(shí)現(xiàn)方法。 秘密秘密第 9 頁 共 32 頁表 3-1 Selenium 與 WebDriver 的對(duì)比對(duì)比項(xiàng)SeleniumWebDriver編碼語言JavaPythonRuby 等多種語言Java是否支持錄制/回放模式是否執(zhí)行效率一般高支持的瀏覽器IE、Firefox、Chrome、Safari、Oper
14、aIE、Firefox、Chrome提供的測試方法多基本3.1.2eclipse 配置配置新標(biāo)裝的電腦,Eclipse 配置已經(jīng)完成,請(qǐng)按照下述步驟檢查配置是否正確:步驟 1:設(shè)置電腦環(huán)境變量 JAVA_HOME:我的電腦(右鍵) 屬性 高級(jí) 環(huán)境變量 (系統(tǒng)變量)新建 ,進(jìn)行如下編輯:變量名:JAVA_HOME變量值(java 安裝的目錄):C:Program FilesJavajdk1.6.0_20 步驟 2:設(shè)置電腦環(huán)境變量 CLASSPATH:我的電腦(右鍵) 屬性 高級(jí) 環(huán)境變量 (系統(tǒng)變量)新建,進(jìn)行如下編輯:變量名:CLASSPATH變量值(java 安裝的目錄):.;%JAVA
15、_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;步驟 3:在 eclipse 中配置 java點(diǎn)擊 eclipse 菜單中 Window Preferences Java Installed JREs ,配置如圖 3-1。圖 3-1 Eclipse 中 JRES 配置圖 秘密秘密第 10 頁 共 32 頁3.1.3項(xiàng)目環(huán)境配置項(xiàng)目環(huán)境配置1)新建 Eclipse 項(xiàng)目FileNewProject(參見圖 3-2)Java ProjectNext(參見圖 3-3)Project Name(項(xiàng)目名 Webtest_Project,參見圖
16、 3-4)NextFinish(參見圖 3-5)圖 3-2圖 3-3輸入創(chuàng)建的工程名字 秘密秘密第 11 頁 共 32 頁圖 3-4圖 3-52)導(dǎo)入自動(dòng)化測試的 jar 包和相應(yīng)的 lib 庫 秘密秘密第 12 頁 共 32 頁ClasspathBuild PathConfigure Buid path(參見圖 3-6)LibrariesAdd External JARs加入 jarOK(參見圖 3-7)圖 3-6圖 3-7從官網(wǎng)上下載的 selenium,包含了 selenium-java-2.0b3.jar、selenium-java-2.0b3-srcs.jar和 libs,其中 se
17、lenium-java-2.0b3-srcs.jar 是源文件的 jar 包,不需要導(dǎo)入工程,其他包都要導(dǎo)入。所有需導(dǎo)入工程的 jar 包已整理在 Selenium0 2.0 中,詳細(xì)說明如下:a)webtest_selenium.jar/webtest_webdirver.jar(參見 3.1.1 章節(jié),根據(jù)選擇的實(shí)現(xiàn)方法加入對(duì)應(yīng)的 jar 包) ;b)加入 selenium-java-2.0b3.jar;c)加入 selenium-java-2.0b3 文件夾下 libs 里面的所有 jar;3)新建 package 包在 src 包文件夾下面建立一個(gè)屬于自己系統(tǒng)的 Web 自動(dòng)化測試的
18、package 包。包(package)的命名規(guī)范:全部小寫,測試代碼 package 為 com.paic.。例如:com.paic.its.demo。選中 src 資源包右鍵單擊NewPackage(參見圖 3-8)name(com.paic.its.demo)Finish(參見圖 3-9)圖 3-8圖 3-93.2 測試案例編寫測試案例編寫 秘密秘密第 14 頁 共 32 頁3.2.1Selenese 語法語法Selenium 提供了一套豐富的命令來測試你的 web 應(yīng)用,這套命令通常叫 Selenese。 它可以用于測試基于 HTML 標(biāo)簽的頁面元素,例如:鏈接,輸入框,下拉框,提交表
19、單,表格數(shù)據(jù)等。 (具體常用命令可以參見附錄 A)Selenese 命令調(diào)用格式主要包括三部分:Command(命令) 、Target(目標(biāo)) 、Value(值) ,下面通過個(gè)簡單的例子說明:selenium.type(j_username,username);此命令的目的是輸入登陸用戶名,具體解析如圖 3-10 所示:Command(命令)(命令) Target(目標(biāo))(目標(biāo)) Value(值)(值) 例1 selenium.type j_username username 圖 3-11 Selenese 命令調(diào)用格式圖Selenese 命令可以轉(zhuǎn)變?yōu)榫幊檀a,他可以同時(shí)支持包括 C#、ja
20、va、php、Perl 在內(nèi)的多種語言,這里我以 java 語言為例舉一個(gè)簡單的例子。這是一個(gè)系統(tǒng)登陸的案例,實(shí)現(xiàn)的功能包括:打開登陸界面-輸入登陸用戶名、密碼-點(diǎn)擊登陸。通過這個(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 username = gtdtest
21、115;/登陸用戶名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);/點(diǎn)擊登陸按鈕selenium.waitForPageToLoad(60000); /等待加載界面selenium.s
22、top(); /關(guān)閉selenium3.2.2XPath 介紹介紹XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進(jìn)行導(dǎo)航。它包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫,使用路徑表達(dá)式來選取,這些路徑表達(dá)式和我們?cè)诔R?guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似。Selenium 用 XPath 技術(shù)來記錄網(wǎng)頁元素的位置和屬性。下面通過個(gè)簡單的例子說明:在這個(gè)案例中我們要做的操作是選擇查詢結(jié)果中的第一條數(shù)據(jù),系統(tǒng)界面圖和代碼解 秘密秘密第 15 頁 共 32 頁析圖見圖 3-11 和圖 3-12。XPath 路徑為/tableid=questResult/tbody/tr1
23、/td1/input。圖 3-12 系統(tǒng)界面圖圖 3-13 代碼解析圖解析如下:1)路徑以雙斜線 / 開頭, 則表示選擇文檔中所有滿足雙斜線/之后規(guī)則的元素(無論層級(jí)關(guān)系),即尋找 table 下面所有滿足此路徑條件的數(shù)據(jù)。2)前綴 用于指定屬性,/tableid=questResult則表示在 table 下面查詢到滿足id=questResult的數(shù)據(jù),如圖 3-13 。圖 3-14 代碼解析圖3)以斜線 / 開始, 那么該路徑就表示到一個(gè)元素的絕對(duì)路徑,在此案例中/tbody/tr1/td1/input 則表示選擇在 tbody 下面第一行第一列的 input 數(shù)據(jù),如圖 3-14。 秘
24、密秘密第 16 頁 共 32 頁圖 3-15 代碼解析圖3.2.3測試案例框架測試案例框架Selenium 的開發(fā)提供的 SeleneseTestCase 是 Junit3 風(fēng)格的,所以我們的自動(dòng)化測試案例要符合 Junit3 的框架。Junit3 的測試案例,包括三個(gè)部分:測試方法 test*()、初始化函數(shù) setUp()和結(jié)束初始化函數(shù) tearDown()。這三者的執(zhí)行順序是:setUp()test*()tearDown()。此外,Junit3 在命名規(guī)范和繼承層次上有嚴(yán)格的要求:1)測試類測試類必須繼承 TestCase。SeleneseTestCase 是 TestCase 的子類
25、,所以在新建的測試類直接繼承 SeleneseTestCase 即可。2)測試方法測試方法必須是 Public,且以 test 開頭。為了使命名更為規(guī)范,測試方法名應(yīng)與測試案例的功能模塊相關(guān),如:測試保單查詢功能的測試方法寫為 testPolicySerch()。3)初始化函數(shù)測試案例中,必須包含初始化函數(shù) setUp()和 tearDown()。setUp()執(zhí)行在測試方法之前,我們統(tǒng)一將初始化瀏覽器,登陸測試系統(tǒng)的操作放在這一函數(shù)中,在每次測試方法運(yùn)行前執(zhí)行。tearDown()函數(shù)中統(tǒng)一放置關(guān)閉瀏覽器的操作,在測試方法之后執(zhí)行,結(jié)束當(dāng)前測試案例。新建測試案例的步驟如下:選中新建的 Pac
26、kage右鍵NewJunit Test Case(參見圖 3.15)NameFinish(參見圖 3.16) 秘密秘密第 17 頁 共 32 頁圖 3-16圖 3-17建好的 SeleneseTestCase,會(huì)提示“The type SeleneseTestCase is deprecated” ,根據(jù)提示增加“SuppressWarnings(deprecation)” ,忽略類已過時(shí)的警告。接下來完善我們的測試案例,根據(jù)命名規(guī)則,新建測試方法,重寫 setUp()和 tearDown(),詳見模板文件Demo.java。步驟簡單介紹如下:1)創(chuàng)建 webtest 類的對(duì)象webtest
27、itsTest = new webtest();2)重寫 setUp() 秘密秘密第 18 頁 共 32 頁setUp()需要完成 webtest 的初始化和測試系統(tǒng)的登陸。相關(guān)參數(shù)均從配置文件中讀?。▍⒁姷?5 章,數(shù)據(jù)管理) ,范例如下:public void setUp() throws Exception /-變量賦值-String fileName = config.xml;/配置文件名String ip = itsTest.parserFromXml(fileName, ip);/ipint port = Integer.parseInt(itsTest.parserFromXml
28、(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(fileName, user);/登陸用戶名String password = itsTe
29、st.parserFromXml(fileName, pwd);/登陸密碼/-測試初始化-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);/初始化3)重寫 tearDown()public void tearDown() th
30、rows Exception itsTest.close();/關(guān)閉瀏覽器,結(jié)束測試4)新建測試方法在不同的測試案例中,除了測試方法,其他基本大同小異。編寫測試方法的時(shí)候,要以測試邏輯為依據(jù),并結(jié)合 selenese 命令去實(shí)現(xiàn)測試邏輯。以 NETS-ITSADMIN 的名單批次查詢?yōu)槔?,測試方法編寫如下:/* * 測試方法 * throws Exception */public void testDemo() throws ExceptionString firMenu = Image2;/一級(jí)菜單String secMenu = link=名單批次查詢;/二級(jí)菜單String inputB
31、atchName = 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)擊 “名單管理”itsTest.click(secMenu);
32、/點(diǎn)擊 “名單批次查詢”itsTest.type(inputBatchName,valueBatchName);itsTest.click(btnSerch);/點(diǎn)擊查詢按鈕assertEquals(valueBatchName, itsTest.getText(resultBatchName); 秘密秘密第 19 頁 共 32 頁至此,一個(gè)測試案例就完成了,參照?qǐng)D 3.17 運(yùn)行測試案例。需要注意的是,如果使用的底層實(shí)現(xiàn)方法是 Selenium,要先啟動(dòng)Selenium server,啟動(dòng)命令如下:java jar selenium-server.jar圖 3-18 4管理測試案例管理測試案
33、例4.1 測試工程目錄結(jié)構(gòu)測試工程目錄結(jié)構(gòu)單個(gè)測試案例調(diào)試完畢之后,需將案例放到執(zhí)行機(jī)下的固定目錄,統(tǒng)一運(yùn)行和管理測試案例集?,F(xiàn)在我們使用的方案是通過 Jenkins 調(diào)用 Ant,完成測試案例的編譯和運(yùn)行。如圖 4-1,這是一個(gè)被測系統(tǒng)在執(zhí)行機(jī)上必須要有的文件和文件夾:src:測試案例源文件,直接復(fù)制 Eclipse 工程下的測試案例文件,后續(xù)將會(huì)統(tǒng)一從配置管理工具(CC/SVN)上取得。lib:需要用到的外部包和配置文件,即在 Eclipse 中加載到 Classpath 中的所有包和文件xsl:Ant 輸出的測試報(bào)告樣式,待 Jenkins 功能完善后,Ant 不需要輸出測試報(bào)告,則該文
34、件夾可以取消。樣式模板詳見:測試報(bào)告樣式模板。build.xml:Ant 的腳本文件,一般不作修改。perties:配置 Ant 的測試腳本,可以根據(jù)實(shí)際的目錄修改。模板詳見:腳本文件模板libxslsrc 測試案例源文件測試報(bào)告的樣式文件需要用到的外部jar包和配置文件pertiesAnt的腳本文件Ant的腳本文件的配置文件系統(tǒng)名稱圖 4-1 秘密秘密第 20 頁 共 32 頁4.2 使用使用 Ant 運(yùn)行測試案例運(yùn)行測試案例4.2.1Ant 介紹介紹Ant-Another Neat Tool,是一個(gè)基于 Java 的跨平臺(tái)構(gòu)建工具,作為一個(gè)優(yōu)秀
35、的構(gòu)建工具 Ant 有如下的優(yōu)點(diǎn):1)跨平臺(tái) -因?yàn)?ant 是使用 java 實(shí)現(xiàn)的,所以它跨平臺(tái);2)使用簡單-與 ant 的兄弟 make 比起來;3)語法清晰-同樣是和 make 相比。Ant 下載地址:/bindownload.cgi 4.2.2Ant 基本語法基本語法1)ant 的編譯文件默認(rèn)為 build.xml,一般無需改變。2)build.xml 的根節(jié)點(diǎn)為,一般格式如下:name 為工程名稱;default 為默認(rèn)的 target,就是任務(wù); basedir 就是基路徑。一般為.3)property 可以定義變量,一般格式如下:引用的
36、時(shí)候這么引用$test如果變量是路徑的話,則可以這么定義:4)定義 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 中定義的順序無所謂,但是 depends 中的順序必須正確。5)構(gòu)建文件包括元素,以及其中嵌套的、 和 元素,下面是一個(gè)通用的構(gòu)建文件,它很適合作為一個(gè)模板。 秘密秘密第 21 頁
37、共 32 頁關(guān)于構(gòu)建文件的注意事項(xiàng): 所有構(gòu)建文件都要有元素,而且至少有一個(gè) 元素; 對(duì)于 元素的 default 屬性并沒有默認(rèn)值; 構(gòu)建文件并不一定要被命名為 build.xml。不過 build.xml 是 Ant 要搜索的默認(rèn)文件名; 每個(gè)構(gòu)建文件只能有一個(gè) 元素。4.2.3輸出測試報(bào)告樣式輸出測試報(bào)告樣式將 xsl 文件夾下,測試報(bào)告樣式模板中的“NETS-ITSADMIN”全部替換成當(dāng)前測試系統(tǒng)名稱即可。4.2.4Ant BuildAnt 的 XML 配置文件的結(jié)構(gòu)很簡單,這也是 Ant 的一個(gè)優(yōu)點(diǎn),簡單易懂,容易上手,Ant 的配置文件主要由 project,target 和 t
38、ask 三層樹型結(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 基本語法參看模板文件(build.xml) 。Junit:完成初始化;Compile:完成測試案例的編譯;RunTest:運(yùn)行測試案例,并生成測試報(bào)告;DataClean:清理測試數(shù)據(jù)。測試人員可根據(jù)執(zhí)行機(jī)上的實(shí)際目錄修改
39、perties 配置文件。perties 中有6 個(gè)參數(shù), 如下:testSrc.dir=測試案例目錄;xsl.dir=測試報(bào)告樣式目錄;lib.dir=引用外部 jar 包和配置文件目錄;reports.dir=執(zhí)行機(jī)本地生成的測試報(bào)告目錄;run.classes=編譯后的測試案例目錄;use_jenkins=是否在使用 Jenkins 監(jiān)控(yes/no) ; 秘密秘密第 22 頁 共 32 頁4.3 使用使用 Jenkins 管理自動(dòng)化測試任務(wù)管理自動(dòng)化測試任務(wù)4.3.1Jenkins介紹介紹Jenkins(原 Hudson)是一款 Java 平臺(tái)的開源持續(xù)集成(Conti
40、nuous Integration,CI)引擎。它易于安裝,配置簡單,豐富的插件支持,高度的可擴(kuò)展性,強(qiáng)大的分布式構(gòu)建能力都讓它在眾多的 CI 引擎中脫穎而出。所以我們選用 Jenkins 來管理測試案例,以便以后進(jìn)行持續(xù)集成。4.3.2Jenkins任務(wù)創(chuàng)建任務(wù)創(chuàng)建在 Jenkins 中創(chuàng)建任務(wù)的步驟如下:1)登陸 Jenkins:http:/hcd-it-44:8000/jenkins/ (此地址后續(xù)可能會(huì)更改) ;2)新建任務(wù),根據(jù)測試系統(tǒng)填寫任務(wù)名稱,選擇構(gòu)建一個(gè)多配置項(xiàng)目,點(diǎn)擊OK(參見圖 4-2) ;圖 4-23)選擇執(zhí)行機(jī):Configuration MatrixSlavesIn
41、dividual nodes 勾選執(zhí)行測試案例的執(zhí)行機(jī)(參見圖 4.3、圖 4.4) 秘密秘密第 23 頁 共 32 頁圖 4-3圖 4-44)選擇構(gòu)建方式:BuildInvoke Ant(參見圖 4.5)Targets:build.xml 文件中的defaultBuild File:執(zhí)行機(jī)上 build.xml 的路徑(參見圖 4.6) 。圖 4-5圖 4-65)選擇打印輸出結(jié)果:Post-build Actions Publish JUnit test result report Test report XMLs:/*/*.xml(參見圖 4.7) 秘密秘密第 24 頁 共 32 頁圖 4
42、-74.3.3Jenkins任務(wù)執(zhí)行任務(wù)執(zhí)行選中建好的 Jenkins 任務(wù)(NETS-ITSADMIN) ,點(diǎn)擊立即構(gòu)建,即可運(yùn)行測試案例(參見圖 4.8) 。圖 4-84.3.4Jenkins執(zhí)行結(jié)果查看執(zhí)行結(jié)果查看案例執(zhí)行完之后,可以通過執(zhí)行狀態(tài),查看執(zhí)行結(jié)果。任務(wù)狀態(tài)及描述如圖 4.9。 秘密秘密第 25 頁 共 32 頁圖 4-9在案例執(zhí)行的時(shí)候,也可進(jìn)入構(gòu)建狀態(tài),通過查看命令行輸出,進(jìn)行測試案例的監(jiān)控。參加圖 4.10。圖 4-105數(shù)據(jù)管理數(shù)據(jù)管理5.1.1自動(dòng)化測試流程圖自動(dòng)化測試流程圖自動(dòng)化測試的過程包括:測試數(shù)據(jù)準(zhǔn)備、測試腳本運(yùn)行、生成測試報(bào)告;其中測試數(shù)據(jù)準(zhǔn)備包括兩個(gè)步驟
43、:JDBC 連接數(shù)據(jù)庫、數(shù)據(jù)回滾腳本的運(yùn)行,如圖 5-1 所示。 秘密秘密第 26 頁 共 32 頁JDBC連接數(shù)據(jù)庫運(yùn)行數(shù)據(jù)回滾腳本自動(dòng)化測試報(bào)告自動(dòng)化測試開始自動(dòng)化測試結(jié)束運(yùn)行測試腳本測試數(shù)據(jù)準(zhǔn)備圖 5-1 自動(dòng)化測試流程圖5.1.2JDBC 連接數(shù)據(jù)庫代碼范例連接數(shù)據(jù)庫代碼范例JAVA 的數(shù)據(jù)庫操作,需要先建立 DB 連接,然后在 DB 中執(zhí)行查詢、更新、插入、刪除等操作,并從查詢操作中獲取數(shù)據(jù)。代碼范例如下:public void DBTest() throws Exception 秘密秘密第 27 頁 共 32 頁String url; /Oracel DB URLString us
44、ername; /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 = insert into N_OTHER_TESTING;String cmd_delete = delete from N_O
45、THER_TESTING;String cmd_commit = commit;/-Fetch parameter from config file-fileName = config.xml;url = parserFromXml(fileName, url);username = parserFromXml(fileName, ldsuser);password = parserFromXml(fileName, ldspwd);/Load Oracle Server JDBC driver. Class.forName(oracle.jdbc.driver.OracleDriver).n
46、ewInstance();/ 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 QueryResultSet result_select = st.executeQuery(cmd_select);ResultSet re
47、sult_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 result_select object.String description = ;while (result_selec
48、t.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ù)庫驅(qū)動(dòng);Class.forName(oracle.jdbc.driver.
49、OracleDriver).newInstance();注:需要加載 oracle JDBC 的 jar 包到 Eclipse 的 lib 中下載地址:http:/ 步驟 3:登錄 oracle 數(shù)據(jù)庫;Connection con = DriverManager.getConnection(url, user, pwd);步驟 4:創(chuàng)建 Statement 對(duì)象;Statement st= con.createStatement(); 秘密秘密第 28 頁 共 32 頁步驟 5:通過 Statement 對(duì)象執(zhí)行 SQL 語句;ResultSet result_select = st.exe
50、cuteQuery(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);步驟 6:獲取測試人員關(guān)心的查詢結(jié)果;String description = ;while (result_select.
51、next() description = result_select.getString(description);步驟 7:關(guān)閉數(shù)據(jù)庫連接:con.close();注:如果不關(guān)閉數(shù)據(jù)庫連接可能帶來一些嚴(yán)重的問題。5.1.3數(shù)據(jù)回滾腳本數(shù)據(jù)回滾腳本數(shù)據(jù)回滾腳本的基本原則:數(shù)據(jù)回滾腳本需將自動(dòng)化數(shù)據(jù)回滾到初始化狀態(tài);測試人員應(yīng)該屏蔽系統(tǒng)歸檔/備份功能對(duì)測試數(shù)據(jù)的影響,例如可以通過修改創(chuàng)建日期使其永遠(yuǎn)不會(huì)被歸檔或備份;自動(dòng)化測試新生成的垃圾數(shù)據(jù),建議及時(shí)清理(如 delete 語句) ,以免造成系統(tǒng)負(fù)載過大;建議測試邏輯涵蓋測試數(shù)據(jù)的整個(gè)生命周期,例如:案例 A:新建測試機(jī)構(gòu) Dept案例 B:查
52、詢測試機(jī)構(gòu) Dept案例 C:修改測試機(jī)構(gòu) Dept案例 D:刪除測試機(jī)構(gòu) Dept數(shù)據(jù)回滾腳本應(yīng)在每次執(zhí)行自動(dòng)化測試案例前執(zhí)行。5.1.4數(shù)據(jù)初始化腳本數(shù)據(jù)初始化腳本數(shù)據(jù)初始化腳本的基本原則:1)自動(dòng)化測試數(shù)據(jù)要與手動(dòng)測試分離,如將自動(dòng)化測試數(shù)據(jù)特定到某個(gè)特定條件,如某個(gè)機(jī)構(gòu)或某天;2)自動(dòng)化測試數(shù)據(jù)的命名應(yīng)該顯著區(qū)別于手工測試數(shù)據(jù);3)數(shù)據(jù)初始化腳本要有備份,以便在數(shù)據(jù)庫發(fā)生變更后快速恢復(fù)測試數(shù)據(jù);4)數(shù)據(jù)初始化腳本不需要定期執(zhí)行,僅在新建測試環(huán)境或測試數(shù)據(jù)庫發(fā)生變更后執(zhí)行。 秘密秘密第 29 頁 共 32 頁5.1.5配置文件管理配置文件管理1)配置文件內(nèi)容范例自動(dòng)化測試的配置文件用來存放一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 給水工程維修協(xié)議書范本
- 汽車質(zhì)押貸款信用評(píng)估協(xié)議
- 車庫租賃合同及車位分配管理協(xié)議
- 車位買賣合同補(bǔ)充協(xié)議(含車位租賃期限約定)
- 咖啡館門面房租賃管理服務(wù)合同
- 高端酒店客房管理承包經(jīng)營合同范本
- 廚房安全工作協(xié)議書范本
- 生態(tài)旅游項(xiàng)目投資建設(shè)合同
- 房屋裝修保修協(xié)議書范本
- 沿街商鋪?zhàn)赓U合同參考范本
- 應(yīng)急搶修合同協(xié)議書
- 廣西桂林市2025年八年級(jí)下學(xué)期語文期末試卷及答案
- 重慶大學(xué)面試真題及答案
- 課程思政說課公務(wù)員制度講座情境創(chuàng)設(shè)下雙線四點(diǎn)的課程思政融入設(shè)計(jì)
- 2025年浙江省臺(tái)州市中考一模英語試題(含答案)
- 食材采購配送投標(biāo)方案
- 2025年全國危險(xiǎn)化學(xué)品經(jīng)營單位安全管理人員考試試題(400題)附答案
- 飼料行業(yè)粉塵防爆
- 寵物醫(yī)院用工合同協(xié)議
- 預(yù)制菜烹飪知識(shí)培訓(xùn)課件
- 大規(guī)模網(wǎng)絡(luò)流量分析技術(shù)-全面剖析
評(píng)論
0/150
提交評(píng)論