Android SDK命令行工具Monkey參數(shù)及使用解析
什么是Monkey?
Monkey是Android SDK提供的一個命令行工具,可以簡單方便的發(fā)送偽隨機的用戶事件流,對Android APP做壓力(穩(wěn)定性)測試。主要是為了測試app是否存在無響應(yīng)和崩潰的情況。
Monkey的使用:
1、進入adb shell 環(huán)境
在windows環(huán)境中,進入DOS界面,在界面中,輸入adb shell即可進入adb shell環(huán)境
(注意:adb shell服務(wù)使用的5037的端口,如果此端口被其他進程占用時,將不能正常啟動adb shell,需關(guān)閉占用該端口的進程,重新啟動adb shell)
2、查看包名
adb shell pm list packages (-f:所有應(yīng)用的包名,-3:非系統(tǒng)安裝的包名)
需要控制monkey執(zhí)行的時間,可以通過設(shè)置執(zhí)行時長/事件發(fā)送延時,計算出需要執(zhí)行的次數(shù)。
如:想要monkey運行24小時,每100毫秒發(fā)送一個事件。24*60*60*1000/100=864000(次)
adb shell monkey -p *** -v -v -v --ignore-crashes --ignore-timeoutss --throttle 100 864000 >D:\monkey.log
表示:此次monkey將會運行24小時
Monkey命令參數(shù)說明:
monkey的命令參數(shù)分為:
基礎(chǔ)參數(shù):-v 、-s 、-p 、--throttle等
調(diào)試選項:--ignore-crashes等
事件類型:--pct-touch等
(一)基礎(chǔ)參數(shù)
1、最簡單的monkey命令(monkey 100)
表示:在設(shè)備上,針對整個系統(tǒng)發(fā)送100個偽隨機事件。
2、-v參數(shù)
用于指定反饋信息級別(信息級別就是日志的詳細程度)總共分為3級,默認為-v(對應(yīng):level0)
-v:只提供啟動提示、測試完成提示和最終結(jié)果等少量信息。
-v -v:較為詳細的日志,包括每個發(fā)送到activity的時間信息。
-v -v -v:最詳細的日志,包括測試中選中/未選中的activity信息。
注意:在monkey測試完成時,最后一定會有一個:monkey finished標識。
3、-p參數(shù)
在我們測試時,是針對具體的app進行測試的,所以在使用monkey測試時,我們需要提供具體的app包名給monkey,此時就需要用到參數(shù)-p。在-p后跟隨app包名。
在測試時,可以不指定包名,此時monkey會在測試設(shè)備上隨機啟動app進行操作;如果只需要測試一個app,使用一個-p即可;如果有多個app同時測試,可以直接使用-p 包名1 -p 包名2指定具體要測試的app。
4、-s參數(shù)
種子值(seed),因為monkey是發(fā)送的是偽隨機的事件流,但是如果兩次seed值相同,那兩次monkey測試所產(chǎn)生的事件序列也相同。(所以一般在測試時要記錄seed值,以防出現(xiàn)無響應(yīng)和crash,不容易驗證。)
注意:-s需要跟在包名后,次數(shù)前
5、--throttle參數(shù)
設(shè)置執(zhí)行操作的延遲時間(毫秒)--是指兩個事件之間的間隔,如果沒有指定此參數(shù),會盡可能快的生成和發(fā)送事件。
(二)調(diào)試選項
1、--ignore-crashes
用于指定當應(yīng)用程序崩潰時,Monkey是否停止運行。如果使用此參數(shù),即使應(yīng)用程序崩潰,monkey依然會發(fā)送事件,直到事件計數(shù)完成。
2、---ignore-timeouts
用于指定當應(yīng)用程序發(fā)生ANR(Application No Responding)錯誤時,Monkey是否停止運行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生ANR錯誤,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
3、--ignore-security-exceptionss
用于指定當應(yīng)用程序發(fā)生許可錯誤時(如證書許可,網(wǎng)絡(luò)許可等),Monkey是否停止運行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生許可錯誤,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
4、--kill-process-after-error
用于指定當應(yīng)用程序發(fā)生錯誤時,是否停止其運行。如果指定此參數(shù),當應(yīng)用程序發(fā)生錯誤時,應(yīng)用程序停止運行并保持在當前狀態(tài)(注意:應(yīng)用程序僅是靜止在發(fā)生錯誤時的狀態(tài),系統(tǒng)并不會結(jié)束該應(yīng)用程序的進程)。
5、--monitor-native-crashes
用于指定是否監(jiān)視并報告應(yīng)用程序發(fā)生崩潰的本地代碼
6、--hprof
該選項設(shè)置后,將會在monkey事件序列前后立刻生成report,大小為大于5MB,存儲在/data/misc
(三)事件類型
monkey在發(fā)送偽隨機事件時,是有不同的類型的。默認隨機分配比例,也可以指定其百分比。如果不設(shè)置會是--pct-anyevent為100%,也就是純隨機事件;如果配置了其他參數(shù),但是不夠100%,余下的百分比部分也是--pct-anyevent事件。
具體事件類型分別為:
1:觸摸事件--pct-touch
調(diào)整touch觸屏事件的百分比,觸碰事件就是指在屏幕上的一個單獨位置的一次點擊/抬起的事件。
2:滑屏事件--pct-motion(手勢事件)
?。ㄊ謩菔录怯梢粋€在屏幕某處的按下事件、一系列的偽隨機移動、一個抬起事件組成)即一個滑動操作,但是是直線的,不能拐彎)
3:軌跡球--pct-trackball
?。ㄜ壽E球事件包括一個或多個隨機移動,有時還伴有點擊。軌跡球現(xiàn)在智能手機上已經(jīng)沒有了,就是類似手柄的方向鍵一樣)
4:旋轉(zhuǎn)(--pct-rotation)
旋轉(zhuǎn)屏幕
5:導(dǎo)航--pct-nav
?。▽?dǎo)航事件包括上下左右,如方向輸入設(shè)備的輸入)老手機的上下左右鍵,智能機上沒有)
6:主導(dǎo)航--pct-majornav
調(diào)整主要導(dǎo)航事件的百分比(如中間鍵、取消、確定或菜單引發(fā)的圖形接口的動作)
7:系統(tǒng)按鍵--pct-syskeys
調(diào)整系統(tǒng)按鍵事件,如:home/back/startcall/endcall以及音量控制鍵等
8:app切換--pct-appswitch
調(diào)整啟動activity的百分比,在隨機間隔中,執(zhí)行一個startActivity()方法調(diào)用,作為一種最大化的覆蓋安裝包的所有的activity的方法
9:鍵盤翻轉(zhuǎn)(--pct-flip)
10:隨機--pct-anyevent
調(diào)整其他類型的事件的百分比,比如按鍵或其他不太常用到的一些事件的百分比
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Kotlin如何安全訪問lateinit變量的實現(xiàn)
這篇文章主要介紹了Kotlin如何安全訪問lateinit變量的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-01-01Android開發(fā)-之監(jiān)聽button點擊事件的多種方法
本篇文章主要是介紹了Android開發(fā)之監(jiān)聽button點擊事件的方法,Android開發(fā)-之監(jiān)聽button點擊事件的方法總結(jié),有興趣的可以了解一下。2016-11-11Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法
這篇文章主要介紹了Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法,較為詳細的分析了Android基于TCP實現(xiàn)客戶端接收數(shù)據(jù)的相關(guān)技巧與注意事項,需要的朋友可以參考下2016-04-04