一、monkey簡介
Monkey是一個運行在Android目標機器的一個應用,是一個基於命令行的應用界面測試工具,它可以獨立的運行。根據用戶提供的參數,它會根據算法自動生成不同用戶事件的僞隨機流來驅動測試的進行,比如點擊,觸控,手勢,以及一系列系統級別的事件,然後把這些事件發送到Android操作系統來觸發事件的發生。用戶可以使用Monkey來對你正在開發的應用以一種隨機但可複用的方式進行壓力測試。
二、monkey參數解析
Monkey支持一系列的參數選項來運行,但總的來說可以把這些選項劃分成以下四個基本類別:
• 基本配置選項: 比如配置將要測試的事件的數量
• 運行約束選項: 如設置只對單獨的一個包進行測試
• 事件類型和頻率:比如手勢事件佔所有隨機產生事件的30%,點擊佔50%,觸控佔20%
• 調試選項
1)基本配置選項
-help: 提示幫助信息
-v:指定打印信息精度,一個-v增加一個精度
操作
1. adb shell monkey -help
2. adb shell monkey –v 20 對比 adb shell monkey –v –v 20
2)運行約束選項
• -p <apl包名>:一個-p 指定一個包名,可同時指定多個包
Monkey只啓動指定的包(運行時可觸發其他應用)
所有安裝的應用包在data/data
logcat查看應用包名
例:adb shell monkey –p com.baidu.tieba –v 200
• -c <activity-category>: 一個-c制定一個category,可同時指定多個,不指定的話,默認爲Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY
• 實際使用中一般較少用到該參數。
3)事件類型和頻率
頻率
• -s <seed>: 僞隨機數生成器的seed值(一串數字),同一個seed值多次運行monkey,隨機事件是一樣的。有助於定位排查問題。
• adb shell monkey –s 1567 –p com.baidu.tieba–v 200
• --throttle <milliseconds>:事件間的間隔,單位爲毫秒,可控制事件頻率
• adb shell monkey –s 1567 –p com.baidu.tieba –v 200
• 對比事件頻率,日誌點擊座標(事件一樣)
事件選項
• --pct-touch <percent>:調整觸摸事件百分比(一個點down-up)
• --pct-motion <percent>:調整動作事件百分比(down-**-up)
• --pct-trackball <percent>:調整軌跡事件百分比(系列移動及點擊)
• --pct-nav <percent>:調整“基本”導航事件百分比(上下左右導航)
• --pct-majornav <percent>:調整“主要”導航事件百分比(home/back/menu)
• --pct-syskeys <percent>:調整系統按鍵事件百分比
• --pct-appswitch <percent>:調整啓動avtivity百分比(重要)
• --pct-anyevent <percent>:調整其他類型事件百分比
4)調試選項
• --dbg-no-events:啓動後不生成事件(寫在事件前)
• --hprof:生成profiling報告(data/misc?)
• --ignore-crashes:忽略crash
• --igmote-timeouts:忽略超時
• --ignore-security-exceptions:忽略許可錯誤
• --kill-process-after-error:出錯時殺掉被測進程
• --monitor-native-crashes:監控本地代碼crash
• --wait-dbg:等待調試器
三、注意事項
1)復現monkey操作過程需要加seed種子號,-s(兩次命令的參數必須要一樣)
2)要實現多機運行,需要在adb後加-s deviceid號,並且命令行結尾需要加靜默符號&(dos環境下還不行,Linux環境下可以)
示例:
adb -s 1d529206 shell monkey -s 1313 -v --throttle 300 --pct-touch 50 -p com.baidu.tieba 200