1.Monkey

1.Monkey定义

Monkey 是一个运行在【模拟器或真实设备】上,并生成伪随机的用户事件流(点击、触摸、手势及一些系统级别的程序)。使用Monkey可以随机、重复的对APP进行压力测试

描述点 说明
对象
- 模拟器
- 真实设备
工作方式 随机+重复 —> 压力测试

2.常用命令参数汇总

image.png

分类 参数 说明 示例
基础参数 -s 伪随机数种子发生器(用于规范monkey序列) adb shell monkey -s 10 1000
-v 输出日志显示 adb shell monkey -v 1000
-p 指定APP对象 adb shell monkey -p com.xueqiu.android 1000
事件参数 —throttle 设置Monkey执行的速度【单位:毫秒】 adb shell monkey —throttle 2000 1000
—pct-touch 设置“触摸百分比” adb shell monkey —pct-touch 50 1000
—pct-motion 设置“滑动百分比” adb shell monkey —pct-motion 60 1000
—pct-syskey 设置“系统键百分比” adb shell monkey —pct-syskeys 70 1000
—pct-appswith 设置“activity启动百分比” adb shell monkey —pct-appswith 80 1000
—pct-anyevent 设置“其他类型百分比” adb shell monkey —pct-anyevent 75 1000
【不常用】—pct-nav 设置“导航百分比” adb shell monkey —pct-nav 60 1000
【不常用】—pct-majornav 设置“主要导航百分比” adb shell monkey —pct-majornav 60 1000
调试参数 —ignore-crashes 忽略crash adb shell monkey —ignore-crashes 100
—ignore-timeouts 忽略timeout adb shell monkey —ignore-timeouts 100

【文件】app命令-monkey.xmind

2.【基础参数】命令

1.-p(参数)指定APP对象

-p (参数) 用于指定monkey的APP对象

1.【不使用 -p】不指定monkey的APP对象

  1. adb shell monkey 100 # 随机执行100次【不指定APP】

2.【使用 -p】指定monkey的APP对象

  1. adb shell monkey -p com.xueqiu.android 1000

image.png

3.【扩展】查看APP的“包名”

  1. 【方法1
  2. adb -e shell pm list packages # 查看所有的包名
  3. adb -e shell pm list packages "xueqiu" # 查看"雪球"的包名 --> package:com.xueqiu.android
  4. 【方法2
  5. adb shell dumpsys window | findstr/grep mCurrentFocus
  6. 【方法3
  7. aapt d badging /c/Users/DELL/Downloads/com.xueqiu.android_12.35.3_311.apk | findstr "package"
  • 【方法1】adb shell pm list packages “xueqiu”

5555.jpg

  • 【方法2】adb shell dumpsys window | findstr/grep mCurrentFocus

631261.jpg
【方法3】aapt d badging /c/Users/DELL/Downloads/com.xueqiu.android_12.35.3_311.apk | findstr “package”
image.png

2.-v(参数)输出日志信息

-v (参数) 用于输出显示monkey过程中的日志信息

  1. adb -e shell monkey -v 1000 # -v:输出详细的日志信息;-e: 代表“(进入)模拟器”;-d:代表“(进入)真机”

image.png

3.【事件参数】命令

1.-s(参数)伪随机数发生器生成种子值

-s (参数) 用于“伪随机数发生器的种子值”—> 如果用相同的种子值重新运行monkey,它将生成相同的事件序列。

  1. adb shell monkey -v -s 5 5

image.png

2.—throttle(参数)设置monkey速度【毫秒】

—throttle (参数) 用于设置“事件间”延迟的速度—> 如果没有指定此参数,则不会有延迟,事件会尽快生成。
throttle [ˈθrɑːtl]

  1. adb shell monkey --throttle 2000 10

image.png

3.—pct系列(参数)

1.常用

1.—pct-touch 触摸 <百分比>

—pct-touch (参数) 调整monkey命令触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作),参数设置要根据被测应用程序的特点来修改设置。

  1. adb shell monkey -v --pct-touch 80 100 # 设置“触摸事件”的百分比为80%

image.png

2.—pct-motion 滑动 <百分比>

—pct-motion(参数) 调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成),需注意的是滑动事件是直线滑动,不适用曲线滑动。
音译 motion [ˈmoʊʃn] 运动、滑动

  1. adb shell monkey -v --pct-motion 50 1000 # 设置“motion滑动事件”的百分比为50%

image.png

3.—pct-syskeys 系统键 <百分比>

—pct-majornav(参数) 调整“系统键”事件的百分比(例如:主页、返回、开始呼叫、结束呼叫或音量控制)

  1. adb -e shell monkey --pct-syskeys 30 100

image.png

4.—pct-appswith acitvity的启动 <百分比>

—pct-appswith(参数) 调整“activity启动”的百分比(在随机的时间间隔内,monkey会发出一个startActivity()调用——>来最大限度覆盖package中的所有activity—>**【最终】切换activity**)

  1. adb -e shell monkey --pct-majornav 50 1000

image.png

4.—pct-anyevent 其他类型<百分比>

—pct-anyevent(参数) 调整“其他类型”事件的百分比(例如:按键—->即“任意事件”【这是一个全面的方法】)

  1. adb -e shell monkey --pct-anyevent 50 1000

image.png

2.不常用

1.—pct-nav 导航 <百分比> 【安卓盒子用的多,一般APP很少用】

—pct-nav(参数) 调整nav导航事件百分比。(导航事件:由上、下、左、右—> 来自定义输入)

  1. adb shell monkey -v --pct-nav 50 1000 # 设置“nav滑动事件”的百分比为50%

image.png

2.—pct-majornav 主要导航 <百分比>

—pct-majornav(参数) 调整“主要导航”事件的百分比(例如:后退键、菜单键)

  1. adb -e shell monkey --pct-majornav 50 1000

image.png

4.【调试参数】命令

1.—ignore-crashes 忽略crash

—ignore-crashes(参数) 用于遇到crash错误后,继续执行monkey操作,直到运行完指定的次数。

  1. adb -e shell monkey --ignore-crashes 100

image.png

2.—ignore-timeouts 忽略timeout

—ignore-(参数timeouts) 用于遇到timeout错误后,继续执行monkey操作,直到运行完指定的次数。

  1. adb -e shell monkey --ignore-timeouts 100

image.png

3.问题解决

1.安卓模拟器无法联网

1.images版本

说明 务必安装APIS版本
image.png

2.联网设置(模拟器开启状态)

  1. emulator @my1 -dns-server 8.8.8.8,114.114.114.114 # my1为模拟器名称

image.pngimage.png
image.png

2.appt不是内部命令

按照下图进行相关配置:
image.png

3.android模拟器黑屏
image.png