Monkey系列之02--命令詳解


本文主要介紹Monkey的相關命令,具體Monkey的操作,詳見本系列的第一篇文章

1、包名指定:

可以指定一個,可以指定多個,也可以不指定,隨機去操作

不指定包名:adb shell monkey ? -v 500 ?>F:/monkeylog2018.txt,隨機500個事件執行,沒有具體的包,在手機上隨機操作各種app或系統功能,下圖日志里,using了各種app的activity,相當于是對整機進行測試

不指定包

指定一個包名的命令:adb shell monkey -p com.aaa.aaaaaaaa ?-v 500 >F:/monkeylog2018.txt,直接對aaa這個app進行500次隨機事件并寫入txt

指定多個包名的命令:adb shell monkey -p com.aaa.aaaaaaaa ?-p com.bbb.bbbbb -v 500 >F:/monkeylog2018.txt ?兩次指定兩個包名,合計執行500次隨機事件,寫入日志文檔。在log里可以看到using兩個activity

指定兩個包

2、日志級別:

分為Level0-Level2三個級別,0僅提供啟動提示、測試完成和最終結果等少量信息,1提供較為詳細的日志,包括每個發送到Activity的事件信息,2最詳細的日志,包括了測試中選中/未選中的Activity信息。用-v表示,想用幾級就指定幾個-v

Level0:adb shell monkey ? -v 500 ?>F:/monkeylog2018.txt

Level1:adb shell monkey ? -v ?-v ?500 ?>F:/monkeylog2018.txt

Level2:adb shell monkey ? -v ?-v ?-v ?500 ?>F:/monkeylog2018.txt

上圖也是level2級別的日志效果,會詳細顯示哪些包被using了,哪些被拒絕using了,如果是0級別的,則看不到這些信息

3、SEED值:

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

Monkey測試1:adb shell monkey -p com.htc.Weather –s 10 100

Monkey測試2:adb shell monkey -p com.htc.Weather –s 10 100

-s 10 前后兩條命令相同,那么其隨機的內容也是相同的,這樣可以在對比測試的時候用到

4、時延控制:

用于指定用戶操作間的時延,單位是毫秒,用--throttle參數,注意是兩個減號

adb shell monkey -p com.huawei.Weather –throttle 3000 100,此命令是隨機100次事件,但是每次需要延遲3秒做下一個動作,這樣可以給app留有響應時間,連網時間,加載時間,否則事件發送太快,來不及響應就要執行下一個事件,會導致結果不準確,類似LR里面的思考時間

上面的命令執行后,在日志里會看到這樣的記錄:Sleeping for 3000 milliseconds,同時在手機界面上也會有直觀的感應,各種點擊操作都會有3秒的延時

5、忽略執行:

--ignore-crashes:

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

示例1:adb shell monkey -p com.huawei.Weather --ignore-crashes 1000 ? ? 測試過程中即使Weather程序崩潰,Monkey依然會繼續發送事件直到事件數目達到1000為止;

示例2:adb shell monkey -p com.huawei.Weather 1000 ? ? ?測試過程中,如果Weather程序崩潰,Monkey將會停止運行。

--ignore-timeouts:

忽略超時:用于指定當應用程序發生ANR(Application No Responding)錯誤時,Monkey是否停止運行。如果使用此參數,即使應用程序發生ANR錯誤,Monkey依然會發送事件,直到事件計數完成。adb shell monkey -p com.huawei.Weather --ignore-timeouts 1000

--ignore-security-exceptions:

忽略安全異常:用于指定當應用程序發生許可錯誤時(如證書許可,網絡許可等),Monkey是否停止運行。如果使用此參數,即使應用程序發生許可錯誤,Monkey依然會發送事件,直到事件計數完成。adb shell monkey -p com.huawei.Weather --ignore-security-exceptions 1000

--kill-process-after-error:

發生錯誤后直接殺掉進程:用于指定當應用程序發生錯誤時,是否停止其運行。如果指定此參數,當應用程序發生錯誤時,應用程序停止運行并保持在當前狀態(注意:應用程序僅是靜止在發生錯誤時的狀態,系統并不會結束該應用程序的進程)。adb shell monkey -p com.huawei.Weather?--kill-process-after-error?1000

--monitor-native-crashes:

跟蹤本地方法崩潰問題:用于指定是否監視并報告應用程序發生崩潰的本地代碼,adb shell monkey -p com.huawei.Weather?--kill-process-after-error ?--monitor-native-crashes 1000

6、指定事件百分比:

用于指定每種類別事件的數目百分比(在Monkey事件序列中,該類事件數目占總事件數目的百分比),雖然事件是隨機的,但是你可以指定其中某種動作的比例,根據app的特點而進行設置,某些app滑動多,某些app點擊多,這樣可以更貼近app應用場景的設置隨機事件進行測試

--pct-{+事件類別} {+事件類別百分比}:

--pct-touch {+百分比}:觸摸事件:adb shell monkey -p com.huawei.Weather --pct-touch 10 1000

--pct-motion {+百分比}:動作事件:adb shell monkey -p com.huawei.Weather --pct-motion10 1000

--pct-trackball {+百分比}:軌跡事件:adb shell monkey -p com.huawei.Weather --pct-trackball?10 1000

--pct-nav {+百分比}:基本導航:adb shell monkey -p com.huawei.Weather --pct-nav?10 1000

--pct-majornav {+百分比}:主要導航:adb shell monkey -p com.huawei.Weather --pct-majornav?10 1000

--pct-syskeys {+百分比}:系統按鍵:adb shell monkey -p com.huawei.Weather --pct-syskeys?10 1000

--pct-appswitch {+百分比}:啟動activity(日志里見過這個switch吧):adb shell monkey -p com.huawei.Weather --pct-appswitch? 10 1000

--pct-anyevent {+百分比}:其他事件:

指定單個類型事件的百分比:

adb shell monkey -p com.huawei.Weather --pct -anyevent 20 ?1000

指定多個類型事件的百分比:

adb shell monkey -p com.huawei.Weather --pct-anyevent 30 ?--pct-appswitch 30 ? 1000

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

總結:

本文中所舉的栗子都是單個參數的命令,實際使用過程中,大部分是組合命令,比如指定包,日志級別,忽略報錯等參與組合放在一條命令里執行的

adb shell monkey -p com.aaa.aaaaa -v -v -v --throttle 500 --pct-anyevent 100 5000 >F:/monkeylog.txt

adb shell monkey -p com.aaa.aaaaa -s 23? --throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 100000 >F:/monkeylog.txt

Monkey架構圖



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

推薦閱讀更多精彩內容