Monkey测试中内存问题分析-android 自动化之Monkey测试
Monkey测试是一种 Android 平台自动化测试的手段,通过模拟用户触摸屏幕、滑动 Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。Monkey 程序由 Android 系统自带,使用 Java 语言写成,在 Android 文件系统中的存放路径是:/system/framework/monkey.jar。 Monkey.jar 程序是由一个名为“monkey”的 Shell 脚本来启动执行,shell 脚本在 Android 文件系统中的存放路径是:/system/bin/monkey。
在 Monkey 测试中,内存问题是一个非常重要的问题。内存泄露是指程序在运行过程中,占用的内存空间增加,而不再使用的内存空间没有被释放,导致系统的可用内存空间减少,可能引发 Out of Memory 错误。
如何确认内存泄露?在 Monkey 测试中,可以通过 logcat 文件 GC 输出信息来确认内存泄露。GC 输出信息包括 GC_FOR_ALLOC、GC_EXPLICIT、GC_CONCURRENT、GC_BEFORE_OOM 等几种类型。GC_FOR_ALLOC 是因为在分配内存时内存不够引发的;GC_EXPLICIT 是表明 GC 被显式请求触发的,如 System.gc 调用;GC_CONCURRENT 是表明 GC 在内存使用率达到一定的警戒值时,自动触发;GC_BEFORE_OOM 是表明在虚拟机抛出内存不够异常 OOM 之前,执行最后一次回收内存垃圾。
在 Monkey 测试中,可以使用 --hprof 参数来生成内存快照文件。例如,使用以下命令可以生成内存快照文件:
$ adb shell monkey -p fishjoy.control.menu --hprof --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt
这将生成一个 hprof 文件,位于设备的 /data/misc 目录下。这个文件可以用来分析内存泄露问题。
Monkey 测试环境准备是非常重要的。需要安装 JDK 并配置环境变量,安装 AndroidSDK 并配置环境变量,安装 TT 等。同时,需要了解 Monkey 测试的参数讲解、脚本制作、实战技巧等内容。
Android 自动化测试全系列课程包括 Android 系统级白盒测试以及与自动化测试集成、Android 自动化测试之 Monkey、Android 自动化测试之 MonkeyRunner、Android 自动化测试之 Robotium、Android 自动化测试之 UiAutomator、Android 自动化测试之 appium 等课程。这些课程将涵盖 Android 自动化测试的各个方面,帮助开发者快速掌握 Android 自动化测试的技术。