快速测试Android应用性能

2016-10-18  本文已影响55人  每天多一点

动机

这篇文章的目的是为了给懒人一个快速测试Android应用的方法. 能够在不多的时间内更有效率的发现移动应用的性能问题.

准备

在进行测试之前, 首先要确认一下是否已经准备好了所需要的工具:

这个不必多说, 功能不完备, 或者还存在突出功能bug的应用还是先修好再测试吧. 需要非混淆的debug版本是为了测试内存泄露.

Android SDK中提供了各种各样的工具, 我们可能会需要:

  • adb
  • DDMS
  • hprof-conv (转换ddms上dump下来的prof文件用)
  • 抓包工具Fiddler/Charles/Wireshark (会一种就可以)
  • Android Studio
  • MAT
  • Uiautomator Viewer

开始测试

CPU占用

既然是快速测试,我们只关注一个点: 静默时的内存消耗
你可以进入自己想要测试的画面, 反复操作几次, 放置一段时间, 不需要太长, 半分钟就可以. 然后观察CPU的消耗.

如果对于数据展示不挑剔的话, 可以使用top命令:

adb shell "top -n 50 -d 1 | grep my.app.packagename$"

my.app.packagename是待测应用的包名
-n 参数代表输出行数
-d 参数代表输出的间隔
这段命令就是用top命令打印出来 my.app.packagename 这个包的cpu占用和内存使用情况, 每隔1秒, 打印出来一条, 一共输出50条

如果发现CPU的在应用的idle状态下仍然持续占用, 就说明是程序的bug了.

Android Studio中集成了CPU的观察工具, 如果是debug包, 可以通过Android Studio上的CPU窗口直观的观察CPU占用情况.

内存泄露

内存泄露是Android开发上很容易发现的问题. 可以集成第三方的泄露工具进行监控. 也可以使用DDMS + MAT(Eclipse Memory Analyser Tool) 进行分析. 需要debug且最好非混淆的apk包.

具体步骤:

hprof-conv xxx.prof result.prof

流量占用

移动端的流量使用尽可能小, 接口调用次数尽可能少, 网络图片尽可能小, 数据传输不要太大.

通过抓包工具进行抓包. 抓到的结果中:

图层

使用Uiautomator Viewer观察视图结构, 越复杂描画代价越高.

总结

性能测试包含其实很广, 也涉及到比较深入的内容. 本文希望能够通过尽量简单的步骤, 让每个人都能快速的发现应用瓶颈.

上一篇下一篇

猜你喜欢

热点阅读