Tip:在阅读此篇之前,请先了解ADB命令: http://www.cnblogs.com/pearl07/p/8572390.html
一、什么是Monkey
Monkey是Android SDK提供的一个命令行工具(Android平台下一个命令行自动化测试工具),可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
简单地讲,就是模拟用户在安卓应用上进行随机操作,虚拟用户数量可以设置,以此暴露出crash。
二、Monkey 基本参数介绍
-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果丌指定包, monkey将允许系统启动设备中的所有app。
指定一个包:adb shell monkey -p com.tencent.qqmusic100 指定多个包:adb shell monkey -p fishjoy.control.menu –p com.tencent.qqmusic 100
-v
用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:
Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息
Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息
-s(随机数种子)
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:
monkey测试1:adb shell monkey -p com.tencent.qqmusic–s 10 100 monkey测试2:adb shell monkey -p com.tencent.qqmusic–s 10 100
如果在测试时,执行发生crash,在不确定该crash是否必现的时候,可以使用这个seed(-s)去复现执行。
--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;如果指定这个参数,monkey会尽可能快的生成和发送消息。 示例:
adb shell monkey -p com.tencent.qqmusic--throttle 3000 100
--ignore-security-exception
当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--pct-touch <percent>
调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分
比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct-motion<percent>
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
--pct-trackball <percent>
调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
--pct-nav<percent> 导航,现在手机基本没有导航了
---pct-syskeys<percent> 按键消息比例,主页、后退、音量增减
--pct-anyevent 其他不常用的按键比例的设置,不常用
--hprof monkey 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
--ignore-security-exceptions 忽略权限问题的
--kill-process-after-error 当错误发生时杀进程
--monitor-native-crashes 监视崩溃时的本地代码
三、Monkey基本语法
---- adb shell monkey –p 程序包 –v 测试次数
$ adb shell monkey -p com.tencent.qqmusic -v 500 //如果不清楚程序包名,可以使用adb命令查看
---- 可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log
adb shell monkey –p com.tencent.qqmusic –v 200|logcat -v time
----可以指定log存放的位置及名称
adb shell monkey -p com.tencent.qqmusic -v 100 >e: est.txt
----如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt
adb pull /data/anr/traces.txt
1). 测试版本需要具备root权限
2). 进入data/anr目录下面
3). 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可
---- 首先在cmd或终端中输入adb shell
---- 再执行monkey,比如
monkey -p com.tencent.qqmusic --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 100 >/mnt/sdcard/monkey.txt & logcat -v time >/mnt/sdcard/logcat.txt
---- 终端内打开存放日志地址,如
cd /Users/wengyb/Documents
----拖日志到电脑上,如
adb pull /mnt/sdcard/monkey.txt