qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          利用Hudson持續集成來執行Android自動化測試

           當你套用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 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

          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 赣榆县| 通河县| 广州市| 临湘市| 洛浦县| 繁峙县| 长顺县| 息烽县| 五常市| 买车| 河曲县| 邛崃市| 东兰县| 禄丰县| 故城县| 时尚| 平利县| 鄂伦春自治旗| 霍邱县| 孝义市| 乌兰县| 岳阳市| 庆元县| 林西县| 莎车县| 田林县| 如皋市| 乐山市| 梨树县| 泸溪县| 大宁县| 安义县| 台南县| 桓台县| 凌云县| 共和县| 陕西省| 政和县| 平南县| 安龙县| 晴隆县|