Skip to content

App端native原生性能分析

app 端 native 原生性能分析

专项测试

用户维度

  • 崩溃(Crash,弱网)
  • 卡顿(掉帧、gc、cpu)
  • 响应慢(启动时间、交互响应、H5加载)
  • 发热(cpu、mem、io、network、gps等硬件使用)
  • 掉电快(硬件占用)
  • 兼容性问题(机型覆盖、回归)

技术维度

  • 崩溃:自动遍历、monkey测试、横竖屏切换、快速进退
  • 卡顿(掉帧、gc、cpu):卡顿测试、内存泄露测试、method profile
  • 响应慢(启动时间、交互响应、H5加载):冷热启动、界面切换、h5性能测试
  • 发热(cpu、mem、io、network、gps等硬件使用)
    • method profile、gc统计、io统计、流量统计、硬件使用统计、耗电量分析
  • 兼容性问题(机型覆盖、回归)
    • 兼容性测试、自动化测试、自动遍历、monkey测试

常用测试方案

Android

  • ddms
  • android studio最新版集成工具
  • hook
  • 代码插桩

iOS

  • instruments
  • hook
  • 代码插桩

App性能

activity启动流程(以Android为例)

alt text

主要流程

  • Application OnCreate
    • 加载第三方的sdk
  • Activity OnCreate
    • 加载自身的逻辑
    • 发送远程数据请求 XXX.json
    • 渲染界面List

响应时间

  • app启动:首次安装启动、冷启动、暖启动、热启动
  • app交互:事件响应、内部加载速度、首屏渲染
  • 接口性能:的女生、http/https、download、json
  • h5性能:cache、资源加载、dom、page

app启动性能度量指标

  • 首次安装启动:首次安装会耗费较多的时间初始化,比如补丁下载、缓存数据
  • 冷启动:进程不存在
  • 暖启动:进程存在,界面不存在
  • 热启动:界面对象仍然存在,只是从后台前置到前台
  • 首屏启动:第一屏加载完整

UI性能检测常用办法

  • adb logcat
  • 录屏+视频拆帧
  • uiautomator等自动化工具200ms巡检界面变化
  • traceview
  • 硬埋点

logcat中的性能数据(非重点)

  • package=com.xueqiu.android
  • 清理缓存数据:adb shell am force-stop $package
  • 停止进程:adb shell am force-stop $package
  • 启动app:adb shell am start -S -W $package/.view.WelcomeActivityAlias
  • 获取数据:adb logcat | grep -i displayed

录屏拆帧

  • adb shell screenrecord --bugreport --time-limit 30 /data/local/tmp xueqiu.mp4
  • adb pull /data/local/tmp/xueqiu.mp4 .
  • ffmpeg -i xueqiu.mp4 xueqiu.gif
  • ffmpeg -i xueqiu.mp4 -r 10 frames_%03d.jpg

总结

  • 专项测试
  • 常用测试方案
  • App性能