一、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