monkey用法總結

monkey 介紹

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

Monkye路徑:

  • Monkey程序由Android系統自帶,使用Java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar;
  • Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey;

Monkey環境變量的配置

Monkey是由adb命令啟動,故只要配置adb環境

  • (1)下載Android SDK,解壓;
  • (2)將SDK目錄下的platform-tools和tools目錄配置到系統環境變量中;
  • (3)打開cmd窗口,輸入adb,有adb幫助信息則配置成功。

monkey參數如下


注意:以下例子中命令均為Windows cmd命令窗口運行環境,往外官網列出的參數并不是全部參數,更全的參數要看monkey源代碼。

常規參數

  • -help
    作用:列出簡單的用法。
    例:adb shell monkey -help


    注:一般很少用到此參數,偷懶的做法直接輸入adb shell monkey就可以看到簡單用法列表。

  • -v
    作用:命令行上的每一個-v都將增加反饋信息的詳細級別。

  • Level0(默認-v),除了啟動、測試完成和最終結果外只提供較少的信息。

  • Level1(-v -v),提供了較為詳細的測試信息,如逐個發送到Activity的事件信息。

  • Level2(-v -v -v),提供了更多的設置信息,如測試中選中或未選中的Activity信息。

adb shell monkey -v 10


注:比較常用的是-v -v -v,即最多詳細信息,一般會保存到指定文件中供開發人員查找bug原因時使用。

事件

  • -s <seed>
    作用:偽隨機數生成器的seed值。如果用相同的seed值再次運行monkey,將生成相同的事件序列。
    例:adb shell monkey -s 12345 -v 10

  • --throttle <milliseconds>
    作用:在事件之間插入固定的時間(毫秒)延遲,你可以使用這個設置來減緩Monkey的運行速度,如果你不指定這個參數,則事件之間將沒有延遲,事件將以最快的速度生成。
    adb shell monkey --throttle 300 -v 10


    注:常用參數,一般設置為300毫秒,原因是實際用戶操作的最快300毫秒左右一個動作事件,所以此處一般設置為300毫秒。

  • --pct-touch <percent>
    作用:調整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下并抬起的操作)
    adb shell monkey --pct-touch 100 -v 10


    注:常用參數,此參數設置要適應當前被測應用程序的操作,比如一個應用80%的操作都是觸摸,那就可以將此參數的百分比設置成相應較高的百分比。

  • --pct-motion <percent>
    作用:調整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
    adb shell monkey --pct-motion 100 -v 10


    注:常用參數,需注意的是移動事件是直線滑動,下面的trackball移動包含曲線移動。

  • --pct-trackball <percent>
    作用:調整滾動球事件百分比。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點擊事件)
    adb shell monkey --pct-trackball 100 -v 10


    注:不常使用參數,現在手機幾乎沒有滾動球,但滾動球事件中包含曲線滑動事件,在被測程序需要曲線滑動時可以選用此參數。

  • --pct-nav <percent>
    作用:調整基本的導航事件百分比。(導航事件由方向輸入設備的上下左右按鍵所觸發的事件組成)
    adb shell monkey --pct-nav 100 -v 10


    注:不常用操作。

  • --pct-majornav <percent>
    作用:調整主要導航事件的百分比。(這些導航事件通常會導致UI界面中的動作事件,如5-way鍵盤的中間鍵,回退按鍵、菜單按鍵)
    adb shell monkey --pct-majornav 100 -v 10


    注:

  • --pct-syskeys <percent>
    作用:調整系統事件百分比。(這些按鍵通常由系統保留使用,如Home、Back、Start Call、End Call、音量調節)
    adb shell monkey --pct-syskeys 100 -v 10


    注:不常用。

  • --pct-appswitch <percent>
    作用:調整Activity啟動的百分比。(在隨機的時間間隔中,Monkey將執行一個startActivity()調用,作為最大程度覆蓋被測包中全部Activity的一種方法)
    adb shell monkey --pct-appswitch 100 -v 5


    注:不常用。

  • --pct-anyevent
    作用:調整其他事件的百分比。(這包含所有其他事件,如按鍵、其他在設備上不常用的按鈕等)
    adb shell monkey --pct-anyevent 100 -v 5


    注:不常使用。

