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  

上一篇:js笔记(4)--关于在window.onload()里面定义函数,调用函数无法执行~


下一篇:android当中Binder机制,Looper与MessageQueue机制