<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲视频在线观看一区| 无码国产精品一区二区免费式芒果 | 亚洲?V乱码久久精品蜜桃 | 国产成人免费ā片在线观看| 最近新韩国日本免费观看| 又黄又大的激情视频在线观看免费视频社区在线 | 国产亚洲精久久久久久无码77777| 成人黄动漫画免费网站视频 | 亚洲日本国产乱码va在线观看| 亚洲人成网站在线观看青青| 女人被男人桶得好爽免费视频| 69视频免费在线观看| 最近免费mv在线观看动漫| 免费在线观看一区| 亚洲高清国产拍精品熟女| 亚洲国产精品久久丫| 无码久久精品国产亚洲Av影片| 在线日韩日本国产亚洲| 男人的天堂亚洲一区二区三区| 成人女人A级毛片免费软件| 91成人在线免费视频| 无码av免费网站| 鲁丝片一区二区三区免费| 99re6在线精品免费观看| 亚洲精品黄色视频在线观看免费资源| 国产大陆亚洲精品国产| 亚洲AV无码AV日韩AV网站| 亚洲日韩久久综合中文字幕| 国产精品高清视亚洲精品| ww亚洲ww在线观看国产| 亚洲国产精品久久网午夜| 激情亚洲一区国产精品| 国产精品亚洲综合五月天| 亚洲免费人成视频观看| 亚洲中文无码线在线观看| 亚洲国产模特在线播放| 中文字幕亚洲男人的天堂网络 | 永久免费av无码入口国语片| 中文字幕无码一区二区免费| 精品无码国产污污污免费网站| 98精品全国免费观看视频|