利用Hudson持續整合來執行Android自動化測試

來源:互聯網
上載者:User

當你套用Athrun、Robotium等架構,針對自己的項目寫完了一堆自動化測試指令碼後,在Eclipse之外怎麼讓它們可以持久性地跑起來並展現報告呢?

據我瞭解,方便的方法大致有兩個:其一,利用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裡)

Java Options:這個不常用,可以點擊輸入框旁的問號參看協助。

這個部分肯定是要和項目的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 rootadb 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",填入相關人郵箱,按需勾選子選項即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.