Monkey结果分析

Monkey命令实例

adb shell monkey -p com.tiulo_sj --ignore-crashes --ignore-timeouts --throttle 300 -v -v -v -s 10 100>c:\log.txt  

打开log.txt文件,文件开头显示了Monkey执行的seed值、执行次数和测试的包名。

:Monkey: seed=10 count=100
:AllowPackage: com.XXXXX

若Monkey测试顺利执行完成,在log最后,会打印出事件执行次数和所花费的时间

Events injected: 100
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
Network stats: elapsed time=9292ms (0ms mobile, 0ms wifi, 9292ms not connected)

Monkey测试出现问题时,一般出错步骤如下:

  1. 找到出错原因
  2. 查看Monkey里面出错前的一些事件动作,并手动执行该动作。
  3. 若以上步骤还不能找出,设置相同seed值,将执行的monkey命令再执行一遍。

分析时注意log中存在的 ANR、Exception、Switch、GC、crash几个单词
通过查看log中的Switch找到该次崩溃、异常等问题执行的为哪一个Activity。
如下可以看到该次执行的事件为com.XXXXX/.activiy.SplashActivit

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.XXXXX/.activiy.SplashActivity;end

关于Monkey内存泄漏

  1. 测试时弹出 out of memory对话框
  2. 查看logcat中是否有GC相关字段(两个cmd窗口先运行logcat命令,再运行Monkey,Monkey结束后Ctrl C中断logcat抓取):
  • GC_FOR_ALLOC, 因为在分配内存时内存不够引发的
  • GC_EXPLICIT, 表明GC被显式请求触发的,如System.gc调用
  • GC_CONCURRENT, 表明GC在内存使用率达到一定的警戒值时,自动触发
  • GC_BEFORE_OOM, 表明在虚拟机抛出内存丌够异常OOM之前,执行最后一次回收内存垃圾

发现内存泄漏后,添加参数--hprof执行相同Monkey获得对应profiling报告,一般会在手机设备的/data/misc目录下生成hprof的文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容