您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 >
一個簡單的開源測試框架STAR的搭建
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2014/3/25 10:53:06 ] 推薦標(biāo)簽:開源 框架 測試

  ——基于Selenium、TestNG、Ant、ReportNG的測試框架

  搭建一個基于selenium的開源測試框架——不懂JAVA的孩紙你真苦逼啊,更何況你是個連eclipse都不會用的人啊有木有!在那個號稱懂中文的搜索引擎上啥都查不到啊有木有!而谷歌對大陸提供的搜索服務(wù)卻時斷時續(xù)啊有木有!連續(xù)兩周來,經(jīng)常臨下班之前的時候?qū)徱暤墓ぷ鞒晒麉s發(fā)現(xiàn)毫無進展啊有木有!剛剛調(diào)試通過一個組件想去擴展新功能的時候又一籌莫展了有木有!更坑爹的是,在命令行里面執(zhí)行居然和在eclipse里面執(zhí)行效果又不一樣啊有木有!

  網(wǎng)絡(luò)上已經(jīng)有無數(shù)人selenium的測試框架搭建給出了的解決方案,但是對于大部分與我類似的沒有編碼經(jīng)驗的人來說,要學(xué)習(xí)并且自己搭起一套可以隨時投入使用并且支持?jǐn)U展的框架,也許并不是那么容易的事。具體的細(xì)節(jié),要是沒有經(jīng)過親自操作,很可能碰到很多問題。不過終看到下面這個結(jié)果,一切的付出都是值得的,一切的糾結(jié)都可以跑到九霄云外。

  一、Eclipse工程的基礎(chǔ)配置

  1、第一所要做的事情與大部分eclipse工程新建一樣,是新建一個Java的project,根據(jù)需求定義好Java Build Path。本工程除了標(biāo)準(zhǔn)的JRE之外還需要加入如下JAR包的引用,至于這些包的版本,按道理說只要找個相對穩(wěn)定的即可,因為基本都是向下兼容的。這里JRE版本推薦6及以上,為了支持WebDriver的擴展需求,selenium不妨使用2.0或更高版本。

  2、將上面這些JAR包全部放入工程的lib目錄下,然后可以在project-->properties-->Java Build Path-->Libraries中通過“Add JARs”來加載所需要的包,如果不需要操作其中一個組件,則不需要加載對應(yīng)的JAR包。如,不操作數(shù)據(jù)庫,并且在要編譯的所有Java文件中不含對數(shù)據(jù)庫操作的方法,那么Build Path中不需要加入ojdbc的JAR包;同樣,如果不需要在代碼里操作selenium的服務(wù)器,那么也不需要加入selenium server的JAR包。

  二、Selenium的基礎(chǔ)配置

  工程建好之后開始填充代碼,我做的時候基本是邊學(xué)習(xí)邊從網(wǎng)上搜羅一些的代碼來為我所用。除了本公司同事已有的部分代碼外,主要在相關(guān)的開源網(wǎng)站上(如stackoverflow.com、svn.wikia-code.com和github.com等)學(xué)習(xí)別人處理一些問題的方法,這里推薦別人寫的一個功用類,也是我主要的思路和剽竊來源:svn.wikia-code.com上面的一個公用測試類BaseTest.java。

  1、初,我糾結(jié)于多個測試類如何串行,多虧陳能技老師提醒才想起selenium對象可以在一個父類里初始化單例返回,交給每個子測試類繼承,唉!不會Java的孩紙傷不起啊。不過這并不能解決多個類的串行問題,沒辦法了,整太復(fù)雜估計沒那實力,還是換個角度思考吧。終才發(fā)現(xiàn)原來自己鉆進了死胡同:為什么要串行多個測試類還要使用同一個selenium實例呢?還是簡單點,每個流程一個測試類吧,雖然長流程測試類要寫得比較長一些,但是有了TestNG,測試的組織將會比較簡單。下面是使用ThreadLocal的辦法返回selenium對象,準(zhǔn)備為以后多線程并發(fā)執(zhí)行的調(diào)度做兼容。

  如果不需要多線程并發(fā)測試執(zhí)行,那么不需要使用ThreadLocal,方法同樣簡單:

  2、我們知道,測試的時候可能會遇到有一些模態(tài)窗口和Windows彈出對話框、文件上傳、下載等selenium支持得不好的功能。我們通常較為普遍的方法是使用AutoIt編譯成對應(yīng)的可執(zhí)行程序,由Java來調(diào)用處理。我把這些可執(zhí)行程序放在工程下assist目錄下,編寫測試腳本的時候可以通過指定的Java方法來加載他們,可以實現(xiàn)對這些Windows對象的處理了。

  3、有人指出,selenium server的JAR包里面core/scripts/selenium-browserbot.js存在BUG,需要修改一下,其實修改了之后也并不能完全解決執(zhí)行過程中偶發(fā)的“沒有權(quán)限”問題。因此,我們需要多管齊下:

  A)修改這個js文件,重新丟進包里;

  B)如果使用ie測試,則盡量使用iehta模式;

  C)重寫一下click和type等方法,指定超時時間,在指定時間內(nèi)反復(fù)try。

  經(jīng)我個人實驗,這三種方法結(jié)合在一起基本不會再出現(xiàn)這個問題了,但愿不要再有我沒有發(fā)現(xiàn)的特殊情況了罷。而以click為例,重寫一個點擊的方法也比較簡單,參見如下代碼:

  4、配置好selenium之后,測試腳本開發(fā)可以開始了,進行調(diào)試自然不能忘了先啟動selenium server咯,至于server的配置、參數(shù)以及selenium的API,可以到網(wǎng)上搜索,很多私房菜和入門教程啥的,也是我們主要的學(xué)習(xí)來源了。除了上面提到的click和type的重寫,我們也會根據(jù)實際需要重寫很多公用的方法,這里不再一一列舉。有興趣或者有類似需求、問題的可以自己擴充,比如日歷控件等。

  5、在引入其他組件之前,先要確保自己開發(fā)的測試腳本在現(xiàn)有的公共類上能夠穩(wěn)定的單個運行,在eclipse里面用Junit的TestCase去進行簡單的測試即可。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd