【Android】Monkey命令使用场景

207 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

前面两章讲解了ADB的多种高频使用场景:

本章来学习一个新的命令——Monkey。它可以对移动端设备上运行的程序,生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。可以用来进行稳定性测试或者压力测试。这里介绍几种常见的用法,完整的参数和用法可查看官方文档

基本用法

  • 将移动端设备连接到电脑
  • 在电脑终端使用adb shell screenrecord remote/path/to/video_name命令开始录屏
  • 再开启一个电脑终端使用命令adb shell monkey -p package -v 500向指定的程序发送500个伪随机事件(-p可以指定一个或多个软件包,多个需要使用多个-p,这样Monkey事件退出指定包后会再次进入指定包,尽可能的在指定包内允许事件。如果不指定则是允许所有的包,则Monkey事件可能并不会发生在要测试的软件包内。)。

  • 当出现Monkey finished则说明Monkey事件运行完毕。

  • 在电脑终端输入"Ctrl+C"中止录屏,使用命令 adb pull remote/path/to/video_name local将下载到本地就可以看到在整个运行过程中的设备状况。(视频文件太大,就不放在文档里了,大家可自行进行尝试)

seed参数

seed参数用来指定伪随机数生成器的种子值。使用相同的种子值运行 Monkey,会生成相同的事件序列。在测试过程中,如果你某次monkey测试中发现了崩溃的问题,当开发进行修改后,想要跟上次测试执行相同的事件序列,就可以在每次monkey测试时采用seed参数

在电脑终端两次执行命令adb shell monkey -p com.tencent.mm -v 500 -s 10086,然后观察日志中输出的随机事件比例,可以看到两次命令的随机事件比例是一致的。

延迟时间

大家在前面两节的测试过程中就会发现,事件发生时非常快的,但是程序响应是需要时间的,所以在测试过程中,可以根据实际情况设置事件间的延迟时间。

在电脑终端执行命令adb shell monkey -p com.tencent.mm -v 500 --throttle 500,使用--throttle参数设置500毫秒的延迟时间。再次执行命令,就会发现事件触发的比较慢了。

自定义事件比例

Monkey的随机事件主要有以下几种:

  • 轻触事件:指屏幕上的单个位置上的按下/释放事件 通过--pct-touch <percent>参数设置百分比

例如:执行命令adb shell monkey -v 500 --throttle 500 --pct-touch 100,在日志中可以看到全是发送的Touch事件。

  • 手势事件:在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作等 通过 --pct-motion <percent> 参数设置百分比

例如:执行命令adb shell monkey -v 500 --throttle 500 --pct-motion 100,在日中可以看到除了Touch事件外,还会发送一些ACTION_MOVE滑动事件。

(基本所有的事件都是由点击和移动组成的,下面就不再一一展示了)

  • 二指缩放事件:指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作 可通过--pct-pinchzoom参数设置百分比

  • 轨迹球事件:很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作 目前很多手机都没有轨迹球了,但是可以模拟在屏幕上不断滑动 通过--pct-trackball <percent>参数设置百分比

  • “基本”导航事件:包括向上/向下/向左/向右,现在手机上很少有上、下、左、右按键,一般用得比较少 通过--pct-nav <percent>参数设置百分比

  • “主要”导航事件:例如返回键或菜单键等中断界面展示的事件 通过--pct-majornav <percent>参数设置百分比

  • “系统”按键事件:通常预留供系统使用,例如“主屏幕”、“返回”、“发起通话”、“结束通话”或“音量控件” 通过--pct-syskeys <percent>参数设置百分比

  • Activity 启动次数:Monkey 会以随机间隔发起 startActivity() 调用,以最大限度地覆盖软件包中的所有 Activity。 通过--pct-appswitch <percent>参数设置百分比

  • 其他类型事件:包括所有其他类型的事件,例如按键、设备上的其他不太常用的按钮等等。。 通过--pct-anyevent <percent>参数设置百分比

以上就是所有的事件参数,大家可以根据实际情况调整各事件的比例,也可以多个事件比例进行组合,比如命令adb shell monkey -v 1000 --throttle 500 --pct-touch 80 --pct-syskeys 20同时指定触摸事件和系统按键事件。