monkey用法總結(jié)

monkey 介紹

Monkey是Google提供的一個(gè)用于穩(wěn)定性與壓力測(cè)試的命令行工具饮焦⌒壬玻可以運(yùn)行在模擬器或者實(shí)際設(shè)備中喻奥。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件(如按鍵、手勢(shì)赖欣、觸摸屏等輸入)屑彻,對(duì)軟件進(jìn)行穩(wěn)定性與壓力測(cè)試。

Monkye路徑:

  • Monkey程序由Android系統(tǒng)自帶顶吮,使用Java語(yǔ)言寫成社牲,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar;
  • Monkey.jar程序是由一個(gè)名為“monkey”的Shell腳本來啟動(dòng)執(zhí)行悴了,shell腳本在Android文件系統(tǒng)中的存放路徑是:/system/bin/monkey搏恤;

Monkey環(huán)境變量的配置

Monkey是由adb命令啟動(dòng),故只要配置adb環(huán)境

  • (1)下載Android SDK,解壓湃交;
  • (2)將SDK目錄下的platform-tools和tools目錄配置到系統(tǒng)環(huán)境變量中熟空;
  • (3)打開cmd窗口,輸入adb搞莺,有adb幫助信息則配置成功息罗。

monkey參數(shù)如下


注意:以下例子中命令均為Windows cmd命令窗口運(yùn)行環(huán)境,往外官網(wǎng)列出的參數(shù)并不是全部參數(shù)才沧,更全的參數(shù)要看monkey源代碼阱当。

常規(guī)參數(shù)

  • -help
    作用:列出簡(jiǎn)單的用法俏扩。
    例:adb shell monkey -help


    注:一般很少用到此參數(shù),偷懶的做法直接輸入adb shell monkey就可以看到簡(jiǎn)單用法列表弊添。

  • -v
    作用:命令行上的每一個(gè)-v都將增加反饋信息的詳細(xì)級(jí)別录淡。

  • Level0(默認(rèn)-v),除了啟動(dòng)油坝、測(cè)試完成和最終結(jié)果外只提供較少的信息嫉戚。

  • Level1(-v -v),提供了較為詳細(xì)的測(cè)試信息澈圈,如逐個(gè)發(fā)送到Activity的事件信息彬檀。

  • Level2(-v -v -v),提供了更多的設(shè)置信息瞬女,如測(cè)試中選中或未選中的Activity信息窍帝。

adb shell monkey -v 10


注:比較常用的是-v -v -v,即最多詳細(xì)信息诽偷,一般會(huì)保存到指定文件中供開發(fā)人員查找bug原因時(shí)使用坤学。

事件

  • -s <seed>
    作用:偽隨機(jī)數(shù)生成器的seed值。如果用相同的seed值再次運(yùn)行monkey报慕,將生成相同的事件序列深浮。
    例:adb shell monkey -s 12345 -v 10

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


    注:常用參數(shù)布卡,一般設(shè)置為300毫秒,原因是實(shí)際用戶操作的最快300毫秒左右一個(gè)動(dòng)作事件雇盖,所以此處一般設(shè)置為300毫秒忿等。

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


    注:常用參數(shù)这弧,此參數(shù)設(shè)置要適應(yīng)當(dāng)前被測(cè)應(yīng)用程序的操作娃闲,比如一個(gè)應(yīng)用80%的操作都是觸摸虚汛,那就可以將此參數(shù)的百分比設(shè)置成相應(yīng)較高的百分比。

  • --pct-motion <percent>
    作用:調(diào)整motion事件百分比皇帮。(motion事件是由屏幕上某處一個(gè)down事件卷哩、一系列偽隨機(jī)的移動(dòng)事件和一個(gè)up事件組成)
    adb shell monkey --pct-motion 100 -v 10


    注:常用參數(shù),需注意的是移動(dòng)事件是直線滑動(dòng)属拾,下面的trackball移動(dòng)包含曲線移動(dòng)将谊。

  • --pct-trackball <percent>
    作用:調(diào)整滾動(dòng)球事件百分比冷溶。(滾動(dòng)球事件由一個(gè)或多個(gè)隨機(jī)的移動(dòng)事件組成,有時(shí)會(huì)伴隨著點(diǎn)擊事件)
    adb shell monkey --pct-trackball 100 -v 10


    注:不常使用參數(shù)尊浓,現(xiàn)在手機(jī)幾乎沒有滾動(dòng)球逞频,但滾動(dòng)球事件中包含曲線滑動(dòng)事件,在被測(cè)程序需要曲線滑動(dòng)時(shí)可以選用此參數(shù)栋齿。

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


    注:不常用操作。

  • --pct-majornav <percent>
    作用:調(diào)整主要導(dǎo)航事件的百分比瓦堵。(這些導(dǎo)航事件通常會(huì)導(dǎo)致UI界面中的動(dòng)作事件基协,如5-way鍵盤的中間鍵,回退按鍵菇用、菜單按鍵)
    adb shell monkey --pct-majornav 100 -v 10


    注:

  • --pct-syskeys <percent>
    作用:調(diào)整系統(tǒng)事件百分比澜驮。(這些按鍵通常由系統(tǒng)保留使用,如Home惋鸥、Back杂穷、Start Call、End Call揩慕、音量調(diào)節(jié))
    adb shell monkey --pct-syskeys 100 -v 10


    注:不常用亭畜。

  • --pct-appswitch <percent>
    作用:調(diào)整Activity啟動(dòng)的百分比。(在隨機(jī)的時(shí)間間隔中迎卤,Monkey將執(zhí)行一個(gè)startActivity()調(diào)用拴鸵,作為最大程度覆蓋被測(cè)包中全部Activity的一種方法)
    adb shell monkey --pct-appswitch 100 -v 5


    注:不常用。

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


    注:不常使用樟凄。

