移动端自动化测试之--Monkey

时间:2024-03-09 16:38:58

目录

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、常规类型参数

  1. 查看帮助:monkey –h # 查看monkey帮助
  2. 日志级别:
    1. monkey –v # 基本
    2. monkey –v –v # 详细
    3. monkey –v –v –v # 详尽

2、事件类型参数

  1. 指定脚本执行:monkey –f <脚本位置>
  2. 伪随机数生成种子值(用于标记并复现monkey操作):
    1. monkey –s <seed> # 第一次指定标记(seed为标记数字)
    2. monkey –s <seed> # 第二次复现相同seed的操作
  3. 指定事件生成的时间间隔:monkey --throttle <毫秒数>

3、约束类参数

  1. 包约束:-p <packageNames> # 可指定一个或多个包名
  2. activity约束:monkey –c <activityName>

4、调试类参数

  1. 程序崩溃后继续执行:--ignore-crashes
  2. 超时后继续执行:--ignore-timeouts
  3. 发生异常后继续执行:--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脚本执行

  1. 先用【adb push 脚本路径 手机储存目录】将脚本发送到手机储存
  2. 再用【adb shell –f 脚本存放路径】来执行脚本

5、monkey日志管理

  1. 生成日志文件:monkey命令 >日志存放路径/日志名.log
  2. 正常流和异常流日志分开保存:monkey命令 1>正常流日志存放路径/日志名.log 2>异常流日志存放路径/日志名.log
  3. 日志内容分析:
    1. ANR:程序未响应Application not responding
    2. Exception:异常
    3. Crash:崩溃,闪退