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测试。
可选参数说明
参数 |
作用 |
单位 |
---|---|---|
|
单个应用内的测试时长,超时后切换应用或返回主菜单 |
s |
|
增强模式,额外模拟左滑、右滑、长按操作 |
- |
|
总测试时长,超时后自动停止测试(仅 |
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框架。