1.什么是monkey?
Monkey是一个命令行工具,使用安卓调试桥ADB()来运行它,模拟用户触摸屏幕、滑动Trackball、按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复。
2.环境搭建
需要安装java JDK、androidSDK 以及相关环境配置
Java JDK环境配置:计算机 → 属性 → 高级系统设置 → 环境变量
2.1新建系统变量,名称:JAVA_HOME
路径:JDK的安装路径,找到JDK的安装目录,然后复制路径,粘贴过来就好
2.2然后找到path变量,输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
2.3新建系统变量,名称:CLASSPATH(java加载类的)
路径:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(由于这个引用的是相对路径,直接复制过去就可以了)
2.4sdk环境配置:在Path变量中添加 E:\sdk\adt-bundle-windows-x86-20130917.467161976\adt-bundle-windows-x86-20130917\sdk\platform-tools(这是我的安装路径)
3.Monkey的一般使用步骤
3.1连接手机:
将手机设置为调试模式,开发者选项->usb调试选上
确认设备(模拟器或者真机)是否连接成功(需要安装驱动,可下载豌豆荚,连上手机后会自动安装)
命令:adb devices,出现设备号则表示连接成功
3.2确定待测应用的包名
方法1:输入命令:adb shell dumpsys activity | find "mFocusedActivity"
得到包名为com.eastmoney.haitunlive
方法2:adb shell dumpsys window w | findstr \/ | findstr name= //先打开需要查找的apk后,再敲入以上命令
方法3:adb shell pm list package-f 获取手机内所有apk对应的包名和路径
3.3执行monkey测试命令:adb shell monkey -p com.eastmoney.haitunlive -v -v 200
这个命名的意思就是,向浪客app发送200次随机事件流操作,且打印日志
Monkeyfinished表示事件执行完成
4.Monkey的常见命令
4.1.-help 查看monkey用法
4.2. -p
用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP
例: adb shell monkey -p com.eastmoney.haitunlive-v 100
-v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别
-v 仅提供启动提示、测试完成和最终结果等少量信息
-v -v 提供较为详细的日志,包括每个发送到Activity的事件信息
-v -v -v 最详细的日志,包括了测试中选中/未选中的Activity信息
4.3. -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
4.4. --throttle <毫秒>
在事件之间插入固定的时间延迟,可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。
注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。
例:adb shell monkey -p 包名--throttle 300 -v 10
4.5.--ignore-crashes
应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
4.6.--ignore-timeouts
应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
4.7. --ignore-security-exception
当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
5.Monkey百分比事件(可以自定义)
0:点击事件百分比,即参数--pct-touch
1:滑动事件百分比,即参数--pct-motion
2:缩放事件百分比,即参数--pct-pinchzoom
3:轨迹球事件百分比,即参数--pct-trackball
4:屏幕旋转事件百分比,即参数--pct-rotation
5:基本导航事件百分比,即参数--pct-nav
6:主要导航事件百分比,即参数--pct-majornav
7:系统按键事件百分比,即参数--pct-syskeys
8:Activity启动事件百分比,即参数--pct-appswitch
9:键盘唤出隐藏事件百分比,即参数--pct-flip
10:其他事件百分比,即参数--pct-anyevent
6.一般的测试结果分析
6.1 ANR问题:在日志中搜索“ANR”程序无响应
6.2崩溃问题:在日志中搜索“Exception”
7.补充小知识
7.1如何安装apk?
adb install xxx.apk -----为了获取apk的安装包所在地址,可以直接把apk拖到cmd的窗口获取,返回success就说明安装成功了!
7.2卸载apk
adbuninstall 包名
7.3如何将日志保存到PC端?
adb shell monkey -v -v -v 1000 > 本机地址 如下:
adb shell monkey –p 包名 –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 10000 >E:\monkey1.txt
7.4查看进程
adb shell ps | find monkey
7.5杀死进程
adb shell kill 进程号
7.6查看占用的端口和进程
netstat -a -n -o |findstr "5037" 查看占用端口5037的PID值
tasklist /v | findstr 5096 通过PID查看进程名,看到底哪个进程占用此端口
7.7启动APP
adb shell am start -n 包的主Activity名
adb shell am start -ncom.sina.weibo/com.sina.weibo.VisitorMainTabActivity
7.8 adb获取屏幕分辨率:
adb shell wm size 简洁方式
adb shell dumpsys window displays 查看详情