美文网首页
[QA]App性能的相关指标

[QA]App性能的相关指标

作者: yumiii_ | 来源:发表于2019-06-28 21:43 被阅读0次

    竞品分析可考虑的维度:
    1.安装包大小:包括apk的大小和apk解压后的大小

    2.速度
    启动相关(冷启动/热启动时长)
    adb shell am start -W packagename/activity关注total time,其他时间代表的意义可参考Android 开发之 App 启动时间统计
    应用界面内切换时长
    滑动速度

    3.短视频相关
    耗时(编辑时长、切换时长、弱网耗时等)

    4.内存
    不同状态下的内存消耗
    内存峰值
    是否存在内存泄漏
    压测后的内存使用

    5.CPU
    CPU使用率过高或者过去繁忙可能会引发以下问题:
    1⃣️手机整体性能降低,卡顿、应用交互不流畅,用户体验变差,甚至无法响应用户,引起ANR
    2⃣️手机发烫
    3⃣️手机电量消耗快

    6.流量
    首次启动应用的流量提示
    后台连续运行的流量值
    高负荷运行的流量峰值

    7.电量
    测试手机安装app后前后的待机功耗
    长时间连续使用是否有异常耗电现象


    一、CPU的占用率

    adb shell top -d 1 | grep 包名
    -d:刷新间隔,可以输入小数即代表毫秒级间隔
    但是安卓8.0以上会有包名显示不全的问题,如果包名进行过滤,可能过滤不到。我们可以用户id的值(USER,当前进程的用户id)来过滤。
    获取包名: adb shell dumpsys window windows | grep -E 'mFocusedApp'(打印当前应用的包名)
    显示出来的指标

    PID 进程id
    USER 进程所有者的用户id
    PR 优先级
    VIRT VIRT=SWAP +RES
    CPU% 当前瞬时CPU占用率
    S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
    THR 程序当前所用的线程数
    VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
    ARGS包名

    此外,安卓8.0以上的系统是按照800%cpu来计算的,因此该段时间内CPU均值应该换算成cpu均值/8。
    p.s. 可以用adb -s "device" shell cat /proc/cpuinfo获取cpu核数, 实际cpu = 总cpu/核数
    p.p.s: top命令相比于dumpsys cpuinfo这个命令获取瞬时CPU是更准确的。


    二、内存

    1⃣️procrank 移动性能测试 Android 性能测试初探 (三)
    adb shell procrank但不是所有设备都适用

    2⃣️adb shell dumpsys meminfo |grep packagename >/address/mem.txt
    启动并设置好场景后,等待2-3min,查看内存平稳(不再降低或者升高)后,使用adb shell dumpsys meminfo "包名"查看内存,取10次取平均值。

    Pss: 该进程独占的内存+与其他进程共享的内存
    Privete Dirty:该进程独享内存
    Heap Size:分配的内存
    Heap Alloc:已使用的内存
    Heap Free:空闲内存

    Total size可以用来判断是否发生内存泄漏,正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况。如果每次操作后GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大,直到到达一个上限后导致进程被杀掉,也就是因为内存泄漏引起了应用crash。


    三、启动时间

    1⃣️可以使用 Android 提供的 DisplayManager 来获取 activity 的启动时间,参考如何统计Activity启动所用的时间?

    获取package name和activity name:
    adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

    2⃣️可以使用am命令
    adb shell am start -w packagename/MainActivity

    相关文章

      网友评论

          本文标题:[QA]App性能的相关指标

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