标题和描述中所提及的知识点主要是关于Android系统中一个常用的测试工具——monkey命令的相关用法和参数说明。
monkey命令是一种命令行工具,可以运行在Android设备或模拟器上,用于生成伪随机的用户事件(如点击、触摸、手势等)流,以此来对应用程序进行压力测试或随机测试,检验应用程序的稳定性和健壮性。以下详细说明了monkey命令的各个参数及其功能:
1. 参数:-p
这个参数用于约束测试的范围,限定为特定的应用程序包名。如果不使用-p参数,那么monkey会允许设备启动所有安装的应用程序。使用-p参数时,可以指定一个或多个应用程序包名。例如,执行命令“adb shell monkey -p cn.emoney.acg -v 100”将限制monkey测试只针对cn.emoney.acg这个包的应用,且测试的事件数为100个,并且会输出详细程度为默认级别的反馈信息。
2. 参数:-v
-v 参数可以指定反馈信息的级别。根据不同的需求,可以通过-v参数来控制输出的日志详细程度。总共有3个级别:Level0、Level1和Level2。Level0为缺省值,只提供基本的启动提示、测试完成和最终结果等少量信息。Level1则会输出较为详细的日志,包括每个发送到Activity的事件信息。Level2输出最详细的日志,还会包括测试过程中选中和未选中的Activity信息。例如,“adb shell monkey -p cn.emoney.acg -v 100”为缺省级别输出,“adb shell monkey -p cn.emoney.acg -v -v 100”为Level1级别输出,而“adb shell monkey -p cn.emoney.acg -v -v -v 100”则为Level2级别输出。
3. 参数:-s
使用-s参数可以指定伪随机数生成器的seed值。如果两次monkey测试使用了相同的seed值,那么即使测试运行多次,所产生的事件序列也将是相同的。这个参数特别适用于重现问题,比如当开发者希望重现一个已经发生的bug时。例如,“adb shell monkey -p cn.emoney.acg -s ***”就指定了一个seed值为10100的测试。
4. 参数:--throttle
这个参数用于控制用户操作(事件)之间的延迟时长。单位是毫秒,它允许开发者指定每个事件之间暂停的时间。例如,“adb shell monkey -p cn.emoney.acg --throttle 5000 100”中的5000表示两次操作之间将会有5000毫秒的延迟。
5. 参数:--ignore-crashes
该参数用于指示monkey在应用程序崩溃时是否继续运行。如果设置了该参数,即使应用程序崩溃,monkey也会继续发送事件直到达到指定的事件总数为止。例如,“adb shell monkey -p cn.emoney.acg --ignore-crashes 1000”表示即使应用程序acg崩溃,monkey将依旧执行直到完成1000次事件发送。
6. 参数:--ignore-timeouts
在应用程序发生无响应错误(ANR)时,使用该参数可以让monkey继续运行测试,而不是停止。例如,“adb shell monkey -p cn.emoney.acg --ignore-timeouts 1000”表示即使应用程序发生ANR错误,测试将继续进行。
7. 参数:--ignore-security-exceptions
当应用程序发生安全异常(比如证书问题或网络权限问题)时,通常monkey会停止运行。但若设置了这个参数,monkey将忽略安全异常并继续发送事件直到完成。例如,“adb shell monkey -p cn.emoney.acg --ignore-security-exceptions 1000”表示即使发生安全异常,测试将继续执行。
8. 参数:--kill-process-after-error
如果设置了这个参数,当应用程序发生错误时,monkey将停止该应用程序的运行并保持在发生错误的状态。但请注意,这里仅是指应用程序停止响应,并非系统结束该应用程序的进程。例如,“adb shell monkey -p cn.emoney.acg --kill-process-after-error 1000”表示当应用发生错误时,应用程序将停止运行。
9. 参数:--monitor-native-crashes
该参数指示monkey是否监视并报告应用程序发生本地代码崩溃的情况。
10. 参数:--pct-{+事件类别}{+事件类别百分比}
此参数用于调整特定类型事件在Monkey事件序列中的百分比。例如,--pct-touch{+百分比}可以调整触摸事件的百分比,而--pct-motion{+百分比}则可以调整动作事件的百分比。
通过上述参数的灵活运用,开发者可以针对不同的测试需求对应用程序进行全面的压力测试,以确保应用在各种不同的使用场景下都能保持良好的稳定性和响应性。