Monkey adb命令java
https://blog.csdn.net/tanqiaoxing/article/details/77772912android
Monkey是一款經過命令行來對咱們APP進行測試的工具,能夠運行在模擬器裏或真機上shell
第一步:搭建環境:主要是安裝和搭建java和sdk環境網絡
第二步:準備好要測試的項目,好比能夠是一個.apk安裝包,也能夠是已經安裝到手機上的軟件app
第三步:鏈接上Android測試設備,能夠是模擬器,固然也能夠是手機,經過adb 命令對測試項目進行Monkey測試。工具
adb connect 127.0.0.1:7555鏈接設備測試
adb devices 獲取鏈接設備及狀態 adb devices -l顯示鏈接設備名spa
adb get-state獲取設備狀態.net
設備的狀態有 3 鍾,device , offline , unknown
device:設備正常鏈接
offline:鏈接出現異常,設備無響應
unknown:沒有鏈接設備命令行
adb kill-server , adb start-server , 結束 adb 服務, 啓動 adb 服務,一般兩個命令一塊兒用
adb logcat , 打印 Android 的系統日誌
adb bugreport , 打印dumpsys、dumpstate、logcat的輸出,也是用於分析錯誤
adb uninstall 應用的包名 卸載制定應用
adb install xx.apk 把指定的apk包安裝到設備中(帶路徑adb install D:\adb\zhongchou.apk
)
adb shell pm list packages 查看apk在手機上的包名
adb shell pm list packages -f 查看應用的apk文件在手機上的安裝位置
adb pull , 將 Android 設備上的文件或者文件夾複製到本地
例如複製 Sdcard 下的 pull.txt 文件到 D 盤: adb pull sdcard/pull.txt d:\
複製重命名
adb pull sdcard/pull.txt d:\rename.txt
adb push 推送
adb push d:\push.txt sdcard/ sdcard/斜槓不能少
adb root , adb remount 獲取root權限
adb reboot , 重啓 Android 設備
adb shell monkey :給指定的設備發送壓力測試,number是要測試的次數。執行這個命令的效果就至關於有個手指在你的手機上亂點。
adb shell monkey -p pkgname :同上面效果同樣,只是對指定包名(pkgname)apk進行測試。
monkey -p com.gewara -v 1000
參數說明:-p後跟着軟件所在包名,-v後跟測試的次數)。這裏對該軟件進行1000次的自動化測試,幾分鐘內便可以完成測試。
adb shell monkey -p com.subject.zhongchou -v 10000
Monkey高級參數的應用
4.1.throttle參數:指定事件之間的間隔時間
adb shell monkey -throttle :milliseconds是時間值 ,單位毫秒
例:monkey -p com.subject.zhongchou -throttle 2000 100000
4.2.seed參數:僞隨機數生成器的seed 值。
adb shell monkey -s :若是用相同的 seed 值再次運行 Monkey ,它將生成相同的事件序列。
列:monkey -p com.subject.zhongchou -s 200 100000
4.3.touch:設置觸摸事件
adb shell monkey -pct-touch :指定touch事件的百分比percent
列:monkey -p com.subject.zhongchou -pct-touch 70 100000
4.4.motion:設置動做事件
adb shell monkey -pct-motion :指定motion事件的百分比percent
列:monkey -p com.subject.zhongchou -pct-motion 70 100000
4.5.trackball:設置軌跡球事件
adb shell monkey -pct-trackball :指定軌跡球事件百分比percent
monkey -p com.subject.zhongchou - pct-trackball 70 100000
4.6.nav:導航事件設置
adb shell monkey -pct-nav :指定基本導航事件百分比percent
4.7.majornav:設置主要導航事件
adb shell monkey -pct-majornav :設定主要導航事件百分比percent,兼容中間鍵,返回鍵,菜單按鍵
4.8.syskeys:設置事件
adb shell monkey -pct-syskeys :設定系統事件百分比percent,好比HOME,BACK,撥號及音量調節等事件。
4.9.appswitch:啓動Activity事件
adb shell monkey -pct-appswitch :設定啓動activity的事件百分比percent
4.10.anyevent:不經常使用事件設置
adb shell monkey -pct-anyevent :設定不經常使用事件地百分比
4.11.crashes :程序崩潰事件設置
參數: –ignore-crashes
用於指定當應用程序崩潰時(Force & Close錯誤),Monkey是否中止運行。若是使用此參數,即便應用程序崩潰,Monkey依然會發送事件,直到事件計數完成。
* 示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000
測試過程當中即便Weather程序崩潰,Monkey依然會繼續發送事件直到事件數目達到1000爲止;
* 示例2:adb shell monkey -p com.htc.Weather 1000
測試過程當中,若是Weather程序崩潰,Monkey將會中止運行。
4.12.timeouts:超時事件設置
adb shell monkey -ignore-timeouts :忽略超時事件
參數: –ignore-timeouts
用於指定當應用程序發生ANR(Application No Responding)錯誤時,Monkey是否中止運行。若是使用此參數,即便應用程序發生ANR錯誤,Monkey依然會發送事件,直到事件計數完成。
ANR:應用無響應
參數: –ignore-security-exceptions
用於指定當應用程序發生許可錯誤時(如證書許可,網絡許可等),Monkey是否中止運行。若是使用此參數,即便應用程序發生許可錯誤,
Monkey依然會發送事件,直到事件計數完成。
參數: –kill-process-after-error
用於指定當應用程序發生錯誤時,是否中止其運行。若是指定此參數,當應用程序發生錯誤時,應用程序中止運行並保持在當前狀態(注意:應用程序僅是靜止在發生錯誤時的狀態,系統並不會結束該應用程序的進程)
參數: –monitor-native-crashes
用於指定是否監視並報告應用程序發生崩潰的本地代碼
參數: –pct-{+事件類別} {+事件類別百分比}
用於指定每種類別事件的數目百分比(在Monkey事件序列中,該類事件數目佔總事件數目的百分比)
參數:使用說明:
示例:–pct-touch {+百分比}
調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)
adb shell monkey -p com.htc.Weather –pct-touch 10 1000
–pct-motion {+百分比}
調整動做事件的百分比(動做事件由屏幕上某處的一個down事件、一系列的僞隨機事件和一個up事件組成)
adb shell monkey -p com.htc.Weather –pct-motion 20 1000
–pct-trackball {+百分比}
調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)
adb shell monkey -p com.htc.Weather –pct-trackball 30 1000
–pct-nav {+百分比}
調整「基本」導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)
adb shell monkey -p com.htc.Weather –pct-nav 40 1000
–pct-majornav {+百分比}
調整「主要」導航事件的百分比(這些導航事件一般引起圖形界面中的動做,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)
adb shell monkey -p com.htc.Weather –pct-majornav 50 1000
–pct-syskeys {+百分比}
調整「系統」按鍵事件的百分比(這些按鍵一般被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵)
adb shell monkey -p com.htc.Weather –pct-syskeys 60 1000
–pct-appswitch {+百分比}
調整啓動Activity的百分比。在隨機間隔裏,Monkey將執行一個startActivity()調用,做爲最大程度覆蓋包中所有Activity的一種方法
adb shell monkey -p com.htc.Weather –pct-appswitch 70 1000
–pct-anyevent {+百分比}
調整其它類型事件的百分比。它包羅了全部其它類型的事件,如:按鍵、其它不經常使用的設備按鈕、等等
adb shell monkey -p com.htc.Weather
–pct -anyevent 100 1000* 指定多個類型事件的百分比:
adb shell monkey -p com.htc.Weather –pct-anyevent 50 –pct-appswitch 50 1000
注意:各事件類型的百分比總數不能超過100%;
測試語句如:adb -s emulator-5556 shell monkey -p 包名 -v 10000
adb -s emulator-5556 shell monkey -p com.soft0754.android -vvv 10000 > C:/log.txt
-v 爲 verbose的縮寫,就是詳細輸出事件等級,這個3個v就是輸出等級1至3的全部事件,而後再使用管道命令將輸出結果放到一個文本里面方便查看.接下來就是看你的程序能不能在這樣的折騰下堅持下去了.
實例:adb -s emulator-5556 shell monkey -p 包名 –ignore-crashes –ignore-timeouts –ignore-native-crashes –pct-touch 30 -s 1 -v -v –throttle 200 100000 2 logcat >C:/error.txt 1 logcat>C:/info.txt
Monkey log分析
(1) 何時會有Log文件的產生 ?
程序異常退出 , uncaused exception
程序強制關閉 ,Force Closed (簡稱FC)
程序無響應 , Application No Response (簡稱ANR),通常主線程超過5秒麼有處理就會ANR
手動生成
拿到一個日誌文件,要分紅多段來看 。 log文件很長,其中包含十幾個小單元信息,但不要被嚇到 ,事實上他主要由三大塊兒組成 。
1,系統基本信息 ,包括 內存,CPU ,進程隊列 ,虛擬內存 , 垃圾回收等信息
—— MEMORY INFO (/proc/meminfo) ——
—— CPU INFO (top -n 1 -d 1 -m 30 -t) ——
—— PROCRANK (procrank) ——
—— VIRTUAL MEMORY STATS (/proc/vmstat) ——
—— VMALLOC INFO (/proc/vmallocinfo) ——
2,時間信息 , 也是咱們主要分析的信息 。
—— VMALLOC INFO (/proc/vmallocinfo) ——
—— EVENT INFO (/proc/vmallocinfo) ——
3,虛擬機信息 , 包括進程的,線程的跟蹤信息,這是用來跟蹤進程和線程具體點的好地方 。 —— VM TRACES JUST NOW (/data/anr/traces.txt.bugreport: 2011-01-15 16:49:02) ———— VM TRACES AT LAST ANR (/data/anr/traces.txt: 2011-01-15 16:49:02) ——