約束條件

  • -p <allowed-package-name>
    作用:如果你指定一個或多個包,Monkey將只允許訪問這些包中的Activity。如果你的應用程序需要訪問這些包(如選擇聯系人)以外的Activity,你需要指定這些包。如果你不指定任何包,Monkey將允許系統啟動所有包的Activity。指定多個包,使用多個-p,一個-p后面接一個包名。
    adb shell monkey -p com.android.browser -v 10


    注:常用參數。

  • -c <main-category>
    作用:如果你指定一個或多個類別,Monkey將只允許系統啟動這些指定類別中列出的Activity。如果你不指定任何類別,Monkey將選擇謝列類別中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多個類別使用多個-c,每個-c指定一個類別。
    adb shell monkey -p com.android.browser/mainActivity -v 10
    注:不常用。

  • --dbg-no-events
    作用:設置此選項,Monkey將執行初始啟動,進入一個測試Activity,并不會在進一步生成事件。為了得到最佳結果,結合參數-v,一個或多個包的約束,以及一個保持Monkey運行30秒或更長時間的非零值,從而提供了一個可以監視應用程序所調用的包之間轉換的環境。

    注:不常用。

  • --hprof
    作用:設置此選項,將在Monkey生成事件序列前后生成profilling報告。在data/misc路徑下生成大文件(~5Mb),所以要小心使用。

    注:不常用。****

  • --ignore-crashes**
    作用:通常,應用發生崩潰或異常時Monkey會停止運行。如果設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

    注:常用。

  • --ignore-timeouts**
    作用:通常,應用程序發生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

    注:常用。

  • --ignore-security-exception **
    作用:通常,當程序發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止運行。設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

    注:常用。****

  • --kill-process-after-error**
    作用:通常,當Monkey由于一個錯誤而停止時,出錯的應用程序將繼續處于運行狀態。設置此項,將會通知系統停止發生錯誤的進程。注意,正常(成功)的結束,并沒有停止啟動的進程,設備只是在結束事件之后簡單的保持在最后的狀態。

    注:

  • --monitor-native-crashes**
    作用:監視并報告Andorid系統中本地代碼的崩潰事件。如果設置--kill-process-after-error,系統將停止運行。

    注:

  • --wait-dbg
    作用:停止執行中的Monkey,直到有調試器和它相連接。

    注:


以下參數為Monkey官網中為列出,但命令行幫助中可以顯示的參數,先列出,以后抽時間整理其使用方法

  • --pct-rotation
  • --pct-pinchzoom
  • --pkg-blacklist-file
  • --pkg-whitelist-file
  • --randomize-throttle
  • --port
  • --setup
  • -f
  • --profile-wait
  • --device-sleep-time
  • --randomize-script
  • --script-log
  • --bugreport
  • --periodic-bugreport
  • -h

白名單和黑名單

  • 只測試這部分應用(跟上一節說的 -p 的作用一樣)但是如果-p的程序過多就需要用到白名單了
  • 黑名單:不測試的應用
--pkg-blacklist-file  后面跟的是文件的路徑

--pkg-whitelist-file  后面跟的是文件的路徑 
 
可以自定義設置目錄 /data/local/tmp/
  • 設置白名單

在d:\writelist.txt中設置白名單格式如下:

com.pageage.test
......
  • 把白名單push到手機
adb push d:\whitelist.txt /data/local/tmp/ 
  • 執行白名單
adb shell monkey -- pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 200 300

這個命令的意思就是 只跑白名單里面的應用,延遲200毫秒 執行300次,黑名單的執行方法和白名單一樣

其他實例

  • 跑ALL APK命令:(>2小時)
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑單個APK命令(>6小時):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000  -v -v -v 90000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑單個APK命令(>2小時):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000  -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑ALL APK命令(>12小時):
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑ALL APK命令(>12小時)加入黑名單:
monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt  --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑單個APK命令(>12小時):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000  -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑ALL APK命令(>24小時):
monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑ALL APK命令(>24小時)加入黑名單:
monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt  --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
  • 跑單個APK命令(>24小時):
monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000  -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

注:跑單個APK時一定記住在手機存儲根目錄里面放一個白名單文件:whitelist.txt,txt文本寫入要測的模塊APK應用的包名即可,表示只跑指定apk,如果是在手機根目錄中放blacklist.txt,填寫相應包名,指跑除blacklist.txt上指定應用的所有應用。Monkey跑完后檢查log里面是否有crash、anr(在根目錄下的/mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt)

其實僅僅就是拿到手機后,將/mnt/sdcard放入whitelist.txt或則blacklist.txt,里面放上應用包名,然后adb shell---》mokey命名,就可以了

來自

推薦閱讀

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容