前言
- 通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常;主要用于Android 的压力测试 自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash
Monkey参数概览
Monkey参数详解
基础参数
-p <允许的包名列表>
- 格式:adb shell monkey -p com.taobao.taobao 1000 :package的缩写,后面跟包名 1000 表示随机事件次数
- 指定多个包:adb shell monkey -p com.taobao.taobao -p com.wkscuiphone 1000
-v 日志级别
- 格式:adb shell monkey -p com.taobao.taobao -v 1000
日志级别说明:
- -v 仅提供启动提示、测试完成和最终结果等少量信息
- -v -v 提供较为详细的日志,包括每个发送到Activity的事件信息;
- -v -v -v:最详细的日志,包括了测试中选中/未选中的Activity信息
-s(随机数种子)
- 说明:随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的,便于复现问题
- 格式:adb shell monkey -p com.taobao.taobao –s 10 1000:执行两次,最后停留在同样的页面
--throttle <毫秒>
- 说明:用于定用户操作(即事件)间的时延,单位是毫秒
- 格式:adb shell monkey -p com.taobao.taobao --throttle 2000 1000
事件类型
- adb shell monkey -p com.taobao.taobao --pct-touch 50 -v 1000 :指定touch事件占比50%
- adb shell monkey -p com.taobao.taobao --pct-touch 50 --pct-nav 10 -v 1000 :指定touch事件占比50% nav 事件 10%
参数对应说明:
- 0:--pct-touch 触摸事件,指在屏幕某处按下并抬起的操作
- 1:--pct-motion 手势事件,指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作
- 2:--pct-pinchzoom 二指缩放事件,指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作
- 3:--pct-trackball 轨迹事件,由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数
- 4: --pct-rotation 屏幕旋转事件,模拟的Android手机的横屏和竖屏切换,degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向
- 5:--permission,未查到相关资料,欢迎补充
- 6:--pct-nav 基本导航事件,指点击方向输入设备的上、下、左、右按键的操作,一般使用较少
- 7:--pct-majornav 主要导航事件,指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键
- 8:--pct-syskeys 系统按键事件,点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等
- 9:--pct-appswitch 启动Activity事件,指在手机上启动一个Activity的操作
- 10:--pct-flip 键盘事件,主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。
- 11:--pct-anyevent 其他事件类型,除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过--pct-anyevent参数来配置其事件百分比
调试选项
- --ignore-crashes 忽略崩溃和异常
- --ignore-timeouts 忽略超时
使用示例
adb shell monkey –p com.taobao.taobao -v -v -v -s 100 --throttle 300 --pct-touch 35 --pct-motion 41 --pct-syskeys 2 --pct-appswitch 20 --pct-anyevent 2 --ignore-security-exceptions --ignore-crashes --ignore-timeouts 1000000 > monkey_log.txt
把保存下来的日志拿去给开发吧,哈哈哈~