約束條件

  • -p <allowed-package-name>
    作用:如果你指定一個(gè)或多個(gè)包聘芜,Monkey將只允許訪問這些包中的Activity。如果你的應(yīng)用程序需要訪問這些包(如選擇聯(lián)系人)以外的Activity缝龄,你需要指定這些包汰现。如果你不指定任何包,Monkey將允許系統(tǒng)啟動(dòng)所有包的Activity叔壤。指定多個(gè)包瞎饲,使用多個(gè)-p,一個(gè)-p后面接一個(gè)包名炼绘。
    adb shell monkey -p com.android.browser -v 10


    注:常用參數(shù)嗅战。

  • -c <main-category>
    作用:如果你指定一個(gè)或多個(gè)類別,Monkey將只允許系統(tǒng)啟動(dòng)這些指定類別中列出的Activity俺亮。如果你不指定任何類別驮捍,Monkey將選擇謝列類別中列出的Activity疟呐,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多個(gè)類別使用多個(gè)-c东且,每個(gè)-c指定一個(gè)類別启具。
    adb shell monkey -p com.android.browser/mainActivity -v 10
    注:不常用。

  • --dbg-no-events
    作用:設(shè)置此選項(xiàng)珊泳,Monkey將執(zhí)行初始啟動(dòng)富纸,進(jìn)入一個(gè)測(cè)試Activity,并不會(huì)在進(jìn)一步生成事件旨椒。為了得到最佳結(jié)果晓褪,結(jié)合參數(shù)-v,一個(gè)或多個(gè)包的約束综慎,以及一個(gè)保持Monkey運(yùn)行30秒或更長(zhǎng)時(shí)間的非零值涣仿,從而提供了一個(gè)可以監(jiān)視應(yīng)用程序所調(diào)用的包之間轉(zhuǎn)換的環(huán)境。

    注:不常用示惊。

  • --hprof
    作用:設(shè)置此選項(xiàng)好港,將在Monkey生成事件序列前后生成profilling報(bào)告。在data/misc路徑下生成大文件(~5Mb)米罚,所以要小心使用钧汹。

    注:不常用。****

  • --ignore-crashes**
    作用:通常录择,應(yīng)用發(fā)生崩潰或異常時(shí)Monkey會(huì)停止運(yùn)行拔莱。如果設(shè)置此項(xiàng),Monkey將繼續(xù)發(fā)送事件給系統(tǒng)隘竭,直到事件計(jì)數(shù)完成塘秦。

    注:常用。

  • --ignore-timeouts**
    作用:通常动看,應(yīng)用程序發(fā)生任何超時(shí)錯(cuò)誤(如“Application Not responding”對(duì)話框)Monkey將停止運(yùn)行尊剔,設(shè)置此項(xiàng),Monkey將繼續(xù)發(fā)送事件給系統(tǒng)菱皆,直到事件計(jì)數(shù)完成须误。

    注:常用。

  • --ignore-security-exception **
    作用:通常仇轻,當(dāng)程序發(fā)生許可錯(cuò)誤(例如啟動(dòng)一些需要許可的Activity)導(dǎo)致的異常時(shí)京痢,Monkey將停止運(yùn)行。設(shè)置此項(xiàng)拯田,Monkey將繼續(xù)發(fā)送事件給系統(tǒng)历造,直到事件計(jì)數(shù)完成甩十。

    注:常用船庇。****

  • --kill-process-after-error**
    作用:通常吭产,當(dāng)Monkey由于一個(gè)錯(cuò)誤而停止時(shí),出錯(cuò)的應(yīng)用程序?qū)⒗^續(xù)處于運(yùn)行狀態(tài)鸭轮。設(shè)置此項(xiàng)臣淤,將會(huì)通知系統(tǒng)停止發(fā)生錯(cuò)誤的進(jìn)程。注意窃爷,正常(成功)的結(jié)束邑蒋,并沒有停止啟動(dòng)的進(jìn)程,設(shè)備只是在結(jié)束事件之后簡(jiǎn)單的保持在最后的狀態(tài)按厘。

    注:

  • --monitor-native-crashes**
    作用:監(jiān)視并報(bào)告Andorid系統(tǒng)中本地代碼的崩潰事件医吊。如果設(shè)置--kill-process-after-error,系統(tǒng)將停止運(yùn)行逮京。

    注:

  • --wait-dbg
    作用:停止執(zhí)行中的Monkey卿堂,直到有調(diào)試器和它相連接。

    注:


