monkey定義
Monkey是Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中治拿。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入笆焰、手勢(shì)輸入等)劫谅,實(shí)現(xiàn)對(duì)正在開發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試。
Monkey的特征
1嚷掠、 測(cè)試的對(duì)象僅為應(yīng)用程序包捏检,有一定的局限性。
2叠国、 Monky測(cè)試使用的事件流數(shù)據(jù)流是隨機(jī)的未檩,不能進(jìn)行自定義查吊。
3氏豌、 可對(duì)MonkeyTest的對(duì)象,事件數(shù)量递雀,類型项棠,頻率等進(jìn)行設(shè)置悲雳。
環(huán)境準(zhǔn)備
- java的jdk (cmd窗口, 輸入 java -version 香追, 有輸出版本則安裝成功)
- 安卓 adb (注意設(shè)置環(huán)境變量)
基本命令
前提: 手機(jī)與電腦連接合瓢,勾選USB調(diào)試
- 查看設(shè)備連接情況
adb devices - 安裝測(cè)試包
adb install xx.apk (可以指定路徑,或者直接拖進(jìn)來) - 獲取包名
adb shell pm list package (一般保存在data/data下) - 開始進(jìn)行壓測(cè)命令
adb shell monkey -v 500
--------產(chǎn)生500次隨機(jī)事件透典,作用在系統(tǒng)中所有activity(更精確地說晴楔,是包含 Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。
參數(shù)命令詳解
事件選項(xiàng)
-v : 設(shè)定輸出信息的詳細(xì)級(jí)別
1.日志級(jí)別 Level0
示例 adb shellmonkey -p com.htc.Weather –v 100
說明 缺省值峭咒,僅提供啟動(dòng)提示税弃、測(cè)試完成和最終結(jié)果等少量信息
2.日志級(jí)別 Level 1
示例 adb shellmonkey -p com.htc.Weather –v -v 100
說明 提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息
3.日志級(jí)別 Level 2
示例 adb shellmonkey -p com.htc.Weather –v -v –v 100
說明 最詳細(xì)的日志凑队,包括了測(cè)試中選中/未選中的Activity信息
-s:指定產(chǎn)生隨機(jī)事件種子值则果,要使回歸路徑一致,就必須使用相同的seed值,便于重現(xiàn)bug西壮。如: -s 5
--throttle:每個(gè)事件結(jié)束后的間隔時(shí)間遗增,單位:毫秒——降低系統(tǒng)的壓力(如不指定,系統(tǒng)會(huì)盡快的發(fā)送事件序列)款青。如:--throttle 100
【 設(shè)置事件百分比,所有的百分比加起來不能超過100%
0:觸摸事件百分比做修,即參數(shù)--pct-touch
1:滑動(dòng)事件百分比,即參數(shù)--pct-motion
2:縮放事件百分比可都,即參數(shù)--pct-pinchzoom
3:軌跡球事件百分比缓待,即參數(shù)--pct-trackball
4:屏幕旋轉(zhuǎn)事件百分比蚓耽,即參數(shù)--pct-rotation
5:基本導(dǎo)航事件百分比渠牲,即參數(shù)--pct-nav
6:主要導(dǎo)航事件百分比,即參數(shù)--pct-majornav
7:系統(tǒng)事件百分比步悠,即參數(shù)--pct-syskeys
8:Activity啟動(dòng)事件百分比签杈,即參數(shù)--pct-appswitch
9:鍵盤翻轉(zhuǎn)事件百分比,即參數(shù)--pct-flip
10:其他事件百分比鼎兽,即參數(shù)--pct-anyevent
例:adb shell monkey --pct-touch 20 -v 100約束選項(xiàng)
-p:指定有效的package(如不指定答姥,則對(duì)系統(tǒng)中所有package有效),一個(gè)-p 對(duì)應(yīng)一個(gè)有效package谚咬, 如:-p com.ckt -p com.ckt.asura鹦付;
參數(shù)-p用于約束限制,用此參數(shù)指定一個(gè)或多個(gè)包(Package择卦,即App)敲长。指定包之后,Monkey將只允許系統(tǒng)啟動(dòng)指定的APP秉继。如果不指定包祈噪,Monkey將允許系統(tǒng)啟動(dòng)設(shè)備中的所有APP。
-c:activity必須至少包含一個(gè)指定的category尚辑,才能被啟動(dòng)辑鲤,否則啟動(dòng)不了。調(diào)試選項(xiàng)
--dbg-no-events:初始化啟動(dòng)的activity杠茬,但是不產(chǎn)生任何事件月褥。
--hprof:指定該項(xiàng)后在事件序列發(fā)送前后會(huì)立即生成分析報(bào)告 —— 一般建議指定該項(xiàng)。
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時(shí)
--ignore-security-exceptions:忽略安全異常
--kill-process-after-error:發(fā)生錯(cuò)誤后直接殺掉進(jìn)程
--monitor-native-crashes:跟蹤本地方法的崩潰問題
--wait-dbg:知道連接了調(diào)試器才執(zhí)行monkey測(cè)試瓢喉。
停止monkey腳本
最近用monkey來包apk的性能測(cè)試宁赤,發(fā)現(xiàn)一旦monkey跑起來以后,即使將數(shù)據(jù)線和PC斷開灯荧,monkey腳本還是會(huì)繼續(xù)運(yùn)行下去礁击。結(jié)果找到了一個(gè)辦法去停止它:
adb shell
top | grep monkey
顯示如下:
top | grep monkey
5447 0 1% S 10 262960K 10328K root com.android.commands.monkey
5447 0 0% S 10 262960K 10324K root com.android.commands.monkey
找到id為5447,然后再kill掉就OK了
adb shell
kill -9 5447