Monkey是Android平臺自動化測試的一種手段,能夠在模擬器裏或實際設備中運行,它向系統發送僞隨機的用戶事件流,如按鍵輸入、觸摸屏輸入、手勢輸入等,實現對正在開發的應用程序進行壓力測試。shell
固然對於移動APP測試,monkey測試出了壓力測試外,也能夠作作簡單的機型配適,就是測試App是否會出現crash等異常,以此來判讀其釋放與機型適配,能夠發現程序無響應問題和崩潰問題。app
接下來簡單說說:測試
Monkey程序由Android系統自帶,使用Java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar;spa
Monkey.jar程序是由一個名爲「monkey」的Shell腳原本啓動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey;調試
特徵
一、 測試的對象僅爲應用程序包,有必定的侷限性。
二、 Monky測試使用的事件流數據流是隨機的,不能進行自定義。
三、 可對MonkeyTest的對象,事件數量,類型,頻率等進行設置。日誌
這樣就能夠經過在CMD窗口中執行: adb shell monkey {+命令參數}來進行Monkey測試了。code
基本使用對象
進入monkey進程
命令:adb shell/system/bin/monkey事件
運行monkey
命令:adb shell monkey <event-count> ,<event-count>是指隨機發送事件數
adb shell monkey 100,運行monkey並執行了100件隨機事件。
monkey常規類命令
adb shell monkey -h 顯示monkey參數幫助信息usage
adb shell monkey -v 打印出日誌信息,每一個-v將增長反饋信息的級別,最多支持3個-v
monkey事件類命令
adb shell monkey -f <scriptfile> <event-count> 讓monkey運行指定monkey腳本,<scriptfile> 爲測試腳本名,<event-count>是指循環次數。
adb shell monkey -s <seed> <event-count> 能夠重複以前的隨機操做,-s 後接隨機數的生成器的seed值。
adb shell monkey --throttle <milliseconds> 表示每一個事件之間的固定延遲事件,時間的單位爲ms,若後面不接時間,monkey將不會延遲
事件百分比
adb shell monkey --ptc-touch <percent> 設定觸摸事件的百分比
adb shell monkey --ptc-motion <percent> 設定動做事件的百分比
adb shell monkey --ptc-trackball <percent> 設定軌跡球事件的百分比
adb shell monkey --ptc-nav <percent> 設定基本導航事件的百分比
adb shell monkey --ptc-majornav <percent> 設定主要導航事件的百分比
adb shell monkey --ptc-syskeys <percent> 設定按鍵事件的百分比
adb shell monkey --ptc-appswitch <percent> 設定啓動事件的百分比
adb shell monkey --ptc-anyevent <percent> 其餘類型事件的百分比,包括keypress、不經常使用button以及其餘未說起事件
monkey約束類命令
adb shell monkey -p <allowed-package-name> <event-count>, 測試一個或多個包名,每一個-p對應一個包。
adb shell monkey -p <main-category> <event-count>, 測試一個或多個類別。
monkey調試類命令
adb shell monkey --dbg-no-events <event-count> 監視應用程序所調用的包之間的轉換
adb shell monkey --hprof <event-count> 在事件序列先後當即生成profiling report
adb shell monkey --ignore-crashes <event-count> 讓monkey在應用崩潰或異常後繼續發送事件直到計數完成
adb shell monkey --ignore-timeouts <event-count> 讓monkey在任何超時錯誤發生後繼續發送事件直到計數完成
adb shell monkey --ignore-security-exceptions <event-count> 讓monkey在應用權限錯誤發生後繼續發送事件直到計數完成
adb shell monkey --kill-process-after-error <event-count> 讓monkey由於應用發生錯誤而中止時,將會通知系統中止發送錯誤進程
adb shell monkey --monitor-native-crashes <event-count> 讓監視並報告monkey運行時Android系統native code的崩潰事件
adb shell monkey --wait-dbg <event-count> 暫停執行中的monkey,直到有調試器與它鏈接
monkey API
軌跡球事件DispatchTrackball(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)輸入字符串事件DispatchString(String text)點擊事件DispatchPointer(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)啓動應用LaunchActivity(String pkg_name, String cl_name)等待事件UserWait(long sleeptime)按下按鍵DispatchPress(int keyCode)長按按鍵LongPress(int keyCode)發送按鍵DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)