1. 程式人生 > >安卓APP穩定性測試-----monkey

安卓APP穩定性測試-----monkey

      穩定性測試:通過在主流真機終端上,模擬真人對App的操作行為,支援自動登陸、執行時間可配置,有效點選覆蓋更全更深,從而發現程式的Crash及ANR,一般使用monkey對應用程式進行穩定性測試。

      monkey:Android SDK自帶的命令列測試工具,向裝置傳送偽隨機事件流,可以在模擬器裡或實際裝置中執行,它向系統傳送偽隨機的使用者事件流,如按鍵輸入、觸控式螢幕輸入、手勢輸入等,實現對正在開發的應用程式進行壓力測試。

優勢

  1. 脫離Case的依賴
  2. 可封裝自動化執行
  3. 可封裝後作為客戶端效能測試的驅動

缺點

  1. 完全隨機,不可控
  2. 不支援IOS系統

monkey測試步驟:

  1. Monkey程式由Android系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是:/system/framework/monkey.jar;Monkey.jar程式是由一個名為“monkey”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中存放路徑是:/system/bin/monkey;
  2. 通過在CMD視窗中執行: adb shell monkey{+命令引數}來進行Monkey測試;
  3. 基本的命令如下:
    $ adb shell monkey [options] <event-count>    //options
    $ adb shell monkey -p your.package.name -v 500   //舉例:向指定包傳送500個偽隨機事件
    $ adb shell monkey --ptc-touch        //觸控事件百分比
    $ adb shell monkey --ptc-motion       //動作事件百分比
    $ adb shell monkey --ptc-trackball    //軌跡球事件百分比
    $ adb shell monkey --ptc-nav          //基本導航事件百分比
    $ adb shell monkey --ptc-majornav     //主導航事件百分比
    $ adb shell monkey --ptc-syskeys      //按鍵事件百分比
    $ adb shell monkey --ptc-appswitch    //啟動時間百分比
    $ adb shell monkey --ptc-anyevent     //其他型別事件的百分比,包括keypress、不常用button以及其他未提及事件

monkey注入事件機制:

  1. Monkey注入系統事件是通過framework層的hidenApi獲取系統服務;
  2. 觸控事件:包括螢幕以及物理鍵的觸控,滑動,點選事件,Monkey通過InputManager.getInstance().injectInputEvent(keyEvent, int);構造對應的事件,然後呼叫該介面執行事件;
  3. 呼叫Android系統元件的事件,Monkey通過IActivityManager例項來獲取activity的系統服務,從而啟動某個activity;
  4. window事件:指操作Window的事件,Monkey通過獲取IWindowManager例項開啟系統視窗服務,並執行視窗事件;

monkey的組織結構

  • Monkey的核心類是Monkey.java,MonkeyEventSource.java,MonkeyEvent.java