<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

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

    Android集成測試

     Android集成測試主要是在單元測試的基礎上測試接口訪問或者異步任務是否正確,在移動鳳巢系統中,大概有30+個接口需要測試,他們都遵循一個特定的訪問模式:前臺的Activity獲取到觸發事件后,將它傳給這些接口,這些接口都是AsyncTask的實現——即后臺異步線程執行某個任務(一般是發送http請求到后端服務或者執行存取數據庫等耗時操作),完畢后調用回調函數,示意圖如下:

      一、測試框架

      對于Android中這種異步接口的自動化測試需要解決3個問題:

      1)如何獲取到異步任務執行結果;

      2)如何讓上層測試代碼盡量不處理任務等待;

      3)如何處理需要登錄的接口。

      對于問題1)每個異步任務在獲取結果后就直接調用onPostExecute()方法了,測試代碼獲取不到結果,所以必須有一個專門的樁Activity負責異步任務的執行并將結果暴露出來;

      對于問題2)盡量將等待操作交給測試基類,上層測試代碼只需要執行被測邏輯;

      對于問題3)采用模板模式,如果接口需要登錄則先執行登錄操作后再調用,整體解決方案如下:

      其中樁Activity的邏輯如下,它實際決定接口的調用方式,如果被測接口需要登錄則先登錄后調用,如果不需要登錄則直接調用。



      可以看到isCompleted是標識異步任務是否執行完畢的,無論異步任務返回是onSuccess、onError還是onIOException都會進行置位;result則是異步調用的返回,可以看到這里無論接口調用是成功、失敗還是io異常都會將這個結果暴露出來以使測試代碼能夠獲取到;

      interfaceAction是測試代碼需要實現的接口,內容如下:

      由于有些接口是必須登錄才能訪問的,所以前兩個接口實現是為其服務的,如果訪問的接口必須處于登錄狀態則先調用login()方法,然后再調用實際的action()方法。另外,書寫測試代碼的時候為了減少對異步任務等待的代碼以及顯示對InterfaceActivity這個樁Activity

      的調用還需要完善測試基類:這樣上層test case只需要關心具體的測試邏輯而不用關心異步調用及等待處理

     二、測試方法

      以商橋訪問接口測試為例,由于它是一個需要登陸才能訪問的接口,寫自動化case的時候需要完成兩個類:BridgeAction和BridgeTest。其中BridgeAction主要是接口的調用,BridgeTest是測試內容:

      這里BaseLoginAction實現了needLogin()和login()方法,主要是登錄邏輯,BridgeAction的action()是真正接口的調用。

      測試類主要是對BridgeAction的調用,它可以向接口傳遞不同的參數,同時也可傳遞登錄操作的用戶名和密碼。waitAsyncTaskComplete(action)完成了接口邏輯的調用及時間的等待,測試代碼只需著重關注result并進行斷言。

      三、總結

      異步接口的集成測試的側重點在于Android手機端向服務器端發送的請求是否正確,以上測試CASE的斷言與后端數據其實是強耦合的,即后端caiye這個賬戶的數據變化可能導致CASE的fail,所以可以考慮引入hamcrest包,做一些匹配校驗,主要測試正常和異常情況服務器返回的內容是否符合預期,比如上面最后一個斷言可以寫成:assertEquals(intValue(),greaterThan(0));當然,服務器端接口的正確性正常情況下應該由服務器端的自動化Case來保證,這樣才不至于前后端測試緊耦合在一起。


    posted on 2013-03-12 10:46 順其自然EVO 閱讀(854) 評論(0)  編輯  收藏 所屬分類: android

    <2013年3月>
    242526272812
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 黄色毛片免费在线观看| 亚洲国产视频久久| 精选影视免费在线 | 亚洲AV中文无码乱人伦| 国产精品日本亚洲777| 国产精品视_精品国产免费| 亚洲AV色欲色欲WWW| 免费永久国产在线视频| 亚洲AV网一区二区三区 | 狠狠热精品免费观看| 国产麻豆剧传媒精品国产免费| 亚洲精品乱码久久久久蜜桃 | 免费看国产曰批40分钟| 日韩在线观看免费完整版视频| 亚洲av无码不卡私人影院| 精品国产污污免费网站入口在线 | 亚洲人成网站在线播放vr| 国产一级淫片a免费播放口| 久久精品国产亚洲AV高清热| 亚洲一区二区免费视频| 亚洲精品无码一区二区| 亚洲综合色视频在线观看| 久久精品成人免费看| 亚洲图片中文字幕| 国产精品成人无码免费| 久久久WWW免费人成精品| 久久丫精品国产亚洲av不卡| 成人免费的性色视频| 青草久久精品亚洲综合专区| 久久久久噜噜噜亚洲熟女综合| 在线观看特色大片免费网站| 亚洲另类自拍丝袜第1页| 国产美女无遮挡免费网站| 99精品视频免费| 亚洲免费人成视频观看| www.91亚洲| 亚欧免费视频一区二区三区| 国产精品亚洲二区在线| 亚洲一区免费观看| 免费一级e一片在线播放| 一级毛片在线免费观看|