以下參數(shù)為Monkey官網(wǎng)中為列出懒棉,但命令行幫助中可以顯示的參數(shù)草描,先列出,以后抽時(shí)間整理其使用方法

  • --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

白名單和黑名單

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

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

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

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

這個(gè)命令的意思就是 只跑白名單里面的應(yīng)用策严,延遲200毫秒 執(zhí)行300次穗慕,黑名單的執(zhí)行方法和白名單一樣

其他實(shí)例

  • 跑ALL APK命令:(>2小時(shí))
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
  • 跑單個(gè)APK命令(>6小時(shí)):
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
  • 跑單個(gè)APK命令(>2小時(shí)):
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小時(shí)):
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小時(shí))加入黑名單:
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
  • 跑單個(gè)APK命令(>12小時(shí)):
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小時(shí)):
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小時(shí))加入黑名單:
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
  • 跑單個(gè)APK命令(>24小時(shí)):
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

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

其實(shí)僅僅就是拿到手機(jī)后暑脆,將/mnt/sdcard放入whitelist.txt或則blacklist.txt,里面放上應(yīng)用包名狐肢,然后adb shell---》mokey命名添吗,就可以了

來自

推薦閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市份名,隨后出現(xiàn)的幾起案子碟联,更是在濱河造成了極大的恐慌,老刑警劉巖僵腺,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲤孵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辰如,警方通過查閱死者的電腦和手機(jī)普监,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凯正,你說我怎么就攤上這事毙玻。” “怎么了廊散?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵桑滩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我允睹,道長(zhǎng)运准,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任缭受,我火速辦了婚禮胁澳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘米者。我一直安慰自己听哭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布塘雳。 她就那樣靜靜地躺著陆盘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪败明。 梳的紋絲不亂的頭發(fā)上隘马,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音妻顶,去河邊找鬼酸员。 笑死,一個(gè)胖子當(dāng)著我的面吹牛讳嘱,可吹牛的內(nèi)容都是我干的幔嗦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼沥潭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼邀泉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钝鸽,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤汇恤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拔恰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體因谎,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年颜懊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了财岔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风皿。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匠璧,靈堂內(nèi)的尸體忽然破棺而出桐款,到底是詐尸還是另有隱情,我是刑警寧澤患朱,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站炊苫,受9級(jí)特大地震影響裁厅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侨艾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一执虹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唠梨,春花似錦袋励、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蚁鳖,卻和暖如春磺芭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醉箕。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工钾腺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讥裤。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓放棒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親己英。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间螟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容