作者:李婷婷
背景:
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),可以通过自动化高效地弥补app稳定性对测试人力和测试时间的要求。Monkey顾名思义,就像一只猴子,在电脑面前,乱敲键盘在测试,猴子什么都不懂,只知道乱敲,这样可以通过随机的方式进行测试。适用于低概率很难复现的异常和压力测试。
关于安装虚拟机的步骤我在这里不做详细说明了(Monkey测试使用的是adb命令,因此只需要配置adb环境即可);也可用真机通过USB连接电脑,连网方式可通过在安卓机上安装wifi adb应用实现。连上设备后在cmd终端中输入adb devices 查看设备连接情况。
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar。
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;这样就可以通过在shell窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。
虚拟机或者真机连接好后,直接在cmd中输入相关命令就可以进行monkey测试了,下面简单介绍下基本的命令和参数:
adb shell monkey -p 包名 –-throttle 毫秒数 --ignore-crashes --ignore-timeouts -s 9 -v -v -v 点击数 >电脑某一位置
<注>1.直接查看手机中存在的apk包,进入adb shell 命令后,手机的data/data文件夹ls查看所有包名,找到要测apk的包名(如果 是整机测试,就不需要包名)。
2.--throttle毫秒数:是指每两次执行之间的时间距离,可以防止由于实行过快软件还没来得及反应。
3. --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设 置时,出现carash或者timeout时,Monkey测试会终止,这里是防止Monkey测试终止。
类似的参数:
--pct-trackball <percent> 调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁;
--ignore-security-exceptions 忽略权限问题的;
--kill-process-after-error 当错误发生时杀进程;
--monitor-native-crashes 监视崩溃时的本地代码。
4. -s <seed> 伪随机数生成器的 seed 值,这里的9就是Seed值(影响随机事件的发生顺序),如果用相同的seed 值再次运行Monkey ,它将生成相同的事件序列。
5.点击数一般设置30000-100000次。
结束后,日志最后一行会打印Monkey finished代表执行完成。