事情的起因是一个不怎么维护的APP从小米市场下架了,原因是APP存在几个崩溃问题,对方把测试结果报告、录屏信息发了过来。我们看了一下,发现是一个很老的版本,至于为什么没有把新版更新上去就不得而知了…公司管理上比较混乱,职责划分也不清,哎…
按照录屏上的操作去最新版上实验了一把,发现没有这些问题。为了安全起见,决定还是也用 monkey 跑一把,然后发现这东西真是个宝藏,做 APP 测试的同学一定要用起来呀。
环境安装与配置就不讲了,一搜就有,我用的是Android Studio 4.1。
Monkey简介
Monkey 是 SDK 中附带的一个工具,是一款自动化测试工具,该工具主要用于进行压力测试,一般安装在 C:\Users\Yourname\AppData\Local\Android\sdk\platform-tools。Monkey需要通过adb (Android Debug Bridge) 来运行,Monkey 测试所有的事件都是随机产生的,通过向系统发送伪随机的用户事件流,来对设备上的程序进行测试,检测程序的稳定性。虽然输入的事件是随机产生的,但是可以指定输入事件类型(触摸事件、滑动事件、轨迹球事件、导航事件、主要导航事件、系统按键事件、activity之间的切换、任意事件)的百分比,让其控制在我们需要的范围内,后面会讲到如何设置比例。
ADB的全称为 AndroidDebug Bridge,就是起到调试桥的作用,ADB 是Android SDK 里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的android设备。
测试原理
adb shell monkey的运行机制:实际上是执行手机中/system/bin/monkey这个脚本。Monkey注入系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务。Monkey事件根据类型比例生成事件队列,循环查找事件。
触摸事件(inputmanager):包括屏幕以及物理键的触摸,滑动,