上一节已经介绍了adb常用命令及其基本使用方法,这节主要介绍monkey相关指令用法。
一、monkey介绍
Monkey,作为Android SDK提供的一款强大的命令行工具,它以其简洁易用的特性,为我们的Android应用程序提供了源源不断的伪随机用户事件流(如按键输入、触摸屏输入、手势输入等),为我们进行压力(稳定性)测试提供了强有力的工具。它的主要作用是寻找并验证我们的应用程序是否存在无响应和崩溃等异常情况。
二、adb结合monkey命令使用
1、-help:adb shell monkey <-help> # 列出简单用法,<-help>可省略
2、-v:日志级别相关
1)1000次无规律点击:
adb shell monkey 1000
2)指定应用无规律点击1000次:
adb shell monkey -p 包名 -v 1000
-v作用:命令行上的每一个-v都将增加反馈信息的详细级别。
Level0(默认),除了启动、测试完成和最终结果外只提供较少的信息。
Level1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。
Level2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。
• 比较常用的是-v -v -v,即最多详细信息,一般会保存到指定文件中供开发人员查找bug原因时使用
例:adb shell momkey -v 10
3)对该应用1000次无规律点击后将日志导出到电脑指定路径
adb shell monkey -p <包名> -v 1000 >指定路径
3、-s:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的;seed值:输出log日志文件后,文件内查看
adb shell monkey -p <包名> -s 10 -v 100 >D:\log.txt:根据seed值 指定应用随机操作100次并打印日志到指定路径/文件
4、--throttle <毫秒> :用于指定用户操作(即事件)间的延时(单位:毫秒);在事件之间插入固定延迟。如果不指定该选项,Monkey将不会被延迟
adb shell monkey -p <包名> --throttle 300 -v 10
5、--pct-<事件类别> <事件类别百分比>:用于指定每种类别事件的数目百分比
例:调整触摸事件的百分比 adb shell monkey -p <包名> --pct-touch 100 -v 1000
其他相关事件百分比:
事件百分比:
--ptc-touch:触摸时间百分比
--ptc-motion:动作事件百分比
--ptc-trackball:轨迹球事件百分比
--ptc-nav:基本导航事件百分比
--ptc-majornav:主要导航事件百分比
--ptc-syskeys:系统按键事件百分比
--ptc-appswitch:应用启动事件百分比
--ptc-anyevent:应用启动事件百分比
--pct-pinchzoom:缩放事件百分比
--pct-trackball:轨迹球事件百分比
6、--ignore-crashes:用于指定当应用程序崩溃时(Force& Close错误),Monkey不会停止运行,依然会发送事件,直到事件计数完成
如果程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止:
adb shell monkey -p <包名> --ignore-crashes 1000
如果程序崩溃,Monkey将会停止运行:
adb shell monkey -p <包名> 1000
其他--ignore相关命令:
--ignore-timeouts:应用程序发生任何超时错误(如“Application Not responding”对话框),Monkey不会停止运行,
--ignore-security-exception:当程序发生许可错误(例如启动一些需要许可的Activity, 证书许可,网络许可等 )导致的异常时,Monkey不会停止运行;
三、monkey日志
1、正常:观察log最后打印信息
monkey测试顺利执行完成后,在log的最后,会打印当前执行时间的次数和所花费的时间,可以查找到“Monkey finished”关键字;
2、异常:日志内搜索异常关键字
a. 无响应-Anr问题:在日志中搜索“ANR”
b. 崩溃:在日志中搜索“CRASH”
c. 其他问题:在日志中搜索”Exception”
d.内存溢出:在日志中搜索”OOM"