monkey测试简介
什么是Monkey
Monkey程序是Android系统自带的,由Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar。
操作流程
通过名为“monkey”的Shell脚本去启动Monkey.jar程序(shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey),在你指定的APP应用上模拟用户点击,滑动,输入等操作以极快的速度来对设备程序进行压力测试,检测程序是否会发生异常,然后通过日志进行排错。
目的
测试app 是否会是否会Crash,主要用于稳定性测试
操作命令格式:adb shell monkey {+命令参数}
操作步骤
- 环境配置:把adb加入系统环境,手机开启开发者模式
- 连接手机,获取测试的包名。获取包名的方法
- Monkey编写测试命令,并运行。monkey操作命令
如果要提前中结束测试,中断运行中的monkey
CTRL+C
adb shell ps | grep monkey 返回进程号
adb shell kill [刚才查到的进程号]
从Monkey日志中看问题
测试结果初步判断
- monkey执行时未加
--ignore-crashes
--ignore-crashes
参数,就先浏览日志中Events injected: 值
,查看当前已执行的次数,就知道有无bug - 程序无响应的问题:在日志中搜索 “ANR”
- 崩溃问题:在日志中搜索 “Exception” ,在这里顺便提一下常见的Java异常:
- 算术异常类:ArithmeticExecption
- 空指针异常类:NullPointerException
- 类型强制转换异常:ClassCastException
- 数组负下标异常:NegativeArrayException
- 数组下标越界异常:ArrayIndexOutOfBoundsException
- 违背安全原则异常:SecturityException
- 文件已结束异常:EOFException
- 文件未找到异常:FileNotFoundException
- 字符串转换为数字异常:NumberFormatException
- 操作数据库异常:SQLException
- 输入输出异常:IOException
- 违法访问错误:IllegalAccessError
- 内存不足错误:OutOfMemoryError
- 堆栈溢出错误:StackOverflowError 15.其他,参考
找出问题后的操作步骤:
- 找到是monkey里面的哪个地方出错
- 查看Monkey里面出错前的一些事件动作,并手动执行该动作
- 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。
常规测试的monkey用法
adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\mylog.log
对应参数说明
-p指定包名
--throttle 100 MILLISEC事件之间插入的固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定,Monkey将尽可能快的产生并执行事件
--ignore-crashes作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--ignore-timeouts作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--ignore-security-exception 作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
--ignore-native-crashes忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止
--monitor-native-crashes 监视崩溃时的本地代码
-v 每个-v都将增加反馈信息的级别。共3个级别,因此,-v -v -v可以提供最详细的设置信息。
1000000 这里是指点击的次数
>d:\mylog.log 日志输出