App的monkey测试

50 阅读3分钟

APP的稳定性测试,在安卓端可以使用monkey工具进行测试

一、环境配置

1、首选配置好本地的SDK环境,保证使用adb devices可以查看到连接的设备

如下图所示:

image.png

二、测试执行准备

在Monkey测试前,必须进行以下准备:

  • 手机锁屏时间设置成永久或者大于30分钟,防止运行过程中锁屏

三、查看包名

adb shell pm list package -f 使用这个命令可以查看所有的包名

adb logcat | findstr START 输入该命令,然后点击要启动的app,即可获取到包名和activity

image.png

四、常用命令和参数

adb shell monkey -p com.sobey.cloud.view.jiangxi -v 500

image.png

随机发送500个伪随机事件 下面是常用的事件参数:

  • 触摸事件百分比,即参数–pct-touch
  • 滑动事件百分比,即参数–pct-motion
  • 缩放事件百分比,即参数–pct-pinchzoom
  • 轨迹球事件百分比,即参数–pct-trackball
  • 屏幕旋转事件百分比,即参数–pct-rotation
  • 基本导航事件百分比,即参数–pct-nav
  • 主要导航事件百分比,即参数–pct-majornav
  • 系统事件百分比,即参数–pct-syskeys
  • Activity启动事件百分比,即参数–pct-appswitch
  • 键盘翻转事件百分比,即参数–pct-flip
  • 其他事件百分比,即参数–pct-anyevent

五、指定seed值,可以保证两次的操作一致

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的。

image.png

六、输出日志到指定目录,文件目录不存在会自动创建

adb shell monkey -p com.cctv.yctv -v 100 > F:\monkeylog.cat

七、事件之间随机插入时间

在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒

adb shell monkey -p 包名 --throttle 5000 --randomize-throttle 100

命令说明:执行一百次monkey随机事件,每次事件的间隔在0-5000毫秒之间不固定

八、结果分析

  • 注意查找日志中的无响应问题和崩溃问题。无响应问题可以在日志中搜索 “ANR” ,崩溃问题搜索 “CRASH” ,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(如果出现空指针, NullPointerException,需格外重视)。

  • 为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity。

    例如下面的Log执行的就是MainActivity。 :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.airbnb.lottie/.samples.MainActivity;end

九、停止monkey的方法

注意 Monkey启动后会不断地向被测对象发送随机事件流,直到事件执行完毕或者发生异常时才停止。在Monkey运行过程中,即便断开 与PC的连接,Monkey依然可以在手机上继续运行。 停止Monkey的方法是:直接杀掉手机上的Monkey进程。具体方法如下:

adb shell ps |grep monkey 获取到对应包名的进程ID(比如获取到的是30898) adb shell kill pid adb shell kill 30898 通过kill命令杀死对应的Monkey进程。

以上就是这边了解到一些monkey的操作,欢迎大家分享交流。有任何问题欢迎指出。