Monkey

引言:

此文為私人學習參考資料,不做任何用途。

一. 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?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容