利用Hudson持續集成來執行Android自動化測試
據我了解,方便的方法大致有兩個:其一,利用Hudson(或Jenkins)持續集成系統;其二、利用Testin或東軟易測云等第三方云測試平臺達成。
本文以Hudson在Windows系統的環境搭建為例。
一、安裝篇
1、安裝JDK,推薦1.6版本
這個一般做Android的開發、測試都會裝了,但要注意配好環境變量,即將jdk的bin目錄加到Path里,將jdk目錄加入JAVA_HOME
2、安裝ant
http://ant.apache.org/bindownload.cgi,解壓到本地合適目錄,如D:\apache-ant-1.8.4
3、安裝tomcat
http://tomcat.apache.org/download-70.cgi,解壓到本地適當目錄,如D:\apache-tomcat-7.0.30
4、安裝hudson
http://java.net/projects/hudson/downloads/directory/war,將下載到的war包更名為 hudson.war(這個名字關系到訪問的URL地址,也可以是別的),拷貝到tomcat的\webapps目錄下,如D:\apache- tomcat-7.0.30\webapps
至此,只要啟動tomcat/bin/startup.bat,就可以在瀏覽器里用http://127.0.0.1:8080/hudson對hudson服務進行訪問了。
二、配置篇
打開hudson配置界面(主頁 - 系統管理 - 系統設置)
1、配置好JDK,名稱任意,JAVA_HOME填準確。
2、配置好ANT,名稱任意,ANT_HOME填準確。
3、拉到最下面,郵件通知部分,SMTP、用戶默認郵件后綴、系統管理員郵件都按照公司實際情況配好,Hudson URL填成http://本機IP:8080/hudson/,這樣同局域網內的其他用戶就可以訪問你配置的Hudson服務了。
同時點開Advanced,勾選"使用SMTP",使用你在公司域內的郵箱地址和密碼,SMTP端口一般選擇默認的25,Charset填寫"UTF-8",這樣測試結果才會以你的郵箱發出給相關人。
打開hudson插件界面(主頁 - 系統管理 - 管理插件 - 可選插件)
搜索以下幾個插件并安裝:
1、Hudson Subversion Plug-in,顧名思義,SVN插件。
2、JUnit Attachments Plugin,junit測試報告附件插件。
3、Android Emulator Plugin,如果要用Android模擬器來測試的話,這個是要裝上的。
4、Hudson GIT plugin,如果團隊是用Git來同步代碼的話,那這個也裝上。
5、Email-ext plugin,郵件發送定制插件。Hudson默認只在構建失敗(或從失敗轉向成功)后發送提醒郵件;使用這個插件可以定制發送郵件的不同情景。
其它都按需安裝嘍。
新建任務 - 主項目(被測項目)打包任務
1、構建一個自由風格的項目,名稱合適取。
2、Source Code Management部分,選Subversion,Repository URL里面填寫你主體項目的SVN地址,其它選默認就行了。
3、Build trigger部分,勾選Build periodically可以使版本定時構建,語法和Unix的crontab一樣。勾選Poll SCM則是定期去SVN或CVS的workspace去檢查,如果有更新更構建。
4、Build Environment部分,如果是用模擬器來測試的話,就勾選"Run an Android emulator during build"。
5、Build部分,最關鍵的部分來了。
Ant version:選Default就行;
Targets:要應用的ant target名稱,也可以是名稱列表(多個名稱用空格分隔),如果什么都不寫的話,就是build腳本中的默認那個任務;
Build File:有時候我們未必用ant默認找的build.xml來編譯,那就用這個選項來自定義腳本路徑和名稱,如build4test.xml;
Properties:這里用來寫build腳本運行時需要的一些參數。其效果等同于在項目的workspace下建一個ant.properties 文件,然后在build腳本里加入<property file="ant.properties" />。其實說起來肯定是后一種方法更靈活,但有時為了安全起見(比如不把key.store.password泄漏出去),就把這些屬性寫在 Hudson服務端。(事實上這些屬性都記錄在該項目的config.xml里)
這個部分肯定是要和項目的build腳本結合起來的,所以build腳本的編寫也是關鍵的地方。Ant腳本的內涵很深,用的好的話它可以完成的 事情超乎你想象,有必要下工夫研究一下。這里Google已經幫咱們寫好了一個功能很強大的build腳本,如果沒有特殊的定制需求,我們可以直接引用它 里面的target。這個腳本是在Android_SDK目錄/tools/ant/下的build.xml,里面有三個很重要的 target:debug, release, install。
debug是用debug key打包,速度相對較快,測試時建議選用。release是用release key打包,速度齁慢,發布版本時必然打的是release包。另外測試時打release包還有個好處是利于和已發布版本的包進行覆蓋安裝。 install顧名思義很容易理解,但前提是debug或release任務已經得到應用。因為我們要構建包用于自動化測試,所以這里建議用的 target組合是debug install,即在上面說的Targets部分填入"debug install"。
用"android update project -p 項目路徑"命令可以幫你在project目錄下建立一個build.xml,當然你完全可以根據項目的需要自己定制Build腳本,要引用Google現 成target的關鍵是在build腳本里加入這樣一句話:
<import file="${sdk.dir}/tools/ant/build.xml" /> |
當然sdk.dir這個property需要提前定義好。
6、構建完成后操作:因為主項目構建完成后需要啟動測試項目的構建,所以在Build other projects里面填寫測試項目(如果還沒建好就等建好了回頭再來填)
其它的像Publish JUnit test result report和E-mail Notification等選項都要在測試項目中定義,所以這里就不勾選了。
新建任務 - 測試項目打包與執行任務
1、1-4步基本是相通的,不再贅述。
2、第5步,用ant完成debug install后,因為要執行測試,所以我們需要定義一個用于測試的任務。可以用類似下面的代碼:
<target name="gotest" depends="stormtestinstall"> <echo message="Start Testing======================================="/> <exec executable="adb" failonerror="true"> <arg value="shell"/> <arg value="am"/> <arg value="instrument"/> <arg value="-w"/> <arg value="-e"/> <arg value="class"/> <arg value="com.storm.smart.athtest._AllTestSuite"/> <arg value="com.storm.smart.test/pl.polidea.instrumentation.PolideaInstrumentationTestRunner"/> </exec> <echo message="End Testing=========================================="/> </target> |
這樣的話我們可以在Targets輸入框填入debug install gotest,即先打debug包,再安裝,再執行測試。
3、測試完成后,我們需要把測試報告從手機里拷貝出來,這里用一個bat來完成:點擊"Add build step",選擇"Excute Windows batch command",在輸入框內填入(pull-test-result.bat)。這個bat的內容類似下面這樣:
adb root adb shell mount -o remount rw / adb pull /data/data/com.storm.smart/files/com.storm.smart.athtest-TEST.xml |
4、構建完成后操作:首先我們需要把拿到的xml初始報告文件格式化成友好的格式,然后將結果郵件通知給相關人員。
對應地,勾選"Publish Junit test result report"項,在Test report XMLs里填入*-TEST.xml;勾選"E-mail Notification",填入相關人郵箱,按需勾選子選項即可。
至此,整個配置告一段落。
posted on 2013-05-27 11:11 順其自然EVO 閱讀(2207) 評論(0) 編輯 收藏 所屬分類: android