持续创作,加速成长!这是我参与「掘金日新计划 · 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
同时指定触摸事件和系统按键事件。