本文主要介紹Monkey的相關命令,具體Monkey的操作俯萌,詳見本系列的第一篇文章
1果录、包名指定:
可以指定一個,可以指定多個咐熙,也可以不指定弱恒,隨機去操作
不指定包名:adb shell monkey ? -v 500 ?>F:/monkeylog2018.txt,隨機500個事件執(zhí)行棋恼,沒有具體的包返弹,在手機上隨機操作各種app或系統(tǒng)功能,下圖日志里爪飘,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 ?兩次指定兩個包名师崎,合計執(zhí)行500次隨機事件默终,寫入日志文檔。在log里可以看到using兩個activity
2、日志級別:
分為Level0-Level2三個級別齐蔽,0僅提供啟動提示两疚、測試完成和最終結果等少量信息,1提供較為詳細的日志肴熏,包括每個發(fā)送到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值:
用于指定偽隨機數(shù)生成器的seed值坛掠,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的治筒,用-s參數(shù)屉栓。
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參數(shù)域滥,注意是兩個減號
adb shell monkey -p com.huawei.Weather –throttle 3000 100,此命令是隨機100次事件蜈抓,但是每次需要延遲3秒做下一個動作启绰,這樣可以給app留有響應時間,連網時間沟使,加載時間委可,否則事件發(fā)送太快,來不及響應就要執(zhí)行下一個事件腊嗡,會導致結果不準確着倾,類似LR里面的思考時間
上面的命令執(zhí)行后,在日志里會看到這樣的記錄:Sleeping for 3000 milliseconds叽唱,同時在手機界面上也會有直觀的感應屈呕,各種點擊操作都會有3秒的延時
5、忽略執(zhí)行:
--ignore-crashes:
忽略崩潰:用于指定當應用程序崩潰時(Force & Close錯誤)棺亭,Monkey是否停止運行虎眨。如果使用此參數(shù),即使應用程序崩潰,Monkey依然會發(fā)送事件,直到事件計數(shù)完成嗽桩。
示例1:adb shell monkey -p com.huawei.Weather --ignore-crashes 1000 ? ? 測試過程中即使Weather程序崩潰岳守,Monkey依然會繼續(xù)發(fā)送事件直到事件數(shù)目達到1000為止;
示例2:adb shell monkey -p com.huawei.Weather 1000 ? ? ?測試過程中碌冶,如果Weather程序崩潰湿痢,Monkey將會停止運行。
--ignore-timeouts:
忽略超時:用于指定當應用程序發(fā)生ANR(Application No Responding)錯誤時扑庞,Monkey是否停止運行譬重。如果使用此參數(shù),即使應用程序發(fā)生ANR錯誤罐氨,Monkey依然會發(fā)送事件臀规,直到事件計數(shù)完成。adb shell monkey -p com.huawei.Weather --ignore-timeouts 1000
--ignore-security-exceptions:
忽略安全異常:用于指定當應用程序發(fā)生許可錯誤時(如證書許可栅隐,網絡許可等)塔嬉,Monkey是否停止運行。如果使用此參數(shù)租悄,即使應用程序發(fā)生許可錯誤谨究,Monkey依然會發(fā)送事件,直到事件計數(shù)完成泣棋。adb shell monkey -p com.huawei.Weather --ignore-security-exceptions 1000
--kill-process-after-error:
發(fā)生錯誤后直接殺掉進程:用于指定當應用程序發(fā)生錯誤時胶哲,是否停止其運行。如果指定此參數(shù)外傅,當應用程序發(fā)生錯誤時纪吮,應用程序停止運行并保持在當前狀態(tài)(注意:應用程序僅是靜止在發(fā)生錯誤時的狀態(tài)俩檬,系統(tǒng)并不會結束該應用程序的進程)萎胰。adb shell monkey -p com.huawei.Weather?--kill-process-after-error?1000
--monitor-native-crashes:
跟蹤本地方法崩潰問題:用于指定是否監(jiān)視并報告應用程序發(fā)生崩潰的本地代碼,adb shell monkey -p com.huawei.Weather?--kill-process-after-error ?--monitor-native-crashes 1000
6棚辽、指定事件百分比:
用于指定每種類別事件的數(shù)目百分比(在Monkey事件序列中技竟,該類事件數(shù)目占總事件數(shù)目的百分比),雖然事件是隨機的屈藐,但是你可以指定其中某種動作的比例榔组,根據(jù)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 {+百分比}:系統(tǒng)按鍵: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
注意:各事件類型的百分比總數(shù)不能超過100%
總結:
本文中所舉的栗子都是單個參數(shù)的命令,實際使用過程中包归,大部分是組合命令锨推,比如指定包,日志級別,忽略報錯等參與組合放在一條命令里執(zhí)行的
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