稳定性测试:
1.adb monkey运行测试:
如:
adb shell monkey -p com.tmes.topstar --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 >D:\android\monkey_log.txt
2. adb monkey报告分析:
关键字及其含义:
1)ANR:应用无响应(Application Not Responding)
2)crash:程序崩溃
3)exception:运行异常事件。(如:空指针, NullPointerException)
//monke本身的问题,忽略
:Sending Flip keyboardOpen=false
Got IOException performing flipjava.io.IOException: write failed: EINVAL (Invalid argument)
// Injection Failed
4)GC:内存泄漏
问题复现
1)查看出现错误出的事件操作,手动执行事件,复现问题
2)手动无法复现时,使用相同的seed值重跑
3.详细分析法:
1) ANR:一般是主线程的响应超过5秒,或者BroadcastReceiver没有在10秒内作出响应。这个就是一个比较严重的缺陷。把耗时的操作另起线程来处理就可以了。
2)分析log中的具体信息:
查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
3)内存泄漏
- 内存泄漏弹出out of memory对话框
- 对于有内存泄漏但是没有单出out of memory对话框的情况,可以通过logcat文件GC出信息,(GC:java的垃圾回收机制)
GC_FOR_ALLOC: 因为在分配内存时候内存不够引起的
GC_EXPLICIT 表明GC被显式请求触发的,如System.gc调用,
GC_CONCCURRENT: 表明GC在内存使用率达到一定的警戒值时候,自动触发
GC_BEFORE_OOM 表明在虚拟机抛出内存不够异常oom之前,执行最后一次回收内存垃圾
3.发现内存泄露–内存报告分析
monkey命令加一个参数–hprof,重新执行同样的操作