Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
基本配置选项,如设置尝试的事件数量
运行约束选项,如设置只对单独的一个包进行测试
事件类型和频率
调试选项
在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理(自动停止):
如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的 *** 作,并对其进行阻止。
如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件
二、测试准备
Monkey test前必须先进入android设备的adb shell(Android SDK环境配置不在此描述,网上有很多)步骤如下:
1. 开始—>运行—>cmd
2. usb连接手机,输入 adb shell 命令,待出现 即可输入以下内容
3. 进入手机后,输入相应的monkey命令即可测试
三、基本命令格式
adb shell monkey –p 程序包 –v 测试次数
比如“adb shell monkey –p com.htc.Weather –v 20000”意思是对com.htc.Weather 这个程序包单独进行一次20000次的monkey测试
其中程序包名称可以在串口终端这句命令获得:ls data/data 显示所有程序包
四、测试Log获取
用Monkey test测试,为了方便分析问题,可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log(记得用终端保存Log文本)例如:
adb shell monkey –p com.htc.Weather –v 20000|logcat -v time
但是这个组合在monkey测试完成后,logcat仍然在执行,测试时需要注意。
如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt,步骤如下:
1. 测试版本需要具备root权限
2. 进入data/anr目录下面
3. 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可
安装sdk后,可在命令行通过 adb shell monkey 查看可用命令
2.monkey常用参数说明:
<colgroup><col><col></colgroup>
| 基本参数 | 说明 |
| -p <allowed-package-name>| 指定一个或多个包 |
| -s <seed>| 指定一个随机数生成器的seed值 |
| --throttle <milliseconds>| 指定事件之间的固定延迟(ms) |
| -v | 指定反馈信息级别(信息级别就是日志的详细程度) |
| -c <main-category>| 指定一个或多个类别名 |
| -f <scriptfile>| 运行指定的monkey脚本 |
<colgroup><col><col></colgroup>
| 事件参数 | 说明 |
| --pct-touch <percent>| 指定触摸事件百分比 |
| --pct-motion <percent>| 指定动作事件百分比 |
| --pct-trackball <percent>| 指定轨迹事件百分比 |
| --pct-syskeys <percent>| 指定系统按键事件百分比 |
| --pct-nav <percent>| 指定基本导航事件百分比 |
| --pct-majornav <percent>| 指定主要导航事件百分比 |
| --pct-appswitch <percent>| 指定应用启动事件百分比 |
| --pct-flip <percent>| 指定flip(d)事件的百分比 |
| --pct-anyevent <percent>| 指定其他类型事件百分比 |
| --pct-pinchzoom <percent>| 指定缩放(捏)事件百分比 |
| --pct-permission <percent>| 指定 |
<colgroup><col><col></colgroup>
| 调试参数 | 说明 |
| --ignore-crashes | 忽略因崩溃或异常引起的停止运行 |
| --ignore-timeouts | 忽略应用发生超时错误(ANR) |
| --ignore-security-exceptions | 忽略应用发生任何权限错误 |
| --monitor-native-crashes | 监视并报告monkey运行时native code的崩溃事件 |
| --ignore-native-crashes | 忽略因native code的崩溃事件 |
| --kill-process-after-error | 在应用出错后通知系统杀死发生错误的进程 |
| --hprof | 在事件序列前后立即生成profilfing report |
| --dbg-no-events | 监视应用程序所调用的包之间的转换 |
| --wait-dbg | 暂停执行中的monkey,直到有调试器与它连接 |
3.使用真机环境针对皮皮Android客户端进行monkey测试
A.开启手机调试模式,通过USB连接电脑,查看是否连接成,可以使用adb devices命令
B.关闭手机下拉通知栏,锁定手机界面(视机型而定, *** 作方式不一样),避免测试工程中切出app,影响测试结果。
C.执行monkey测试,使用脚本命名如下,参数请参照上面参数说明理解。
adb shell monkey -p com.chudiangameplay.android -s 10086 --pct-touch 70 --pct-motion 30 --ignore-crashes --ignore-timeouts --monitor-native-crashes --throttle 200 -v -v -v 50000 >D:\monkeylog\20200525.log
4.日志分析
日志分析可手动在日志中搜索crashes 、crashes 、error等内容,查看对应区域日志。
日志量较大,可使用如下提供的bat脚本,分析对应日志文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)