前提:安装jdk18、adb-sdk、模拟器环境搭建好,之前有写过搭建方法
一、使用Monkey进行稳定性测试
Monekey是一个运行程序,运行在模拟器上火真机上,可以生产伪随机的用户事件流,如点击、触摸或手势、滑动等一些系统级事件,检查和评估被测试测试的稳定性。
理论:
通过adb shell monkey去操作移动端应用,所有测试事件都是随机产生的。跟发出命令后,
Money 命令语法和基础参数
怎么做计划怎么会测试需求,然后进行测试用例,是基本功,每个人写的都不一样,每个人的侧重点不一样,但是monkey是随机
调用money就是调用system/bin 下的money,Monkey是adb自带的。
进入查看路径:
二、Monkey命令语法
输入命令: adb shell monkey [options] {avent-count}
[options] :可选项,如果不指定monkey将以无反馈模式启动
{avent-count}:必选项,指随机发送事件数,如输入1000,指执行1000个伪事件
例如:发送1000个伪事件:adb shell monkey -v 1000 (对整个真机或模拟器进行随机测试)
Monkey 手机端的稳定性测试、压力测试
三、monkey基础参数
参数名称 | 描述 | 使用说明 |
-V | 日志级别 -v:0级,除启动提示,测试完成和最终结果外提供较少信息 -v -v:1级:提供较详细测试信息,如逐个发送到Activity的事件 -v -v-v 2级:提供更详细安装信息,如测试中被选中或未被选中的Activity | Adb shell monkey -v-v 1000 |
-s | -s为种子值,如果出现随机的,因为monkey是随机,加-s可复现的随机测试 如遇上问题了,可使用多开模拟器,删除后再重新添加。 :Monkey: seed=1702630467964 count=500 | Adb shell monkey -v -s 999 500 -s 后99是种植值, 500为随机点击次数。 如果遇到问题了,带上相同的种子值就能复现了。实现了随机测试的可复现。 |
--throttle | 设置事件执行间隔时间 | Adb shell monket --throttle 500 20 --throttle 500:间隔500毫秒 间隔500毫秒,随机执行20个事件 |
-P | 指定发送随机事件到指定包。 | adb shell monkey -p com.zhiguan.m9ikandian -v --throttle 300 500 -p指定某个包执行随机事件,-v打印详细记录, --throttle 300间隔300秒执行事 |
如图:
Monkey参数、调试选项
cls | 清屏 | 输入命令:cls |
安装apk | adbinstallE:\appapk\9ikandianv3.35.4_downcc.com.apk | 或直接拖动包至模拟器上 |
--ignore-crashes | 应用程序崩溃后继续发送事件 | 调试选项不必填 |
--ignore-timeouts | 超时错误继续发送事件 | |
--ignore-security-exceptions | 应用程序权限错误发生后继续发送事件 | |
--ignore-native-crashes | 本地代码导致的崩溃,忽略,继续发送事件 | |
> | 日志存放位置 | 如:>D:\money_text.txt |
四、Monkey 发送事件类型
发送一千个事件流 比如说点击 输入内容,点击,上下滑动,左右滑动,
比如说地图:放大的时候,两指缩放。
可以修改事件的百分比,比如说两指缩放,看点没有这个事件,那就可以修改0%
注意事项:所有时间的百分比不能超过100%
如图:执行monkey命令后,日志有事件流占比例,可以修改发送事件的百分比
1:修改发送事件占百分比,指定测试事件的类型和频率
Monkey 命令提供了众多选项用于指定事件的类型和发生频率, 例如触摸事件、 导航事件、轨迹事件(由一个或多个随机的移动组成,有时还伴随有点击)。有时为了测试某个具体应用,需要通过“事件”的反复发生来进行专项的功能测试,此时即可通过 monkey 的“--pct”选项来进行指定具体事件及其发生的频率。
如:0:在某个位置Down_UP :触摸,点击修改%分比
按下然后滑动,就叫手势
注意:
格式件类型的百分比总数不能超过100%
位置 | 事件类型 | 描述 | 参数 |
0 | 触摸 | 在某个位置的一个down_up事件,点击 | --pct-touch 百分比 |
1 | 手势 | 在某个位置按下(down)后经过一系列伪事件后弹出(up) | --pct-motion 百分比 |
2 | 二指缩放 | 在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,如地图放大 | --pct-pinchzoom 百分比 |
3 | 轨迹 | 由一个或多个随机的移动组成,有时会伴随着点击 | --pct-trackball 百分比 |
4 | 屏幕旋转 | 是隐藏时间,是模拟Android手机的横屏或竖屏切换 | --pct-rotation |
5 | 基本导航 | 主要来自方向输入设备上下左右时间 | --pct-nav 百分比 |
6 | 主要导航 | 指点击主要导航按键的操作,,这些按钮通常会导致UI界面中的动作发生 | --pct-majornav 百分比 |
7 | 系统按键 | 仅供系统使用的保留按键,如音量键 | --pct-syskeys 百分比 |
8 | 应用启动 | 启动Activity时间,指在手机上启动一个Activity的操作 | --pct-appswitch +百分比 |
9 | 键盘 | 主要是一些与键盘相关的操作,如点击输入框键盘弹起,点击输入框以外键盘收回 | --pct-flip 百分比 |
10 | 其他类型 | 包括了除以上提到的10种事件外的其他所有时间 | --pct-anyevent 百分比 |
2、指定测试事件类型和频率的实战:
#1、旋转屏幕 占比30%,执行200个事件流
Adb shell monkey -v -pct-rotation 30 200
#2、同时调整两个事件百分比
Adb shell monkey -v --pct-touch 20 --pct-motion 40 200
#3、系统按键事件的发生率为 18%,共测试 1000 次。
输入命令:adb shell monkey --pct-syskeys 18 –v 1000
#4:分别指定两个事件的发送频率,以下命令表示触摸事件和轨迹事件发生概率分别为 18%和 18%,共测试 1000 次。
输入命令:adb shell monkey --pct-touch 18 --pct-trackball 18 –v 1000
三、Money命令参数总结实战应用
需求分析:
- 指定应用
- 设置触摸事件40%,手势事件25% ,Activitey事件10%,屏幕旋转事件5%
- 设置seed种子值
- 设置操作之间的时间间隔
- 遇到应用程序崩溃、超时继续执行
- 日志为1级 -v -v,执行500个随机事件流
- 记录日志,并输入至文件
命令:
C:\Users\admin>adb shell monkey -p com.zhiguan.m9ikandian --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 688 --throttle 400 --ignore-crashes --ignore-timeouts -v -v 500 >E:\monkeytest.txt
(8)生成批处理文件(。Bat),一键执行, 主要文件执行出现乱码,记事本另存为:ANSI编码,运行就不会出现乱码
@echo off
echo 请稍后,正在执行脚本命令
adb shell monkey -p com.zhiguan.m9ikandian --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 688 --throttle 400 --ignore-crashes --ignore-timeouts -v -v 500 >E:\monkeytest1.txt
pause
- 分析错误日志: