Monkey 常用命令详解含高级参数应用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Monkey 常用命令详解含高级参数应用
  1. monkey  是发送伪随机事件的工具,这个手机自带。
  2. monkey是一个黑盒压力测试工具,采用随机算法,对被测应用随机发送伪随机的用户事件流,如点击,拖拽,滑动,输入等,来确定应用是否会发生异常,并且会产生日志来进行分析,但是测试数据测试事件都是随机的,有一定局限性。适合作为压力或者稳定性测试工具来测试应用的崩溃率,稳定性。但是可以通过二次开发来进行业务流程控制或一定程度上控制测试覆盖。

  monkeyRunner :对monkey 命令进行封装后的api

 

    3. 测试结果有两个我们需要关注解决的

  crash 崩溃,app崩溃了

   

  ANR   app响应超时

------------------------------------------------------------------------------------------------------------

  1. 确认所需环境已经安装完毕,Android sdk和配置环境变量
  2. 将手机或者模拟器连接电脑,通过adb命令确认是否连接:

 adb devices

    3. 如果是device就代表已经连接成功,前面的一串字符就是设备号(手机的唯一标志名)

15838164861.png (474×165).png

4. 测试APP安装包

adb install package.apk

 

5. 发送压测指令

adb shell monkey 1000

adb shell 工具名称  想要工具帮我们完成的指令数量

这些指令是monkey操作的,随机出现,包括:音量键,home,截图啊,滑动等操作

 

6. 获取APP包名

linux下:adb logcat | grep START

windows:adb logcat | findstr START

logcat输出手机上所有app的log日志,| 是管道,将前面的信息传递给后面的指令,包含START标志的日志

 

cmp后面就是包名/Activity名:

 

15838165481.png (924×513).png

点击指定的APP就会输出log日志,cmp后面就有具体的包名和Activity名。这个就是你点击的APP的信息。

(1)查看指定apk的包名:aapt dump badging +包的全路径    


(2)查看所有apk的包名:adb shell pm list package -f

ADB之查看当前运行应用、进程的包名与Activity名(Windows、Mac下均可)

mac:adb shell  dumpsys window| grep mCurrentFocus  


windows:adb shell  dumpsys window| findstr mCurrentFocus

15838165871.png (886×114).png

7. 常用

-p   指定要进行monkey测试的包,如果不使用参数,则会随机选择一个应用进行测试


-c   指定activity的category类别


-v   指定日志级别 -v level1  -v -v level2  -v -v -v level3

8. 给指定的APP(包)打压力

adb shell monkey -p packpage 1000

package:包名

1000:具体的指令数

 

比如:adb shell monkey -p com.mingx.PlatformApp 1000

 

----------------------------------------------------------------------------------------------------------

高级指令--Monkey高级参数的应用

  • throttle参数

指定事件之间的间隔,后面加上间隔时间(单位是毫秒)

adb shell monkey  --throttle <milliseconds>

adb shell monkey -p com.mingx.PlatformApp --throttle 1000 1000

解释:间隔1000毫秒(1秒)monkey执行一个指令,共执行1000个指令

 

  • seed参数

指定随机生成数的seed值

adb shell monkey -s <seed> <event-count>

 

adb shell monkey -p com.mingx.PlatformApp -s 100 50

monkey所谓的随机操作是基于seed值产生的,每一个seed值都会产生一个操作序列;只要每次的seed值是一样的,那么操作序列也是一样的,说白了就是操作是一样的。

 

  • 触摸事件

例子:假如只要求monkey完成点击事件,不操作其他的。

方法:设置触摸事件百分比,也就是在整个monkey实践中某个随机事件占多大比例(也就是百分之多少做这个操作嘛)

举例:--pct-touch 为点击事件

设定触摸事件百分比

adb shell monkey  --pct-touch <percent>

 

adb shell monkey -p com.mingx.PlatformApp --pct-touch 100 100

--pct-touch后面是百分比

也就是说要求monkey完成百分百的点击事件(就是只做点击事件),共计100个。

 

adb shell monkey -v -p com.mingx.PlatformApp --pct-touch 100 100

 

加上-v就代表把monkey完成的事件列出来。

 

15838166501.png (755×429).png

 

  • 动作事件

在手机上点击一下完成一系列其他的操作到送起的这个过程。

设定动作事件百分比

adb shell monkey  --pct-motion <percent>

 

adb shell monkey -v -p com.mingx.PlatformApp --pct-touch 50 --pct-motion 30 100

这些事件加起来要求等于100%;如果不等于百分百,则会随机做其他操作

结果:

15838166891.png (739×314).png

 

  • 轨迹球事件

设定轨迹球事件百分比

adb shell monkey  --pct-trackball <percent>

 

  • 基本导航事件

设定基本导航事件百分比,输入设备的上、下、左、右

adb shell monkey  --pct-nav <percent>

 

  • 主要导航事件

设定主要导航事件百分比,兼容中间键,返回键,菜单按键

adb shell monkey  --pct-majornav <percent>

 

  • 系统导航事件(主要和手机硬件相关的)

设定系统导航事件百分比,HOME、BACK、拨号及音量键

adb shell monkey  --pct-syskeys <percent>

 

  • Activity事件

一个APP里会有多个Activity事件,如果指定了切换Activity的比例的话,那么就会在已有的Activity中切换。

假如指定了30%;有4个Activity,在30%的事件中会在这4个Activity中切换。

设定启动Activity的事件百分比

adb shell monkey  --pct-appswitch <percent>

 

  • 不常用事件

设定不常用事件的百分比        

adb shell monkey  --pct-anyevent <percent>

 

如果在做压力测试时出现了CRASH,那么monkey就会停止。

  • 忽略崩溃和异常

adb shell monkey  --ignore-crashes <event-count>

增加了这句话就是发生CRASH时重启这个APP,但是错误日志还是会输出的,所以还是能够看到LOG日志的和seed值。

 

或者发生未响应(ANR)的时候:

  • 忽略超时事件

adb shell monkey  --ignore-timeouts <event-count>

 

CRASH结果的分析:

实践过程:

   1. 安装可以引出CRASH的APP

   2. 执行压力命令

   3. 析取CRASH的Exception信息

15838167101.png (678×362).png

 

共执行了1000次,在第445时出现了CRASH。seed值=1468814836964

所以如果想要复现这个CRASH,就可以指定seed值,就可以重现这个bug。

adb shell monkey -p package -s 1468814836964  1000

 

 

  • 其余命令

--ignore-native-crashes 忽略native层代码的崩溃


--ignore-security-exceptions 忽略一些许可错误,比如证书许可,网络许可


--monitor-native-crashes 是否监视并报告native层发送的崩溃代码


--kill-procress-after-error 用于在发送错误后杀死进程


保存dos窗口打印的monkey信息,在monkey命令后面补上输出地址,如adb shell monkey -p xxx.xxxx.xxx  -v -v 100 > D:\monkey.txt;这样monkey测试结束后,所有打印的信息都会输出到这个文件里

 

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
48284 13
|
IDE 程序员 编译器
适用于 Python 的 10 大最佳 IDE,你 Pick 哪一款?
适用于 Python 的 10 大最佳 IDE,你 Pick 哪一款?
1234 0
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
164013 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
Debian 官方源换为国内的源的操作方法
apt-get update 报错,采用更换源的方式解决问题。
56786 0
|
监控 Shell 测试技术
一篇文章讲明白MonkeyAPP压力稳定性测试
一篇文章讲明白MonkeyAPP压力稳定性测试
1051 1
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
AI在内容创作中的创新:开启智能创意的新时代
AI在内容创作中的创新:开启智能创意的新时代
1330 14
|
机器学习/深度学习 Java Shell
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
1695 0
|
SQL 关系型数据库 MySQL
MySQL主从:延时从库恢复全解
MySQL主从:延时从库恢复全解
|
异构计算
无影云电脑产品使用之购买什么配置可以玩黑神话悟空游戏?
本文汇总了关于阿里云无影云电脑的常见问题及解答,包括所需配置以运行《黑神话:悟空》游戏、不同版本显卡型号、电竞模式库存情况及如何查看云电脑的使用情况等。提供了多个详细解答链接,帮助用户更好地了解和使用无影云电脑。
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
1071 0