穩定性測試:通過在主流真機終端上,模擬真人對App的操作行爲,支持自動登陸、運行時間可配置,有效點擊覆蓋更全更深,從而發現程序的Crash及ANR,一般使用monkey對應用程序進行穩定性測試。
monkey:Android SDK自帶的命令行測試工具,向設備發送僞隨機事件流,可以在模擬器裏或實際設備中運行,它向系統發送僞隨機的用戶事件流,如按鍵輸入、觸摸屏輸入、手勢輸入等,實現對正在開發的應用程序進行壓力測試。
優勢
- 脫離Case的依賴
- 可封裝自動化執行
- 可封裝後作爲客戶端性能測試的驅動
缺點
- 完全隨機,不可控
-
不支持IOS系統
monkey測試步驟:
- Monkey程序由Android系統自帶,使用Java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar;Monkey.jar程序是由一個名爲“monkey”的Shell腳本來啓動執行,shell腳本在Android文件系統中存放路徑是:/system/bin/monkey;
- 通過在CMD窗口中執行: adb shell monkey{+命令參數}來進行Monkey測試;
- 基本的命令如下:
$ 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注入事件機制:
- Monkey注入系統事件是通過framework層的hidenApi獲取系統服務;
- 觸摸事件:包括屏幕以及物理鍵的觸摸,滑動,點擊事件,Monkey通過InputManager.getInstance().injectInputEvent(keyEvent, int);構造對應的事件,然後調用該接口執行事件;
- 調用Android系統組件的事件,Monkey通過IActivityManager實例來獲取activity的系統服務,從而啓動某個activity;
- window事件:指操作Window的事件,Monkey通過獲取IWindowManager實例開啓系統窗口服務,並執行窗口事件;
monkey的組織結構
- Monkey的核心類是Monkey.java,MonkeyEventSource.java,MonkeyEvent.java