安卓APP穩定性測試-----monkey
阿新 • • 發佈:2018-12-14
穩定性測試:通過在主流真機終端上,模擬真人對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