引言:
此文為私人學習參考資料,不做任何用途。
一. Monkey--產生一種偽隨機流事件,(example:Click、touches、gestures、system-level events),對程序進行隨機而又重復的壓力測試。
二. Monkey 中包含的操作選項,主要分為四個類別:
1.Basic? configuration options
2.Operational constraints
3.Event types and frequencies
4.Debugging options
三. Monkey會產生一些事件發給系統,同事也會監控系統,并且處理以下情況:
1.若Monkey中指定了跑一個模塊(package)或者多個模塊(packages),會阻止試圖進入其他應用的操作
2.如果 application 遇到crash或者出現其他的unhanded exception (application not responding),monkey 會停止且記錄出錯時的日志
四.基本語法(基于adb shell)
備注:關于adb shell 的相關知識,后期整理
(一)主要分為五個部分
測試對象(package、packages、phone)、輸出日志級別(精簡、普通、詳細)、事件、調試、測試次數
1. 測試對象(可以為 application、applications、phone)
Example:(i管家包名:com.iqoo.secure)
adb shell monkey -p?com.iqoo.secure 5000? (隨機測試I管家 5000次)
2.日志級別
備注:精簡(-v)、普通(-v -v)、詳細(-v -v -v或者-vvv)
Example:(i管家包名:com.iqoo.secure)
adb shell monkey -p?com.iqoo.secure 5000 -v-v-v? > /mnt/sdcard/monkey.log? ?(隨機測試I管家5000次,并將詳細日志輸入到手機內存中)
3.事件
(1) -s <seed> 指定偽隨機數生成器的seed值,如果seed值相同,monkey測試產生的事件序列相同(可以理解為兩次測測試結果相同,因為模擬的用戶操作序列是一樣的)
Example:(i管家包名:com.iqoo.secure)
adb shell monkey -p?com.iqoo.secure -s 10? 100(按照seed值為10的序列,隨機測試I管家100次)
(2) -throttle<milliseconds> 指定用戶操作間的時間延遲,單位是毫秒
Example:(i管家包名:com.iqoo.secure)
adb shell monkey -p?com.iqoo.secure -s 10 -throttle 1000 100(按照seed值為10的序列,隨機測試I管家100次,每次隨機時間的間隔為一秒)
(3)--pct-touch<percent> 調整觸摸事件的百分比(所謂觸摸事件:一個down-up事件,發生在屏幕的某單一位置)
備注:percent? 指定多個參數時,總和不能超多100,不設置則隨機分配百分比
(4)--pct-motion<percent> motion 代表的是直線滑動,由一個down事件、一個up事件、一系列隨機事件組成
(5)--pct-trackball<percent> trackball代表軌跡事件:由一個或者多個隨機的移動組成,還伴隨這點擊
(6)--pct-nav<percent> 早期Android手機上的up、down、left、right按鍵
(7)--pct-majornav<percent> 引發圖形界面中的動作(例如:返回鍵、菜單按鈕等)
(8)--pct-syskeys<percent> 使用系統的按鍵(例如:HOME鍵,音量鍵等)
(9)--pct-appswitch<percent> 隨機事件間隔中,Monkey將執行startActivity()調用,能狗最大成都覆蓋全部Acivity
(10)--pct-anyevent<percent> 包含了所以其他類型的事件(例如:點擊一些不常用的設備按鈕)
4.調試(可以適當加入調試中的參數,達到自己想要的monkey操作)
(1)調試參數:--ignore-crashes
如果不添加此調試參數:當應用程序崩潰或發生任何失控的異常時,Monkey將會停止;如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成;
(2)調試參數:--ignore-timeouts
應用程序發生任何超時錯誤(如“Application Not Responding”對話框)時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成;
(3)調試參數:--ignore-security-exception
當應用程序發生權限許可錯誤時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成;
(4)調試參數:--ignore-native-crashes
當應用發生底層C/C++代碼引起的奔潰事件時,Monkey將停止運行。如果設置了此項,Monkey將繼續向系統發送事件,直到計數完成;
(5)調試參數:--monitor-native-crashes
監視并報告Android系統中Android C/C++引起的崩潰事件。如果設置了–kill-process-after-error,系統將停止運行;
(6)調試參數:--kill-process-after-error
當Monkey由于一個錯誤而停止時,出錯的應用程序將繼續處于運行狀態。當設置了此選項時,將會通知系統停止發生錯誤的進程。注意,當Monkey正常執行完畢,它不會關閉所有啟動的應用,設備依然保留Monkey結束時的狀態;
(7)調試參數:--dbg-no-events
設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。最好將它與-v、一個或幾個包約 束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換;
(8)調試參數:--hprof
設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告(內存)。這將會在data/misc中生成大文件(~5Mb),所以要小心使用它;
(9)調試參數:--wait-dbg
啟動Monkey后,先中斷其運行,等待調試器附加上來。
備注:一個 -p后面只能跟一個包名,可以存在多個 -p?