Monkey测试结果解读介绍如何分析和理解由Android平台使用的Monkey工具产生的数据与报告,帮助开发者定位应用软件的问题并优化用户体验。
在进行Monkey压力测试准备阶段,除了添加需要测试的应用程序外(即主应用),还可以额外加入2至3个第三方应用程序来进行对比分析。
1. 在D盘创建一个名为whitelist.txt的文本段落件,并将这些应用的包名写入该文档。
2. 使用命令行工具cmd执行adb push d:\whitelist.txt /data/local/tmp/,以将上述白名单文件传输到设备中指定位置。
3. 执行Monkey测试时可以使用如下指令:
- 对于需要被包含在测试中的应用(即白名单包),可采用以下命令:monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 >导出log文件
- 对于单独测试的应用,采用以下命令:monkey-p com.hst.che --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 >导出log文件
注意,同时设置黑名单和白名单是不允许的。若需要排除某些应用,则使用--pkg-blacklist-file选项;而只测试特定的应用则应利用--pkg-whitelist-file指定。
- 参数说明:
--throttle:在事件之间插入固定延迟(以毫秒为单位),以便减慢Monkey运行的速度。
-s :用于设定伪随机数生成器的种子值,相同的seed会带来同样的事件序列。
选项如--ignore-crashes、--ignore-timeouts等分别用来忽略程序崩溃和无响应的情况。
4. 导出日志至电脑:adb pull /mnt/sdcard/monkey.txt d:\monkey.txt
5. 分析导出的日志文件:
- 日志开头会显示本次测试的随机数种子值、执行次数以及被测应用包名。
- 若Monkey完成所有事件,则会在日志结尾处看到“Monkey finished”字样,同时还会列出当前已执行的事件数量和所耗时间。若在中途停止,则最后记录的是中断时已经进行到的具体步骤。
6. 分析测试结果:
- 寻找关键词如ANR(无响应)、CRASH(崩溃),以及Exception(异常)。
7. 查看日志中的Switch部分,以了解Monkey执行的Activity及其间的转换情况。每500毫秒出现一次“Sleeping for 500 milliseconds”记录代表了一个事件的发生。
8. 当遇到问题时,可以通过以下步骤尝试重现错误:
- 定位是哪个测试点出现了异常。
- 分析并手动复现Monkey出错前的用户操作序列。
- 若上述方法仍无法定位问题,则可以重新运行相同的命令(确保使用一致的seed值),以期再现故障。