APP测试--monkey的使用

一、monkey使用
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

monkey命令使用
adb shell monkey -p cn.XXX.XXX(包名) --throttle 500 --ignore-timeouts --ignore-security-exceptions
--ignore-native-crashes --monitor-native-crashes -v -v -v 100000>e:\monkeylog\monkeyScreenLog.log
表示产生10万次伪随机操作(包括触摸、按键、手势等),每次间隔500毫秒
 
monkey命令参数说明:
 
-s:伪随机数生成器的 seed 值。
示例: -s 600(如果用相同的seed值再次运行monkey,它将生成相同的事件序列。)
 
--throttle:在事件之间插入固定延迟。
示例: --throttle 500(毫秒)
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件
 
-p:如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。
示例:-p ctrip.android.view
 
--kill-process-after-error :通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。
当设置了此选项时,将会通知系 统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,
设备只是在结束事件之 后,简单地保持在最后的状态。
 
--ignore-timeouts :通常,当应用程序发生任何超时错误(如“Application Not Responding”对 话框)时,
Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
 
--ignore-security-exceptions :通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,
Monkey将 停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
 
-v :命令行的每一个 -v 将增加反馈信息的级别。 3个-v代表最详细的日志级别。
示例:-v -v -v 100(数字100: 表示测试事件数)
 
LOG分析方法
1、在日志文件搜索关键词“Exception”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,通过上下文初步判断发生问题的时间,进程pid等
a、monkey执行时未加--ignore-crashes --ignore-crashes参数,就先浏览日志中Events injected: 值,查看当前已执行的次数,就知道有无bug
b、程序无响应的问题:在日志中搜索 “ANR”
Java常用错误类型举例,可参考:https://www.cnblogs.com/cvst/p/5822373.html
Java.lang.NullPointerException:空指针异常
Java.lang.ArrayIndexOutOfBondsException:数值溢出
java.lang.ClassNotFoundException:类不存在
Java.lang.ArithmeticException:数学运算异常
Java.lang.IllegalArgumentException:方法参数异常
Java.io.FileNotFoundException:文件未找到
Java.lang.NumberFormatException:数值转化异常
Java.lang.*Error:堆栈异常错误
Java.lang.OutOfMemoryError:内存溢出错误
 
找出问题后的操作步骤:
  1. 找到是monkey里面的哪个地方出错2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
4.测试过程中出现crash现象时,根据seed值来完成bug的复现:adb shell monkey -p (包名) -s (seed值) -v 1000
monkey命令参数说明:
 
-s:伪随机数生成器的 seed 值。
示例: -s 600(如果用相同的seed值再次运行monkey,它将生成相同的事件序列。)
 
--throttle:在事件之间插入固定延迟。
示例: --throttle 500(毫秒)
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件
 
-p:如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。
示例:-p ctrip.android.view
 
--kill-process-after-error :通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。
当设置了此选项时,将会通知系 统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,
设备只是在结束事件之 后,简单地保持在最后的状态。
 
--ignore-timeouts :通常,当应用程序发生任何超时错误(如“Application Not Responding”对 话框)时,
Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
 
--ignore-security-exceptions :通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,
Monkey将 停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
 
-v :命令行的每一个 -v 将增加反馈信息的级别。 3个-v代表最详细的日志级别。
示例:-v -v -v 100(数字100: 表示测试事件数)
 
LOG分析方法
1、在日志文件搜索关键词“Exception”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,通过上下文初步判断发生问题的时间,进程pid等
a、monkey执行时未加--ignore-crashes --ignore-crashes参数,就先浏览日志中Events injected: 值,查看当前已执行的次数,就知道有无bug
b、程序无响应的问题:在日志中搜索 “ANR”
Java常用错误类型举例,可参考:https://www.cnblogs.com/cvst/p/5822373.html
Java.lang.NullPointerException:空指针异常
Java.lang.ArrayIndexOutOfBondsException:数值溢出
java.lang.ClassNotFoundException:类不存在
Java.lang.ArithmeticException:数学运算异常
Java.lang.IllegalArgumentException:方法参数异常
Java.io.FileNotFoundException:文件未找到
Java.lang.NumberFormatException:数值转化异常
Java.lang.*Error:堆栈异常错误
Java.lang.OutOfMemoryError:内存溢出错误
 
找出问题后的操作步骤:
1、找到是monkey里面的哪个地方出错
2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
4.测试过程中出现crash现象时,根据seed值来完成bug的复现:adb shell monkey -p (包名) -s (seed值) -v 1000
 

APP测试--monkey的使用

上一篇:ybatis 逆向工程 自动生成的mapper文件没有 主键方法


下一篇:fiddler 进行Android/IOS代理配置抓包