Monkey是Andriod的一个行命令工具,可以作为Andriod的自动化测试的一种手段。
其实就是模拟一个用户在App上乱按、乱输,与其说是模拟用户,不如说就是模拟个捣乱的猴子,毕竟有时候确实不知道用户会怎样折磨软件hhh
所以Monkey测试是做app软件的稳定性、健壮性测试的有效方法
Monkey的不足
- Monkey可以根据一个指定的命令脚本发送按键消息,但不支持判断和读取待测界面的值来执行验证操作。毕竟只是只猴子
- 测试对象只能是应用程序包,有局限性。不过测试是够用了
- Monkey测试使用的事件流数据是伪(模拟)随机的,不能自定义。不过可以通过相同的Seed复现,所以是缺点也是优点吧。
因为Monkey测试多是为了满足测app的稳定性、健壮性的,Monkey要在产品稳定、没有严重bug的时候再折磨来软件。不然App一直在改,测了个寂寞
Monkey基本玩法
启动Andriod设备→打开cmd命令行界面→连接设备adb devices→adb shell monkey [option]
-
-p:被测试app的包名
-
-v:反馈信息的级别
-
-v:0级 -v-v:一级 -v-v-v:二级 (1级够用0级太详细了....)
-
-
Monkey事件
-
--pct-touch 触摸事件
- 其实就是起和落的事件Touch(ACTION_DOWN)和Touch(ACTION_UP)
-
--pct-motion 手势事件
- 其实就是触摸事件多个移动:ACTION_DOWN、ACTION_MOVE、ACTION_UP
-
--pct-pinchzoom 二指缩放事件
- 其实就是两个手势事件同时:ACTION_DOWN、ACTION_POINTER_DOWN、ACTION_MOVE、ACTION_UP、ACTION_POINTER_UP
-
--pct-trackball 轨迹事件
- 已经凉凉的操作交互......Trackball(ACTION_MOVE)
-
--pct-rotation 屏幕旋转事件
- 隐藏事件,Andriod官方文档没写....rotation
-
--pct-nav 基本导航事件
- 又一个凉凉的方向键交互...Key(ACTION_DOWN)、Key(ACTION_UP)
-
--pct-majornav 主要导航事件
- 三大金刚键Key(ACTION_DOWN)、Key(ACTION_UP)
-
--pct-syskeys 系统按键事件
- Key(ACTION_DOWN)、Key(ACTION_UP)
- Key(ACTION_DOWN)、Key(ACTION_UP)
-
--pct-appswitch 启动Activity事件
- 启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。该事件是由一个Switch操作组成的。
-
--pct-flip 键盘事件
- 键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。主要是键盘的打开和关闭操作。
-
-
事件之间的延迟
-
--throttle 300
-
--throttle time --randomize-throttle
-
-
各种忽略响应
-
--ignore-timeouts 忽略程序无响应
- 设置后,Monkey会执行完所有的事件,不会因ANR(Application No Responding)而停止
-
--ignore-crashes 忽略程序崩溃
- 设置后,Monkey会执行完所有的事件,不会因崩溃(Crash)而停止
-
--ignore-native-crashes 忽略Monkey本身的异常
- 忽略monkey本身的异常,直到事件执行完毕
-
--ignore-security-exceptions 忽略证书或认证异常
- 设置后,Monkey会执行完所有的事件,不会因认证或证书异常而停止
-
-
--monitor-native-crashes 监视系统中本地代码发生的崩溃
-
-s 神奇的种子
- 如果seed相同,则两次Monkey测试所产生的事件序列也相同的