zoukankan      html  css  js  c++  java
  • 移动端自动化测试之--Monkey

    目录

    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:崩溃,闪退
  • 相关阅读:
    Java String, StringBuffer和StringBuilder实例
    java中字符串的比较
    java中子类继承父类时是否继承构造函数
    Java中抽象类和接口的用法和区别
    与(&)、非(~)、或(|)、异或(^)
    Linux03
    Linux02
    Linux01
    力扣算法题
    算法 栈、队列、二分查找
  • 原文地址:https://www.cnblogs.com/new-hashMap/p/12633923.html
Copyright © 2011-2022 走看看