monkey命令大全

一、認識monkey

 

 

Monkey 就是SDK中附帶的一個工具。Monkey是Android中的一個命令行工具,可以運行在模擬器裏或實際設備中;

它向系統發送僞隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試;

Monkey測試是一種爲了測試軟件的穩定性、健壯性的快速有效的方法。

 

Monkey特點:

1、測試的對象僅爲應用程序包,有一定的侷限性。

2、Monky測試使用的事件數據流是隨機的,不能進行自定義。

3、可對MonkeyTest的對象,事件數量,類型,頻率等進行設置。

 

二、Monkey的基本用法

1.查看幫助

adb shell monkey  或者adb shell monkey -help

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT

 

2.參數 -p ,比如:

adb shell monkey -p 包名 -v 500

-p參數後面寫上需要測試的包名,則可輕鬆跑通一條實例

 

3.參數: -v

adb shell monkey -p 包名 -v 500

-v 是描述日誌級別,用於跑monkey輸出日誌

日誌級別共有三級,Level0:-v 、Level1:-v -v、Level2:-v -v -v

 

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

Monkey 1:adb shell monkey -p 包名 -s 10  100

Monkey 2:adb shell monkey -p 包名 –s 10 100

兩次測試的效果是相同的,因爲模擬的用戶操作序列(每次操作按照一定的先後順序所組成的一系列操作,即一個序列)是一樣的。

 

5.參數: --throttle<毫秒>,操作事件間的時延,單位是毫秒;

adb shell monkey -p cn.emoney.acg --throttle 5000 100

 

6.忽略報錯參數,一般來說,不設置參數的話,monkey遇到報錯就會停止,所以加上一些忽略參數,monkey遇到報錯時可繼續運行。

--ignore-crashes(應用程序崩潰或異常時(crash、exception),繼續發送事件信息)     

adb shell  monkey -p 包名 --ignore-crashes 1000

--ignore-timeouts(在應用程序超時(ANR)的時候,繼續發送事件)     

adb shell  monkey -p 包名 --ignore-timeouts 1000

 –ignore-security-exceptions(在應用程序發生許可證錯誤的時候(認證或證書異常),繼續發送事件)

adb shell  monkey -p 包名  –ignore-security-exceptions 1000

–ignore-native-carshes(忽略本地代碼導致的崩潰)

adb shell  monkey -p 包名 –ignore-native-carshes 1000

 

7.–pct調整事件的百分比,具體如下: 
–pct-touch 觸摸事件百分比,就是log中down-up事件,發生在屏幕的某一個單一的位置,比如:adb shell monkey -p com.xxxx.xxxx–pct-touch 30 -v 500

–pct-motion 動作事件的百分比 

–pct-trackball 軌跡事件的百分比,拖動屏幕

–pct-nav 基本導航事件的百分比,如上下左右鍵 

–pct-majornav 主要導航事件的百分比,如中間鍵,取消、確定或菜單引發的圖形接口的動作 

–pct-syskeys 系統按鍵事件,如Home、Back、StartCall、Endcall及音量控制鍵等

–pct-appswitch 啓動Activity的百分比,在隨機間隔中,執行一個startActivity()方法調用

–pct-flip 點擊事件的百分比

 

 8.輸出monkey日誌

跑monkey的時候或者想抓程序log導出時,有時會提示:cannot create D:monkeytest.txt: read-only file system

後來發現跟使用使用習慣不一樣,一會是先進入adb shell 再用命令,一會是直接命令進入。

進入adb shell後再用命令就會失敗~正確方法:退出shell或者執行命令時先不要進shell

 adb shell monkey -p com.xxxx.xxxx --ignore-crashes  --ignore-timeouts -s 10 -v -v -v   50000 >e:\log.txt

Monkey測試出現錯誤後,一般的查錯步驟爲以下幾步:

①、找到是monkey裏面的哪個地方出錯

②、查看Monkey裏面出錯前的一些事件動作,並手動執行該動作

③、若以上步驟還不能找出,可以使用之前執行的monkey命令再執行一遍,注意seed值要一樣--復現

一般的測試結果分析:

①、 ANR問題:在日誌中搜索“ANR”

②、崩潰問題:在日誌中搜索“Exception”  Force Close

 

 9.Monkey測試中的黑名單和白名單

 在測試中,因爲手機中的一些其他操作可能影響測試結果(例如下拉通知欄),我們可以進行設置一個類似黑名單的東西去屏蔽它,具體命令如下:

adb shell monkey --pkg-blacklist-file /data/ blacklist.txt -v -v--throttle 200 1000000

具體的實現方式是,首先在電腦上建立一個blacklist.txt文件,在這個文件中將要屏蔽的包名一一寫進去,然後將這個文件push到手機的data目錄下: adb push blacklist.txt /data/,這樣就會屏蔽掉這幾個包,不去執行它。

 

和黑名單類似,我們也可以建立一個類似於白名單一樣的文件whitelist.txt,只去執行在白名單列表中的包名,詳細步驟和黑名單一樣。具體命令如下:

adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v --throttle 500  100000

 

 10.停止monkey

跑monkey的過程中,如果想停止monkey時,可以刪除pid

adb shell

# ps | grep monkey

#kill pid

 

 

 

 

 

 

 

 

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