美文网首页
快速测试Android应用性能

快速测试Android应用性能

作者: 每天多一点 | 来源:发表于2016-10-18 14:37 被阅读55次

    动机

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

    准备

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

    • 待测应用(最好是debug版本)

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

    • Android SDK 工具

    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包.

    具体步骤:

    • 从手机上进入应用, 进入要测试的页面, 进行操作. 这里建议同样的操作反复执行2~3次.
    • 打开DDMS, 通过USB连接手机. 操作结束后GC 1~2次. 然后dump prof文件.
    • 使用 hprof-conv 转化 prof 文件, 例如, 转换 xxx.prof 文件为 result.prof文件
    hprof-conv xxx.prof result.prof
    
    • 使用MAT打开转换后的prof文件. MAT会自动分析文件, 然后会提示你选择何种类型的报告, 不用选择任何形式的报告, 直接cancel.
    • 点开 Histogram 在 Class Name 栏搜索 "activity". 搜索的结果上, Objects列不为1的对象就是泄露的对象.

    流量占用

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

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

    • 查看总的流量, 一般不要太大. 打开单个页面不宜超过 400KB. 因为3G下我们的网速可能会在50KB~80KB 之间, 使用5秒钟以上打开一个页面, 体验不会好.
    • 查看单个链接, 不应该有重复的链接.
    • 观察图片大小, 单张图片超过 50KB 都需要我们给与足够重视.
    • idle状态下是不是会有持续的网络传输. 如果有, 就应该仔细调查一下.

    图层

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

    总结

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

    相关文章

      网友评论

          本文标题:快速测试Android应用性能

          本文链接:https://www.haomeiwen.com/subject/rufwcttx.html