Monkey總結(一)
Monkey是什麼?
Monkey是Google提供的一個命令行工具,可以運行在模擬器或者實際設備中。它向系統發送僞隨機的用戶事件(如按鍵、手勢、觸摸屏等輸入),對軟件進行穩定性與壓力測試。Monkey程序是Android自帶的。
路徑:/sdcard/system/framework/Monkey.jar
啓動腳本路徑:/system/monkey
Monkey環境變量的配置
Monkey是由adb命令啓動,故只要配置adb環境(windows環境爲例)
1.下載Android SDK,解壓
2.將SDK目錄下的platform-tools和tools目錄配置到系統環境變量中
3.打開cmd窗口,輸入adb,adb幫助信息則配置成功
Monkey基本參數
一個完整的Monkey命令:
adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50
以上是由Monkey基本參數組合而成。先看Monkey的基本參數:
分類 | 選項 | 說明 |
基本參數 | --help | 打印幫助信息 |
-v | Monkey向命令行打印輸出的log信息級別 默認級別是0:-v只打印啓動信息,測試完成信息 和最終結果信息 級別2:-v -v 打印時執行的一些信息,如發送事件 級別3:-v -v -v 打印最詳細的信息 |
Monkey的約束參數
分類 | 選項 | 說明 |
約束條件 | -p<允許執行的包名列表> | 如果用詞參數指定了一個或幾個包,Monkey將只允許系 統啓動這些包裏的Activity。如果你的應用程序還需要 訪問其它包裏的Activity(如選擇取一個聯繫人),那些包也需要在此同時指定。如果不指定任何包,Monkey將允許系統啓動全部包裏的Activity。要指定多個包,需要使用多個-p選項,每個-p只能用於一個包。 |
-c<意圖的種類> | 如果用此參數指定了一個或幾個類別,Monkey將只允許系統啓動被這些類別中的某個類別列出的Activity。如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:Intent.CATEGORY.LAUNCHER或Intent.CATEGORY.MONKEY。要指定多個類別,需要使用多個-c選項,每個-c選項只能用於一個類別。 |
Monkey發送的事件類型和頻率
事件 | -s<隨機數種子> | 僞隨機數生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列 |
--throttle<意圖的種類> | 在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執行速度。如果不指定該選項,Monkey將不會被延遲,事件將儘可能快地被執行完成 | |
--pct-touch<percent> | 調整觸摸事件的百分比(觸摸事件是一個down-up事件),它發生在屏幕上的某單一位置 | |
--pct-motion<percent> | 調整動作事件的百分比(動作事件是由屏幕上某處的一個down事件、一系列的僞隨機事件和一個up事件組成) | |
--pct-trackball<percent> | 調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊) | |
--pct-nav<percent> | 調整“基本”導航時間的百分比(導航事件由來自方向輸入設備的up/down/left/right組成) | |
--pct-majornav<percent> | 調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵) | |
--pct-syskeys<percent> | 調整“系統”按鈕事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、StartCall、End Call及音量控制鍵) | |
--pct-appswitch | 調整啓動Activity的百分比。在隨機間隔裏,Monkey執行一個startActivity()調用,作爲最大程度覆蓋包中全部Activity的一種方法 | |
--pct-anyevent<percent> | 調整其他類型事件的百分比。它包羅了所有其他類型的事件,如:按鍵、其他不常用的設備按鈕等 | |
--pct-flip PECENT | ||
--pct-pinchzoom PERCENT |
Monkey調試參數
分類 | 選項 | 說明 |
調試 | --dbg-no-events | 設置此選項,Monkey將執行初始啓動,進入到一個測試Activity,然後不會再進一步生成事件。最好將它與-v、一個或幾個包約束。以及一個保持Monkey運行30秒或更長事件的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換 |
--hprof | 設置此選項,將在Monkey事件序列之前和之後立即生成profiling報告,這將在data/misc中生成大文件(~5MB),所以要小心使用 | |
--ignore-crashes | 通常,當應用程序崩潰或發生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成 | |
--ignore-timeouts | 應用程序發生任何超時錯誤(如"Application Not Responding"對話框)時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成 | |
--ingore-security-exceptions | 當應用程序發生權限許可錯誤時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成 | |
--ingnore-native-crashes | 當應用程序發生底層C/C++代碼引起的崩潰事件時,Monkey將停止運行。選擇此項,Monkey將繼續向系統發送事件,直到計數完成 | |
--monitor-native-crashes | 監視並報告Android系統中Android C/C++引起的崩潰事件。如果設置了--kill-process-after-error,系統將停止運行 | |
--kill-process-after-error | 當Monkey由於一個錯誤而停止時,出錯的應用程序將繼續處於運行狀態。當設置了此選項時,將會通知系統停止發生錯誤的進程。注意,當Monkey正常執行完畢,它不會關閉所有啓動的應用,設備依然保留Monkey結束時的狀態 | |
--wait-dbq | 啓動Monkey後,先中斷其運行,等待調試器附加上來 |
Monkey黑白名單
黑名單:不測試的應用
白名單:只測試這部分應用
注意:不能同時設置黑名單和白名單
選項 | 說明 |
--pkg-blacklist-file PACKAGE_BlACKLIST_FILE |
apk黑名單,屏蔽掉黑名單中的apk |
--pkg-whitelist-file PACK_WHITELIST_FILE |
apk白名單,只測試包含在白名單中的apk |
以黑名單爲例,具體的步驟如下:
1.查找系統的包,並輸出到e盤的pkg文檔裏。adb shell pm list package>e:\pkg.txt
2.將想要加入黑名單的apk的包名放到blacklist.txt裏,最後push進設備。adb push e:\blacklist.txt /data/local/tmp/
3.執行Monkey命令。adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt --throttle 200 200