目录
monkey简介
monkey基本命令
monkey事件
monkey参数
monkey自定义脚本
一、monkey简介
1、简介
- Monkey是Android SDK提供的一个命令行工具;
- 它可以产生随机的用户操作事件流,并控制设备执行,产生日志,对app进行黑盒压测;
- 它还可以编辑脚本,自定义事件流,对app进行稳定的自动化测试;
2、monkey路径
monkey所在路径:adb shell /system/bin/monkey
jar包所在路径:adb shell /system/framework/monkey.jar
二、monkey基本命令
1、基本命令格式
adb shell monkey [options] <event-count>
# []表示可选项,<>表示必填项
# option表示传入的参数
# event-count表示生成随机事件的数量
2、关闭monkey
adb shell ps |findstr monkey # 找到monkey进程,查看它的pid
adb shell kill pid # 通过指定的pid杀掉monkey进程
三、monkey事件
monkey有11大事件,在执行monkey时,通过配置对应事件的产生比例来重点测试某种事件:
命令格式:adb shell monkey [options] --pct-事件 <event-count>
触摸事件:touch
手势事件:motion
二指缩放事件:pinchzoom
轨迹事件:trackball
屏幕旋转事件:rotation
基本导航事件:nav
主要导航事件:majornav
系统按键:syskeys
启动activity事件:appswitch
键盘事件:flip
四、monkey参数
1、常规类型参数
- 查看帮助:monkey –h # 查看monkey帮助
- 日志级别:
- monkey –v # 基本
- monkey –v –v # 详细
- monkey –v –v –v # 详尽
2、事件类型参数
- 指定脚本执行:monkey –f <脚本位置>
- 伪随机数生成种子值(用于标记并复现monkey操作):
- monkey –s <seed> # 第一次指定标记(seed为标记数字)
- monkey –s <seed> # 第二次复现相同seed的操作
- 指定事件生成的时间间隔:monkey --throttle <毫秒数>
3、约束类参数
- 包约束:-p <packageNames> # 可指定一个或多个包名
- activity约束:monkey –c <activityName>
4、调试类参数
- 程序崩溃后继续执行:--ignore-crashes
- 超时后继续执行:--ignore-timeouts
- 发生异常后继续执行:--ignore-security-exception
五、monkey自定义脚本
1、monkey只支持屏幕坐标点来定位元素
在设置--开发者选项--指针位置(打开),再点击屏幕就可以显示屏幕坐标点位置了
2、常用的monkey API
LaunchActivity(pkg_name,cl_name):启动应用的Activity,参数:包名和activity名
Tap(x,y,tapDuration):模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间(可省略)
UserWait(sleepTime): 休眠一段时间
DispatchPress(keyName): 按键。参数: keycode
DispatchString(input): 输入字符串。
RotateScreen(retationDegree,persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
DispatchFlip(true/false): 打开或者关闭软键盘。
LongPress(): 长按2秒。
PressAndHold(x, y, pressDuration): 模拟长按事件,参数:x,y表示按的位置坐标,pressDuration表示按的时间
Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
PowerLog(power_log_type, test_case_status): 模拟电池电量信息。
WriteLog(): 将电池信息写入sd卡。
RunCmd(cmd): 运行shell命令。
3、monkey脚本格式
可以是一个.txt文件,没有限制;由头文件信息+monkey命令组成
// 头文件信息
type = raw events # 脚本类型
count = 1 # 脚本执行次数
speed = 1.0 # 执行速度
// monkey命令
start data>>
monkey 脚本…
4、monkey脚本执行
- 先用【adb push 脚本路径 手机储存目录】将脚本发送到手机储存
- 再用【adb shell –f 脚本存放路径】来执行脚本
5、monkey日志管理
- 生成日志文件:monkey命令 >日志存放路径/日志名.log
- 正常流和异常流日志分开保存:monkey命令 1>正常流日志存放路径/日志名.log 2>异常流日志存放路径/日志名.log
- 日志内容分析:
- ANR:程序未响应Application not responding
- Exception:异常
- Crash:崩溃,闪退