目录
前言
下面介绍一下Monkey的参数意义,以及进场使用的的测试命令。
记录于此,方便自己查阅。
正文
规范类命令
数字
adb shell monkey 100
100表示Monkey事件次数为100
> log.txt
# 保存到当前目录的log.txt种 adb shell monkey 100 > log.txt # 保持到e盘的log.txt中 adb shell monkey 100 > e:\log.txt
-v
指定打印信息的详细级别,一个-v增加一个级别,总共分3个级别:Level 0、Level 1、Level 2。
Level 0
0级日志打印,除了启动提示、测试完成和最终结果外,提供极少的信息。
# 10000为测试事件次数 adb shell monkey -v 10000
Level 1
1级日志打印,提供较详细的信息,比如,发送到Activity的事件等
adb shell monkey -v -v 10000
Level 2
2级日志打印,提供超级详细的信息,比如,测试中被选中的或为被选中的Activity等
adb shell monkey -v -v -v 10000
约束类命令
-p
后面+包名,指定对该包名进行测试
adb shell monkey -p com.biumall.test
-c
-c确定一个或多个特定的类别,Monkey就只允许系统去访问这些特定类别下列出的Activity了。
若不指定的话,默认访问Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY下的Activity
主要的category:
1. intent.CATEGORY.ALTERNATIVE 2. intent.CATEGORY.BROWSABLE 3. intent.CATEGORY.DEFAULT 4. intent.CATEGORY.DEVELOPMENT_PREFERENCE 5. intent.CATEGORY.EMBED 6. intent.CATEGORY.HOME 7. intent.CATEGORY.INFO 8. intent.CATEGORY.LAUNCHER 9. intent.CATEGORY.MONKEY 10. intent.CATEGORY.OPENABLE 11. intent.CATEGORY.PREFERENCE 12. intent.CATEGORY.SELECTED_ALTERNATIVE 13. intent.CATEGORY.TAB
调试类命令
--ignore-crashes
于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。
使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到100为止
如果没有,上面参数,一旦有崩溃,就停止Monkey了。
# 忽略崩溃 adb shellmonkey -p com.biumall.test --ignore-crashes 100 # 一旦崩溃就停止 adb shellmonkey -p com.biumall.test 100
--ignore-timeouts
用于指定当应用程序发生ANR错误时,Monkey是否停止运行。
使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
# 忽略ANR adb shellmonkey -p com.biumall.test --ignore-timeouts 100 # 一旦ANR就停止 adb shellmonkey -p com.biumall.test 100
--ignore-security-exceptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。
使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
--kill-process-after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态
(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。
--monitor-native-crashes
监控本地代码的崩溃。
事件类命令
-s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
# Monkey 测试1 adb shell monkey -p com.biumall.test -s 10 100 # Monkey 测试2 adb shell monkey -p com.biumall.test –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。
这个参数不是很理解
--throttle<毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
adb shell monkey -p com.biumall.test --throttle 500 100
其中
--throttle 500
表示延迟500毫秒。
--pct-touch
格式
--pct-touch{+百分比}
用例
# touch事件占10% adb shell monkey -p com.biumall.test --pct-touch 10 100
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
--pct-motion
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)
--pct-motion {+百分比}
--pct-trackball
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
--pct-trackball {+百分比}
--pct-nav
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
--pct-nav {+百分比}
--pct-majornav
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
--pct-majornav {+百分比}
--pct-syskeys
设置系统按键事件的百分比(如Home键、Back键)
--pct-appswitch
设置启动Activity的百分比
--pct-anyevent
设置其他类型事件的百分比
monkey测试命令
下面是简单的测试
不过滤
adb shell monkey -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000
白名单
白名单就是只测试白名单中的包名。
下面是白名单内容,一行一个包名,
com.biumall.music com.biumall.radio com.biumall.files com.biumall.settings
adb shell monkey --pkg-whitelist-file /data/whitelist.txt -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000
黑名单
黑名单就是不测试黑名单中的包名。
下面是白名单内容,一行一个包名,下面是不测试的包名:
com.biumall.speech com.biumall.vr
adb shell monkey --pkg-blacklist-file /data/blacklist.txt -v -v -v --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 1000000
抓取日志脚本
这部分来自参考文2,觉得不错,记录于此。
adb devices @echo off set serial= set /p serial=Enter device serial or only enter: if "%serial%"=="" ( set cmd_adb=adb set cmd_fastboot=fastboot ) else ( set cmd_adb=adb -s %serial% set cmd_fastboot=fastboot -s %serial% ) :again echo get root right %cmd_adb% root echo wait for device %cmd_adb% wait-for-device echo capture system log start at %date%_%time% %cmd_adb% logcat tag:V -v time > system_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.txt echo device disappeared, wait for device again %cmd_adb% wait-for-device goto again pause
参考文章
-
《》
-
《》
-
《》
-
《