Android Monkey測試

Monkey是Google提供的一個命令行工具,可以運行在模擬器或實際設備中。它向系統發送僞隨機的用戶事件(如按鍵、手勢、觸摸屏等輸入),對軟件進行穩定與壓力測試。 

實例:

Windows保存到電腦:
adb shell monkey -p your.package.name -v --throttle 300 --ignore-timeouts --ignore-crashes --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --bugreport 50000000 > log.txt

Windows保存到手機:
adb shell
monkey -p your.package.name -v --throttle 300 --ignore-timeouts --ignore-crashes --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --bugreport 50000000 > /sdcard/log.txt

標準流與錯誤流分開保存:
adb shell monkey -p your.package.name -v --throttle 300 --ignore-timeouts --ignore-crashes --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 --bugreport 50000000 2 > error.txt 1 > info.txt

Monkey路徑:/system/framework/monkey.jar

啓動腳本:/system/bin/monkey

基本參數和事件參數:

-p <允許的包名列表>:用此參數指定一個或多個包。指定包之後,Monkey將只允許系統啓動指定的App。如果未指定包,Monkey將允許系統啓動設備中的所有App。

指定一個包:adb shell monkey -p your.package.name 100

指定多個包:adb shell monkey -p your.package.name1 –p your.package.name2 100

-c:如果用此指定了一個或幾個類別,Monkey將只允許系統啓動這些類別中列出的Activity。如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:Intent.category.LAUNCHER或Intent.category.MONKEY。要指定多個類別,需要使用多個-c選項,每個-c選項只能用於一個類別。

-v:用於指定反饋信息級別(信息級別就是日誌的詳細程度),總共分3個級別,分別對應的參數如下所示。

Level 0:adb shell monkey -p your.package.name -v 100    //缺省值,僅提供啓動提示、測試完成和最終結果等少量信息

Level 1:adb shell monkey -p your.package.name -v -v 100    //提供較爲詳細的日誌,包括每個發送到Activity的事件信息

Level 2:adb shell monkey -p your.package.name -v -v -v 100    //最詳細的日誌,包括了測試中選中/未選中的Activity信息

-s(隨機數種子):用於指定僞隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。

示例1:adb shell monkey -p your.package.name –s 10 100

示例2:adb shell monkey -p your.package.name –s 10 100

--throttle <毫秒>:用於指定用戶操作(即事件)間的時延,單位是毫秒;如果未指定這個參數,Monkey會儘可能快的生成和發送消息。

示例:adb shell monkey -p your.package.name --throttle 300 100

--pct-touch <percent>:調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)。

示例:adb shell monkey -p your.package.name --pct-touch 10 100

--pct-motion <percent>:調整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的僞隨機事件和一個up事件組成)。

示例:adb shell monkey -p your.package.name --pct-motion 20 100

--pct-trackball <percent>:調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。

示例:adb shell monkey -p your.package.name --pct-trackball 30 100

--pct-nav <percent>:調整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)。

示例:adb shell monkey -p your.package.name --pct-nav 40 100

--pct-majornav <percent>:調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)。

示例:adb shell monkey -p your.package.name --pct-majornav 50 100

--pct-syskeys <percent>:調整“系統”按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵)。

示例:adb shell monkey -p your.package.name --pct-syskeys 60 100

--pct-appswitch <percent>:調整啓動Activity的百分比。在隨機間隔裏,Monkey將執行一個startActivity()調用,作爲最大程度覆蓋包中全部Activity的一種方法。

示例:adb shell monkey -p your.package.name --pct-appswitch 70 100

--pct-rotation <percent>:屏幕旋轉百分比。

--pct-anyevent <percent>:調整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕等等。

示例:adb shell monkey -p your.package.name --pct -anyevent 100 100

注意:各事件類型的百分比總數不能超過100%。

調試參數:

參數:--ignore-crashes

用於指定當應用程序崩潰時(Force & Close錯誤),Monkey是否停止運行。如果使用此參數,即使應用程序崩潰,Monkey依然會發送事件,直到事件計數完成。

示例1:adb shell monkey -p your.package.name --ignore-crashes 1000
    測試過程中即使應用程序崩潰,Monkey依然會繼續發送事件直到事件數目達到1000爲止;
示例2:adb shell monkey -p your.package.name 1000
    測試過程中,如果應用程序崩潰,Monkey將會停止運行。

參數:--ignore-timeouts

用於指定當應用程序發生ANR(Application No Responding)錯誤時,Monkey是否停止運行。如果設置了此項,Monkey將繼續向系統發送事件,直到計數完成。

參數:--ignore-security-exceptions

用於指定當應用程序發生許可錯誤時(如證書許可,網絡許可等),Monkey是否停止運行。如果設置了此項,Monkey將繼續向系統發送事件,直到計數完成。

參數:--dbg-no-events

設置此選項,Monkey將執行初始啓動,進入到一個測試Activity,然後不會再進一步生成事件。最好將它與-v、一個或幾個包約束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。

參數:--hprof

設置此選項,將在Monkey事件序列之前和之後立即生成profiling報告。這將會在/data/misc中生成大文件(~5Mb),所以要小心使用它。

參數:--monitor-native-crashes

監視並報告Android系統中本地代碼的崩潰事件,如果設置了--kill-process-after-error,系統將停止運行。

參數:--kill-process-after-error

當Monkey由於一個錯誤而停止時,出錯的應用程序將繼續處於運行狀態。當設置了此選項時,將會通知系統停止發生錯誤的進程。當Monkey正常執行完畢,它不會關閉所有啓動的應用,設備依然保留Monkey結束時的狀態。

參數:--ignore-native-crashes

當應用發生底層C/C++代碼引起的崩潰事件時,Monkey將停止運行。如果設置了此項,Monkey將繼續向系統發送事件,直到計數完成。

參數:--wait-dbg

啓動Monkey後,先中斷其運行,等待調試器附加上來

參數:-port

爲Monkey開啓專用端口。此時Monkey不會幫你亂點擊,而此時你自己就是一隻Monkey,在你亂點的時候,Monkey會輸出你點擊後回饋的信息。如果你打完命令後,模擬器上沒有啓動你所要啓動的包,你需要自己啓動,但是你只能啓動你-p中指定的那幾個包,Ctrl+c中斷。

參數:--pkg-blacklist-file PACKAGE_BLACKLIST_FILE

黑名單:執行除了黑名單中以外的apk,黑名單的設置方法:

a.創建一個名稱爲blacklist的txt文檔,在文件中輸入應用程序的包名,如mms應用,則在文件中輸入com.Android.mms;如果有多個應用程序不想被執行,則在文件中添加多個包名,注意包名與包名之間均用回車鍵。

b.將blacklist.txt文件導入到手機的/data目錄下,然後在執行monkey測試的時候使用--pkg-blacklist-file參數再加上blacklist文件的存儲路徑,其他的參數設置則和測試單一apk沒有區別。

參數:--pkg-blacklist-file PACKAGE_WHITELIST_FILE

白名單:只執行在白名單中的apk,白名單的設置方法:

a.白名單的設置方法和黑名單的設置方法基本一致,只是在創建txt文檔的時候,文件的命名應爲whitelist.txt。

注意:不能同時設置黑名單和白名單。

參數:--bugreport

遇到問題自動生成bugreport報告。

常見錯誤類型:

ANR、Crash、Exception、Error、Restart System

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章