移动端性能专项测试之内存泄漏 - 实战篇

发布于 更新于
本文目录
  1. 背景
  2. 测试场景选择
  3. 测试方式
  4. 有源码+Android Studio环境,借助Profiler
  5. 无源码,有debug版本的APK包,借助DDMS工具
  6. LeakCanary+Monkey(推荐)

技术文章测试基础与用例

在上篇文章【移动端性能专项测试之内存泄漏-原理篇】@@ARTICLE:1612250666032@@中有给大家介绍了内存泄漏发生的原理及对App的影响,在工作中测试人员如何通过有效的方式检测到内存泄漏的问题一直以来都是一个难题,本篇文章从实

背景

在上篇文章【移动端性能专项测试之内存泄漏-原理篇】/articles/8900000000000000539/中有给大家介绍了内存泄漏发生的原理及对App的影响,在工作中测试人员如何通过有效的方式检测到内存泄漏的问题一直以来都是一个难题,本篇文章从实战出发给大家介绍实际工作中的测试方式。

测试场景选择

  • 新页面打开

  • 横竖屏切换

  • 滑动屏幕

测试方式

有源码+Android Studio环境,借助Profiler

image.png

操作步骤:

  • 打开App,进入到默认页面(首页),手动触发GC,记录此时的内存值

  • 测试结束后,返回到默认页面,手动触发GC,同时记录此时的内存值

  • 两者做比较,发现值存在较大差异,可以断言发生了内存泄漏

  • 此时可以点击Dump Java Heap,收集此时的内存信息,完成之后会自动保存在后缀为hprof文件中

  • 拿hprof文件做具体分析即可(可提交给开发) image.png

无源码,有debug版本的APK包,借助DDMS工具

DDMS是Android SDK中自带的调试工具 需要注意的是:新版本的SDK中,DDMS工具已经集成到了Android device mointor中 image.png 操作步骤:

  • 打开monitor.bat,链接设备

  • 选择要调试的进程,打开调试App->进入到首页

  • 点击Update heap->Cause GC,记录下此时data object这一栏数据

  • 测试结束后,返回到默认页面,点击Cause GC,同时记录data object这一栏数据

  • 前后两者做对比,发现值存在较大差异,可以断言发生了内存泄漏

  • 此时点击Dump HPROF file按钮,获取保存有内存信息的hprof文件

  • 拿hprof文件做具体分析即可(可提交给开发) image.png

LeakCanary+Monkey(推荐)

LeakCanary是Square公司基于MAT开源的一个工具,用于检测Android App的内存泄漏,我们可以通过集成LeakCanary提供的jar包到自己的项目工程中,一旦检测到内存泄漏问题,LeakCanary会自动dump内存信息,通过另外一个进程分析内存泄漏信息并展示出来,可以随时发现和定位内存泄漏问题。 image.png

在测试过程中,我们可以结合Monkey健壮性测试工具自动化执行,测试结束后,LeakCanary自动展示内存泄漏问题: image.png

来源:testingpai

继续阅读