一、安卓性能测试:adb,ios:xcode-instrument

  1. 启动时间:装包后首次启动,热启动、杀进程后的冷启动耗时,遵循2-5-8原则,2s进入第一帧体验最佳,2~5s体验正常,5~8s感觉慢但可以接受,超过8s用户会选择丢弃
  1. 检测方法-安卓:
  1. 获取MainActivity名称:adb shell dumpsys package 包名,找出包含category.LAUNCHER的活动即可发现
  2. 查找启动时间adb shell am start -W 包名/com.jd.ad.splash.SplashAdActivity(主activity的名称),WaitTime即为所查找内容
  1. 内存:非浏览器、游戏,运行时超过100M不可接受,实际值40M以内
  1. 检测命令:adb shell dumpsys meminfo -d 包名
  2. 检测方法:sdk后台长时间后执行命令,检测Pss Total,杀掉进程-启动-加载广告:检测Pss Total,计算差值
  1. sdk包体大小:300k左右,ios-319k
  2. cpu大小:不可长时间占用太高,游戏正常应该在20%~40%,偶发性增高可以,超过80%需要关注
  1. 命令:adb shell dumpsys cpuinfo 包名    
  2. cpu问题可能情况:
  1. 网络请求过多
  2. 进程过多 or 其他应用开启影响
  3. 大量图片、视频等加载或布局
  4. 刷新类服务(如GPS)、特殊加载(视频、GIF、音频加载等)
  5. 当前页面有过多图表或曲线图绘制操作
  6. 输入monitor查找哪个Activity或者方法一直不停运算消耗cpu,如不停止的while或者for循环
  1. 流量测试:首次冷启动耗流、热启动耗流、后台耗流、广告加载&跳转等耗流
  2. 其他:
  1. 执行monitor开启DDMS
  1. 内存泄漏:一直操作,查看内存是否一直增加,如果一直增加表示有内存泄漏;保存内存曲线、TP99等等,绘制对比图
  1. 静态Activity没有被回收、静态view
  2. 内部类:通过静态变量持有了Activity的引用
  3. 匿名类:activity内定义了一个匿名AsyncTask对象,可activity被销毁后AsyncTask仍在执行会导致内存泄漏,执行结束才会被回收
  1. GC:Mirror GC和Full GC的频次和时间,FULL GC会造成明显卡顿
  2. ios的指标-UI Loop :反映 SDK 对 App 流畅度的影响,理论上 60 fps 是最流畅的值
  1. monkey压测

二、ios性能测试:xcode-instrument

  1. 启动时间:time profiler
  2. 内存、CPU:Core Animation
  3. 内存泄露:leaks,红色点代表内存泄露,点击leaked object可以看详细信息;allocation,每次push控制器后内存上涨
  4. 流量测试:Network Activity

三、弱网测试:

  1. 安卓:使用QNET app,https://wetest.qq.com/product/qnet/
  2. ios:添加测试设备-xcode激活后,能开启ios自带的网络调试工具,https://www.jianshu.com/p/2e02994d6b73