adb命令+monkey测试

发布时间 2023-03-30 11:52:03作者: ×不知该怎么√

一、前言

  monkey是app测试或移动系统测试中必做的测试方法之一;在实际工作中也会经常遇到,作为一个app测试工程师,monkey测试是最基本的技能要求。

二、monkey介绍

  monkey是Android SDK提供的一个命令行工具,可在模拟器或实际设备中运行。通过向系统发送伪随机的用户事件流(例如按键、触摸屏、手势操作等),来实现应用程序或应用系统的压力测试,即稳定性测试。

  monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。简而言之,就是利用工具模拟人的操作,如触摸屏幕,滑动trackball,按键,对手机app进行大量的随机的点按操作。

三、monkey测试目的

  目的是测试app在大量用户随机操作下是否会crash(崩溃)和ANR无响应现象。

四、monkey参数解释

  adb的操作命令格式一般为:adb shell monkey+ 命令参数

  命令   解释
基本参数  adb shell monkey 50

 系统随机执行50次事件操作。

adb shell monkey -p  com.android.camera2 50

-p+指定包名,表示指定某个app包执行monkey测试。

adb shell monkey -p 包名1 -p 包名2 50

指定多个包执行50次monkey测试。

adb shell monkey -s 10 50

-s+数字,用于指定伪随机数生成器的seed种子值。如果使用相同的种子值重新运行monkey,他将生成相同的事件,常用于bug复现

注意:-s需要跟在包名后,次数前。

adb  shell monkey -p com.android.camera2  --throttle 1000  50

--throttle+毫秒数,在事件之前插入,起到固定延迟作用;通过这个参数可以减缓monkey的执行速度;如果没有这个参数,事件将尽可能地快速被完成。这里表示50次事件隔一秒执行一次。

adb  shell monkey -p com.android.camera2  --v -v -v  50

-v ,用于指定反馈信息级别(就是日志的详细程度)

-v,只提供启动提示、测试完成提示和最终结果等少量信息;

-v -v,较为详细的日志,包括每个发送到activity的时间信息;

-v -v -v,最详细的日志,包括测试中选中/未选中的activity信息。

调试选项 adb shell monkey -p com.android.camera2 --ignore-crashes 50

--ignore-crashes,忽略崩溃;当应用程序崩溃或发生任何失控异常时(Force或close错误),monkey将停止运行;如果加上这个参数,即使程序崩溃,monkey将继续向系统发送事件,直到事件计数完成。

adb shell monkey -p com.android.camera2 --ignore-timeouts 50

--ignore-timeouts,忽略超时;当应用程序发送任何超时错误时(如“application not responding”应用程序无反应)monkey将停止运行;如果加上这个参数,即使应用程序发生ANR错误,monkey将继续向系统发送事件,直到计数事件完成。

adb shell monkey -p com.android.camera2 --monitor-native-crashes 50

--monitor-native-crashes,监视本地崩溃代码;监视并报告Android系统中本地代码的奔溃事件。

adb shell monkey -p com.android.camera2 --ignore-security-exceptions 50


--ignore-security-exceptions,忽略安全异常;
当程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。如果加入此参数,即使应用程序发生许可错误时,monkey依然会发送事件,直到计数事件完成。

adb shell monkey -p com.android.camera2 --kill-process-after-error 50

--kill-process-after-error ,发生错误停止运行并保持当前状态;当应用程序发生错误时,停止其运行;如果加上这个参数,当程序发生错误时,应用程序停止运行并保持在当前状态。

 

 

事件类型

--pct-事件类别+事件类别百分比;

用于指定每种类别事件的次数所占百分比,各种事件类型百分比总和=100%

 

monkey所执行的随机事件流中包含11大事件,分别是触摸(--pct-touch,类似点击)、手势(--pct-motion,类似滑动)、缩放(--pct-pinchzoom,二指缩放)、轨迹(--pct-trackball)、屏幕旋转(--pct-rotation)、基本导航(--pct-nav)、主要导航(--pct-mojornav)、系统按键(--pct-syskeys)、activity启动(--pct-appswitch)、键盘翻转(--pct-flip)、其他事件(--pct-anyevent)。monkey通过这11大事件来模拟用户的常规操作,对手机app进行稳定性测试。

adb shell monkey -p com.android.camera2 --pct-touch 50 --pct-motion 25 --pct-pinchzoom 25 100

让设备执行100次事件操作,其中触摸事件50%,手势事件25%,缩放事件25%。

五、adb+monkey+Android应用程序实例(已经安装adb)

  第一步,连接安卓设备,在Windows系统环境下,打开doc命令窗口,在命令行中输入adb connect 设备序列号;

 

  connected to 设备序列号表示电脑用户端adb已经和安卓设备建立连接了。

 

   第二步,进入shell环境,在命令行中输入adb shell pm list packages -3,查看已安装的第三方应用包名,去掉-3则是查看所有包名;

  第二步只是为了查找我想要的包名,如果你提前知道要测试的包名可以省略这一步。

  第三步,输入monkey命令。

 

 

   monkey命令不是固定的,需要我们根据实际的测试需求是编写使用。

六、monkey设置24小时事件数

  monkey没有直接定义时间的命令,我们只能通过计算它的执行间隔和执行次数(每条命令的执行时间可以忽略)去间接实现,比如:

  想要monkey运行24小时,每100毫秒发送一个事件。24*60*60*1000/100=864000(次)

  adb shell monkey -p 包名 -v -v -v  --ignore-crashes --ignore-timeoutss --throttle 100 864000 >D:\monkey.log

   表示:此次monkey将会运行24小时。