配置Monkey环境
1.下载文件:adt-bundle-windows-x86_64-20131030
2.配置环境变量:新增环境变量Android(环境变量的名字可以随便起)的路径 C:\worktools\monkey\adt-bundle-windows-x86_64-20131030\adt-bundle-windows-x86_64-20131030\sdk\platform-tools
3.在path中加入;%Android%
4.cmd-adb 验证是否成功
5.monkey命令举例
Monkey Test文档
1. Monkey测试简介
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
2. Monkey程序介绍
Monkey程序由Android系统自带,使用java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
Monkey.jar程序是由一个名为“monkey”的shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;
这样可以通过在cmd窗口中执行:adb shell monkey (+命令参数)来进行Monkey测试。
3. Monkey命令的简单帮助
要获取Monkey命令自带的简单帮助,在cmd中执行命令:adb shell monkey –help
4. Monkey命令参数介绍
1>.参数:-p(后面跟要覆盖测试的报名。可以有多个-p,每个-p后跟一个报名)
参数 –p 用于约束限制,用此参数指定一个或多个包(Package,即App).指定包之后,Monkey将只允许系统启动指定的App。如果不指定包,Monkey将允许系统启动设备中的所有App。
指定一个包:adb shell monkey –p com.app.test 100
说明:com.app.test为包名,100是事件计数(即让Monkey程序模拟100次随机用户时间)
指定多个包:adb shell monkey –p com.app.test –p com.app.tester 100
不指定包:adb shell monkey 100
说明:Monkey随机启动App并发送100个随机事件
查看设备中所有的包,在cmd窗口中执行如下命令:
>adb shell
#cd data/data
#ls
2>.参数:-v (可以有多个,个数越多,产生的log越详细。最多为三个)
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表示:
日志级别 Level 0
示例:adb shell monkey –p com.app.test –v 100
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
示例:adb shell monkey –p com.app.test –v –v 100
说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例:adb shell monkey –p com.app.test –v –v –v 100
说明:最详细的日志,包括了测试中、选中/未选中的Activity信息
3>.参数:-s (后面跟整数,相同的seed值表示产生的随机事件流相同)
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同
示例:
Monkey 测试1:adb shell monkey –p com.app.test –s 10 100
Monkey 测试2:adb shell monkey –p com.app.test –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列是一样的
4>.参数:--throttle <毫秒> (后面跟毫秒数,表示每个随机事件中间的事件间隔)
用于指定用户操作(即事件)间的时延,单位是毫秒;
示例:adb shell monkey –p com.app.test –throttle 300 100
5>.参数:--ignore-crashes (发生crash时,不停止monkey执行)
用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例:adb shell monkey –p com.app.test –ignore-crashes 100
6>.参数:--ignore-timeouts (发生ANR时,不停止monkey执行)
用于指定当应用程序发生ANR (Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
7>.参数:--ignore-security-exceptions (发生许可错误时,不停止monkey执行)
用于指定当应用程序发生许可错误时,Monkey是否停止运行,如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
8>.参数:--kill-process-after-error (发生错误时,停止monkey执行)
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态。(系统不会结束该应用程序的进程)
9>.参数:--monitor-native-crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码
四小时Momkey:
adb shell monkey -p com.app.test -v -v -v --throttle 300 --ignore-crashes --ignore-timecouts --ignore-security-exceptions 14400000 >test.log
5. Monkey日志分析(重要)
l Null指针异常:空指针异常主要是有NullPointerException异常提示
l debug异常:出现的是IllegalStateException异常
l 低内存异常:出现的是OutOfMemoryError异常
l 操作无响应异常:TimerOut(KeyDispatchingTimedOut提示)
l RuntimeException异常(操作无响应或应用的服务无法启动或连接)
l StaleDataException/readException异常(android数据库出现异常)
l IllegalArgumentException异常(向函数传递了一个不正确或不合法的参数)
关键词:ANR、Exception、Null、Error、crash(Fatal)
分析日志,可参考:http://www.douban.com/note/257030241/