monkey測試簡介
存放路徑:Monkey程序是Android系統自帶的,由Java語言寫成,在Android文件系統中的存放路徑是: /system/framework/monkey.jar。
大致操作流程:通過名為“monkey”的Shell腳本去啟動Monkey.jar程序(shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey),在你指定的APP應用上模擬用戶點擊,滑動,輸入等操作以極快的速度來對設備程序進行壓力測試,檢測程序是否會發生異常,然後通過日誌進行排錯。
主要目的:測試app 是否會是否會Crash。
操作命令格式:adb shell monkey {+命令參數}
獲取Android包名方法:(注意:請開啟手機開發者模式,請開啟手機USB調試模式)
查看正在運行的程序的包名:
adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'
(例如:我清理手機後臺之後,開啟了QQ,輸入命令之後,就會出現QQ的進程,框的地方就是qq的包名)
monkey常用操作命令簡介
-p 包名:指定應用程序。例如:adb shell monkey -p 包名 事件總數
-v:打印log級別,-v越多日誌信息越詳細,最多支持3個。例如:adb shell monkey -p 包名 -v -v -v 事件總數
-s:偽隨機數生成器的 seed 值,通俗的說就是個標記,後面跟數字,例如:執行adb shell monkey -s 1 -p 包名 事件總數,這個我標記了-s 1,命令操作完之後,我發現有日誌報錯,我想重新執行這個monkey操作,那你就可以繼續執行這個命令,排錯時常用。
-f:後接測試腳本名,例如:adb shell monkey -f 腳本名 事件總數
--throttle:翻譯減速的意思,後面接時間,單位為ms,,表示事件之間的固定延遲,如果不接該項,monkey將不會延遲,例如:adb shell monkey --throttle 500 -p 包名 事件總數
--pct-事件類別 11個事件百分比控制(有的是9種事件,沒有--pct-pinchzoom,--pct-rotation事件)由安卓SDK決定
11種事件,按順序羅列的
--pct-touch {+百分比}:0
翻譯觸摸,觸摸事件泛指發生在某一位置的一個down-up事件,點擊
--pct-motion {+百分比}:1
翻譯動作,動作事件泛指從某一位置接下(即down事件)後經過一系列偽隨機事件後彈出(即up事件)
--pct-pinchzoom {+百分比}:2
翻譯二指縮放,智能機上的放大縮小手勢操作事件
--pct-trackball {+百分比}: 3
翻譯軌跡,軌跡事件包括一系列的隨機移動,以及偶爾跟隨在移動後面的點擊事件
--pct-rotation {+百分比}:4
翻譯屏幕旋轉,橫屏豎屏事件
--pct-nav {+百分比}:5
翻譯基本導航,基本導航事件主要來自方向輸入設備的上、下、左、右事件
--pct-majornav {+百分比}:6
翻譯主要導航,主要導航事件通常指引發圖形界面的一些動作,如鍵盤中間按鍵、返回按鍵、菜單按鍵等
--pct-syskeys {+百分比}:7
翻譯系統按鍵,系統按鍵事件通常指僅供系統使用的保留按鍵,如HOME鍵、BACK鍵、撥號鍵、掛斷鍵、音量鍵等
--pct-appswitch {+百分比}:8
翻譯應用啟動,應用啟動事件(activity launches)即打開應用,通過調用startActivity()方法最大限度地開啟該package下的所有應用
--pct-flip {+百分比}:9
翻譯翻轉,鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區域,鍵盤收回
--pct-anyevent {+百分比}:10
翻譯其他類型,其他類型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等
百分比控制以及使用
首先注意一點,這個Event percentages在不同版本的SDK版本中順序可能會不一樣。
如果在monkey參數中不指定事件參數,這些動作都是隨機分配的,11個動作其分配的百分比之和為100%,通過添加命令選項來控制每個事件的百分比。
添加事件百分比之後的情況,舉例添加--pct-touch事件百分比為100:
命令:
adb shell monkey -v -p 包名 --pct-touch 100 100
結果:
說明:尷尬啊,我這個vent percentages竟然有12種,多了一種什麼我也不知道,但我敢肯定這跟SDK版本有關係,想知道的同學可以自己從安卓SDK中反編譯出monkey源碼,通過查看源碼中的MonkeySourceRandom.java文件獲知!查出來的同學可以告知我下,我想做伸手黨
說明:尷尬啊,我這個vent percentages竟然有12種,多了一種什麼我也不知道,但我敢肯定這跟SDK版本有關係,想知道的同學可以自己從安卓SDK中反編譯出monkey源碼,通過查看源碼中的MonkeySourceRandom.java文件獲知!查出來的同學可以告知我下,我想做伸手黨
7.--ignore-crashes:翻譯忽略崩潰,當應用程序崩潰或發生失控異常時,monkey將繼續運行直到計數完成。如果不設置此項,monkey遇到上述崩潰或異常將停止運行。
8.--ignore-timeouts:翻譯忽略超時,當應用程序發生任何超時錯誤(如ANR,即Application Not Responding)時,monkey將繼續運行直到計數完成。如果不設置此項,monkey 遇到此類超時將停止運行。
monkey測試中,如何終止運行:
方法一:
新建一個窗口
執行:
adb shell
,再執行
ps | grep monkey
,返回來的第一個數字,即是monkey的進程號然後kill pid 進程號。如圖
方法二:對手機進行重啟
新建一個窗口
執行
adb reboot
log日誌導出
保存到電腦上。
執行:
adb shell monkey -p 包名 -v 1000 > /Users/weixiangyang/Desktop/monkey.txt
例如:保存到電腦上標準流與錯誤流分開保存,分別命名為info.txt,error.txt
info.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時發送的各種事件,如觸摸事件的位置等等。
error.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時產生的一些ANR、強制關閉等異常。 執行:
adb shell monkey -p 包名 -v 1000 1>/Users/weixiangyang/Desktop/info.txt 2>/Users/weixiangyang/Desktop/error.txt
例如:保存到電腦上並命名為monkey.txt
保存到手機上。注意:手機要root
例如:保存到手機上並命名為monkey.txt
執行:
adb shell
說明:進入adb shell後就相當於進入linux的root下面,但是沒有權限在裡面創建文件,所以手機要root
monkey -p 包名 -v 1000 > /mnt/sdcard/monkey.txt
注意:我的 adb shell
跟monkey XXX
是分開執行的,分兩行!!!
例如:保存到電腦上標準流與錯誤流分開保存,分別命名為info.txt,error.txt
執行:
adb shell monkey -p 包名 -v 1000 1>/mnt/sdcard/info.txt 2>/mnt/sdcard/error.txt
程序爬蟲抓取有用資源共享給大家
關注後,私信回覆【資源包】獲取如下內容,
測試資料、測試工具、Python、效率軟件、自動化測試報告、梯子 等
閱讀更多 馬蟻蛋 的文章