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的文件。

你可能感兴趣的:(Monkey结果分析)