MONKEY测试

什么是MONKEY测试?

MONKEY测试是一种自动化UI测试机制,通过模拟用户操作(如点击、滑动、长按等),自动对应用界面进行稳定性测试。

核心作用

  • 随机或定向触发UI交互,暴露界面崩溃、卡顿、无响应等潜在问题;

  • 替代重复的手动测试,覆盖更多操作场景,提升测试效率。

优势

  • 自动化执行,节省人力成本;

  • 可定制测试范围(单个应用/所有应用)、时长和操作模式;

  • 支持模拟复杂场景(如睡眠唤醒交替、连续滑动等),贴近真实用户使用习惯。

核心测试命令

通过命令可灵活控制测试范围和模式,以下是常用命令的详细说明:

1. 随机测试所有应用

命令test random [-period 时长] [-e] [-life_time 总时长]

  • 功能:随机选择应用进行测试,按-period(单位:s)自动切换应用;

  • 可选参数:

    • -e:开启增强模式,额外模拟左滑、右滑、长按操作;

    • -life_time:设置总测试时长(单位:s),超时后自动停止。

  • 示例:

    • 每30s随机切换一个应用测试,总时长3600s(1小时):
      test random -period 30 -e -life_time 3600

2. 定向测试单个应用

命令test app 应用名 [-period 时长] [-e]

  • 功能:针对指定应用(如“Clock”)重复测试,-period(单位:s)后自动返回主菜单并重新进入该应用;

  • 可选参数:-e(增强模式,同上)。

  • 示例:

    • 测试“Clock”应用,每30s循环一次:
      test app Clock -period 30

3. 顺序遍历所有应用

命令test trav [-period 时长] [-e]

  • 功能:按顺序逐个测试所有应用,-period(单位:s)后切换到下一个应用;

  • 可选参数:-e(增强模式,同上)。

  • 示例:

    • 每30s切换一个应用,按顺序测试所有应用:
      test trav -period 30

4. 停止测试

命令test stop

  • 功能:立即停止当前正在执行的所有MONKEY测试。

可选参数说明

参数

作用

单位

-period

单个应用内的测试时长,超时后切换应用或返回主菜单

s

-e

增强模式,额外模拟左滑、右滑、长按操作

-

-life_time

总测试时长,超时后自动停止测试(仅test random支持)

s

模拟睡眠唤醒场景

支持模拟设备睡眠与唤醒交替的场景,结合MONKEY测试验证稳定性:

1. 周期性消息触发睡眠唤醒

命令period_msg [-period 间隔] [-monkey 时长]

  • 功能:按-period(单位:s)周期性发送消息,模拟睡眠与唤醒交替;

  • 可选参数:-monkey(单位:s),指定关联的MONKEY测试总时长。

  • 示例:

    • 每20s模拟一次睡眠唤醒,同时执行MONKEY测试1小时:
      period_msg -period 20 -monkey 3600

2. 传感器事件触发唤醒

命令lcpu_period_awake [-period 间隔] [-monkey 时长]

  • 功能:按-period(单位:s)周期性发送传感器事件,模拟设备唤醒;

  • 可选参数:同period_msg-monkey指定关联的MONKEY测试时长。

  • 示例:

    • 每20s触发一次传感器唤醒,持续执行MONKEY测试:
      lcpu_period_awake -period 20 -monkey

单命令模式(精确模拟操作)

支持手动指定单个操作(如点击、滑动等),用于定向验证特定场景:

1. 点击操作

命令test -evt click -xy X Y

  • 功能:模拟在坐标(X,Y)处点击。

  • 示例:点击(100,200)位置:
    test -evt click -xy 100 200

2. 长按操作

命令test -evt move -xy X Y -duration 时长

  • 功能:在坐标(X,Y)处长按,时长由-duration(单位:ms)指定。

  • 示例:在(100,200)处长按3000ms:
    test -evt move -xy 100 200 -duration 3000

3. 坐标移动操作

命令test -evt move -xy X1 Y1 X2 Y2 -duration 时长

  • 功能:从坐标(X1,Y1)滑动到(X2,Y2),总耗时由-duration(单位:ms)指定。

  • 示例:从(100,200)滑动到(300,200),耗时3000ms:
    test -evt move -xy 100 200 300 200 -duration 3000

4. 上下左右滑动

命令test -evt up/down/left/right [-interval 步长] [-rep] [-period 周期]

  • 功能:模拟上下左右滑动;

  • 可选参数:

    • -interval:每次移动的像素步长;

    • -rep:重复执行该操作;

    • -period:重复执行的总时长(单位:ms),超时停止。

  • 示例:连续右滑,步长100像素,循环执行:
    test -evt right -interval 100 -rep

5. 帧率测试常用命令

  • 平铺页面连续右滑:
    test -evt right -interval 100 -xy 19 300 -rep

  • 平铺页面连续左滑:
    test -evt left -interval 100 -xy 300 300 -rep

  • 主菜单连续晃动:
    test -evt shake

适配说明

若不使用SDK默认GUI架构(通过menuconfig关闭GUI_APP_FRAMEWORK),可在sdk/middleware/lvgl/lvsflv_monkey_port.c中适配自定义GUI框架。