簡介
前邊幾篇介紹了Monkey以及Monkey的事件,今天就給小伙伴們介紹和分享一下Monkey的參數。
首先我們看一下這幅圖來大致了解一下:
1、Monkey 命令 基本參數介紹
-p <允許的包名列表>
用此參數指定一個或多個包。指定包之后,monkey將只允許系統啟動指定的app。如果丌指定包, monkey將允許系統啟動設備中的所有app。
指定一個包:
adb shell monkey -p com.shjt.map 100
指定多個包:
adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100
-v
用亍指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別,分別對應的參數如下 表所示:
Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,僅提供啟動提示、測試完成和最終結果等少量信息 Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供較為詳細的日志,包括每個發送到Activity的事件信息 Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最詳細的日志,包括了測試中選中/未選中的Activity信息
-s(隨機數種子)
用亍指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。 示例:
monkey測試1:
adb shell monkey -p com.shjt.map –s 10 100
monkey測試2:
adb shell monkey -p com.shjt.map –s 10 100
--throttle <毫秒>
用亍指定用戶操作(即事件)間的時延,單位是毫秒;如果丌指定這個參數,monkey會盡可能快的 生成和發送消息。
示例:
adb shell monkey -p com.shjt.map --throttle 3000 100
2、monkey 參數
2.1參數分類
- 常規類參數
- 事件類參數
- 約束類參數
- 調試類參數
2.2常規類參數
常規類參數包括幫助參數和日志信息參數。幫助參數用於輸出Monkey命令使用指導;日志信息參數將日志分為三個級別,級別越高,日志的信息越詳細。
1.幫助類參數
monkey -h
2.日志級別
$ adb shell monkey -v <event-count>
-v:打印出日志信息,每個-v將增加反饋信息的級別。-v越多日志信息越詳細,不過目前最多支持3個-v,即:
2.3事件類參數
事件類參數的作用是對隨機事件進行調控,從而使其遵照設定運行,如設置各種事件的百分比、設置事件生成所使用的種子值等。頻率參數主要限制事件執行的時間間隔。
1.執行指定腳本
$ adb shell monkey -f <scriptfile> <event-count> eg: $ adb shell monkey -f /mnt/sdcard/test1
2.偽隨機數生成種子值
使用 -s命令可以重復執行之前的偽隨機操作。本身每次執行偽隨機事件操作也會默認生成一個seed值
$ adb shell monkey -s <seed> <event-count> eg: $ adb shell monkey -s 666 100
3.設置間隔
如果你希望在每一個指令之間加上固定的間隔時間,可以用--throttle(注意,前面是--)命令。
$ adb shell monkey --throttle <milliseconds> eg: $ adb shell monkey --throttle 3000 5
--throttle:后面接時間,單位為ms(<milliseconds>),表示事件之間的固定延遲(即執行每一個指令間隔的時間),若不接該選項,monkey將不會延遲。
4.調整觸摸事件百分比
如果你希望調整觸摸事件的百分比,記住使用--pct-touch。
$ adb shell monkey --pct-touch eg: $ adb shell monkey -v -v --pct-touch 100 200
<percent>--pct-touch:后面接觸摸事件百分比
注意:觸摸事件不單單是按鍵,它泛指發生在某一位置的一個down-up事件。
5.調整手勢事件百分比
$ adb shell monkey --pct-motion eg: $ adb shell monkey -v -v --pct-motion 100 200
6.調整應用啟動事件的百分比
如果你希望調整應用啟動事件的百分比,記住使用--pct-app-switch。
$ adb shell monkey --pct-appswtich <percent>
--pct-appswitch:后面接應用啟動事件百分比。
應用啟動事件(即activity launches)俗稱打開應用,通過調用startActivity()方法最大限度地開啟該package下的所有應用。
7.調整屏幕旋轉事件百分比
$ adb shell monkey --pct-rotation <percent>
--pct-rotation 后面接屏幕旋轉事件的比例值。
8.其他參數
2.4約束類參數
1.包約束
-p:后面接一個或多個包名(<allowed-package-name>),如果應用需要訪問其他包里的Activity,那相關的包也需要在此同時指定。如果不指定任何包,monkey將允許系統啟動全部包里的Activity。
$ adb shell monkey -p <allowed-package-name> <event-count> eg: $ adb shell monkey -p com.tal.kaoyan 500 $ adb shell monkey -p com.tal.kaoyan -p com.tencent.mm 500
2.activity類約束
如果你希望將monkey限制在一個或幾個類別中,使用如下命令:
adb shell monkey -c <main-category> <event-count>
以下命令表示運行Intent.CATEGORY_LAUNCHER類別的Activity並發送1000個隨機事件。
$ adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000
2.5調試類參數
1.應用程序崩潰后繼續發送事件
如果你希望monkey在應用程序崩潰后繼續發送事件,則需要用到--ignore-crashes命令
$ adb shell monkey --ignore-crashes <event-count>
在設置此選項后,當應用程序崩潰或發生失控異常時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到上述崩潰或異常將停止運行。
2.超時錯誤繼續發送事件
如果你希望monkey在任何超時錯誤發生后繼續發送事件,則需要用到--ignore-timeouts命令。
$ adb shell monkey --ignore-timeouts
<event-count>--ignore-timeouts:在設置此選項后,當應用程序發生任何超時錯誤(如ANR,即Application Not Responding)時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到此類超時對話框將停止運行。
3.應用程序權限錯誤發生后繼續發送事件
如果你希望monkey在應用程序權限錯誤發生后繼續發送事件,則需要用到--ignore-security-exceptions命令。
$ adb shell monkey --ignore-security-exceptions
<event-count>--ignore-security-exceptions:在設置此選項后,當應用程序發生任何權限錯誤(如啟動一個需要某些權限的Activity)時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到此類權限錯誤將停止運行。
4.其他
3、Monkey參數應用綜合案例
3.1測試場景
測試考研幫app Android版。測試希望通過Monkey來模擬用戶的隨機操作,檢查被測應用是否會出現異常(應用崩潰或者無響應)。
3.2需求分析
1、測試是指定應用,因此需要使用-p指定被測app包名:com.tal.kaoyan
2、這個測試的目的是希望模擬用戶操作,因此需要讓Monkey執行的事件盡可能地接近用戶的常規操作,這樣才可以最大限度地發現用戶使用過程中可能出現的問題。因此需要對Monkey執行的事件百分比做一些調整:
觸摸事件和手勢事件是用戶最常見的操作,所以通過--pct-touch和--pct-motion將這兩個事件的占比調整到40%與25%;目標應用包含了多個Activity,為了能覆蓋大部分的Activity,所以通過--pct-appswitch將Activity切換的事件占比調整到10%;被測應用在測試中出現過不少橫豎屏之間切換的問題,這個場景也必須關注,因此通過--pct-rotation把橫豎屏切換事件調整到10%。
3、使用-s參數來指定命令執行的seed值 Monkey會根據seed值來生成對應事件流,同一個seed生成的事件流是完全相同的。這里指定了seed值,是為了測試發現問題時,便於進行問題復現。
4、使用--throttle參數來控制Monkey每個操作之間的時間間隔 指定操作之間的時間間隔,一方面是希望能更接近用戶的操作場景,正常用戶操作都會有一定的時間間隔;另一方面也是不希望因為過於頻繁的操作而導致系統崩潰,尤其是在比較低端的手機上執行測試時。因此通過--throttle設置Monkey每個操作固定延遲0.4秒。
5、使用--ignore-crashs和--ignore-timeouts參數使Monkey遇到意外時能繼續執行 在執行Monkey測試時,會因為應用的崩潰或沒有響應而意外終止,所以需要在命令中增加限制參數--ignore-crash和--ignore-timeouts,讓Monkey在遇到崩潰或沒有響應的時候,能在日志中記錄相關信息,並繼續執行后續的測試。
6、使用-v指定log的詳細級別 Monkey的日志輸出有3個級別:日志的級別越高,其詳細程度也越高。為了方便問題的定位,這里將日志設為 -v -v.
3.3測試命令
adb shell monkey -p com.tal.kaoyan --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 1666 --throttle 400 --ignore-crashes --ignore-timeouts -v -v 200
4、小結
好了,Monkey參數暫且到這里,告一段落,下一篇計划介紹分享Monkey的日志管理,各位小伙伴敬請期待哈!!!
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點擊右邊的小球即可)
個人公眾號
微信群