一、原理与简介
简介:
Monkey程序由Android SDK自带;
存在形式:安卓SDK下的一个monkey.jar
monkey 用的安卓adb shell命令。
什么是adb:
即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。
原理:
利用socket通讯的方式来模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机脉冲,所以可以用Monkey用随机重复的方法去负荷测试你开发的软件。
二、常用命令
- [1 ] 参数: -p (包名)
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。 - [2 ] 参数: -v (次数)
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数
-v -v-v -v -v-v 每增加一级-v 增加一级日志级别
Level0:说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level1:说明 提供较为详细的日志,包括每个发送到Activity的事件信息
Level2:说明 最详细的日志,包括了测试中选中/未选中的Activity信息 - [ 3] --throttle <间隔时间>
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。一般业内标准是每秒操作2-3次,即:–throttle 300到 --throttle 500 - [ 4] --help
使用参数说明 - [ 5] --pct-touch <百分比>
调整触摸事件所占随机事件的百分比(记一次 up down) - [6 ] --pct-motion <百分比>
调整动作事件的百分比(记一次down 一系列伪随机移动事件 一次up) - [7 ] --pct-trackball <百分比> 不常用
调整滚动球事件百分比(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件) - [ 8] --pct-nav <百分比>
调整基本导航事件所占百分比(导航事件由方向输入设备的上下左右按键所触发的事件组成) - [9 ] --pct-majornav <百分比>
调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键) - [10 ] --pct-syskeys <百分比>
调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、End Call、音量调节) - [ 11] --pct-appswitch <百分比>
调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法) - [ 12] --pct-anyevent <百分比>
调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等) - [ 13] --ignore-crashes
通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。 - [ 14] --ignore-timeouts
通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。 - [15 ] --ignore-security-exception
通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。 - [ 16] --kill-process-after-error
通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。设置此项,将会通知系统停止发生错误的进程。注意,正常(成功)的结束,并没有停止启动的进程,设备只是在结束事件之后简单的保持在最后的状态。 - [ 17] --monitor-native-crashes
监视并报告Andorid系统中本地代码的崩溃事件。如果设置–kill-process-after-error,系统将停止运行。 - [ 18] >> 目录
保存日志到本地目录
案例:
adb shell monkey -p com.xxx -v --throttle 300 100 >/Users/admin/Desktop/monkey_log.rtf
那么程序monkey 将会对手机上的包名为com.xxx 的应用进行100次每间隔300ms生成一个随机事件的测试,打印基本日志并保存到对应目录下(有打印输出日志目录时终端将不会输出日志);