致移动游戏&应用性能测试分析的伙伴们:
你是否会因移动游戏&APP 性能问题,而备受煎熬?
你又是否因寻找性能测试分析工具,而彷徨迷茫?
你是否因工具需要,而尝试各种 ROOT/越狱?
你是否因工具准确性,而被逼各类花式复测验证?
你是否因工具局限性,而同时开启 N 个工具?
你又是否因工具空白,而被迫各式 XCode 源码编译?
ROOT/越狱越来越难,你我路在何方?
版本编译坑罗密布,你我又将守夜到何时?

备受煎熬的时候一去不复返了,
因为移动全平台性能测试分析神器来了,
它为移动游戏&APP 测试分析而生,
它就是 PerfDog 性能狗!
背景:
在项目研发支持过程中,经历如上障碍和痛苦。我们决定做一个完全独立、简单易用,与 APP 版本、系统版本、系统平台无任何关系的性能平台。

为了保证测试结果的准确性、严谨性和可对比性。我们编写了 Demo 进行测试对比。

  1. iOS 平台:
    PerfDog 测试数据结果与 XCode/Instrument(苹果官方工具需要游戏源码编译测试)测试结果对齐一致。性能影响结果:Xcode/Instrument 性能影响较大,PerfDog 性能影响很小。

  2. Android 平台:
    安卓平台比较关注的是工具本身对手机性能影响,我们在小米 5 手机上锁死最低频率。开启截图测试影响结果如下:

PerfDog 性能影响:CPU 占比 6%-10%(正常频率下 CPU 占比 1-3%)。

其他工具性能影响:CPU 占比 27%-33%。

备注:
工具本身性能若影响大的话,手机容易发热,同时对游戏&应用性能有很大影响。即测试出性能数据无法反应用户真实情况。

软件性能数据采集:
PerfDog 支持移动平台所有应用程序(游戏、APP 应用、浏览器、小程序等)及 Android 模拟器,桌面应用程序 PerfDog 支持在 Windows 和 Mac 机器使用运行。在 iOS 和 Android 平台获取性能参数如下:

iOS 平台(与苹果官方 Xcode 工具参数对齐一致)

Screenshot
FPS(1 秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
1) Avg(FPS):平均帧率 (一段时间内平均 FPS)
2) Var(FPS):帧率方差 (一段时间内 FPS 方差)
3) Drop(FPS):降帧次数 (平均每小时相邻两个 FPS 点下降大于 8 帧的次数)
Jank(1s 内卡顿次数。iOS9.1 以下系统暂时不支持。类似 Android 的 Jank 卡顿和 iOS 的 FramePacing 平滑度统计原理。帧率 FPS 高并不能反映流畅或不卡顿。比如:FPS 为 50 帧,前 200ms 渲染一帧,后 800ms 渲染 49 帧,虽然帧率 50,但依然觉得非常卡顿。同时帧率 FPS 低,并不代表卡顿,比如无卡顿时均匀 FPS 为 15 帧。所以,平均帧率 FPS 与卡顿无任何直接关系)
PerfDog 计算方法:同时满足两条件,则认为是一次卡顿 Jank.
1、 当前帧耗时>前三帧平均耗时 2 倍。
2、 当前帧耗时>两帧电影帧耗时 (1000ms/24*2=84ms)。
同时满足两条件,则认为是一次严重卡顿 BigJank.
1、 当前帧耗时>前三帧平均耗时 2 倍。
2、 当前帧耗时>三帧电影帧耗时 (1000ms/24*3=125ms)。
计算思路:考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为 vsync 时间间隔,连续两次 vsync 没有新渲染画面刷新,则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时 2 倍,则认为一次潜在卡顿。同时单帧耗时满足大于两倍电影帧耗时 1000ms/24*2 (由于人眼低于 24 帧才能辨别画面不连续性),则认为是一次真正卡顿。同时若单帧耗时大于 3 倍电影帧耗时,则认为是一次严重卡顿。
注解:为什么是两次 vsync?GPU 一般是 3 重缓冲 buffer,当前帧已占用一个 buffer,即剩余 2 缓冲 buffer,人眼一般可容忍 2 帧延迟。 为什么是两帧电影帧耗时?低于 24 帧画面,人眼就能感知到画面不连续性,电影一般都是 24 帧。即电影帧耗时 1000ms/24=41.67ms,两帧电影帧耗时也就是 41.67ms*2,三帧电影帧耗时是 41.67ms*3。
1) BigJank:1s 内顿严重卡次数
2) Jank(/10min):平均每 10 分钟卡顿次数。
3) BigJank(/10min):平均每 10 分钟严重卡顿次数
FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1 以下系统暂时不支持。)
1) Avg(FTime):平均帧耗时
2) Delta(FTime):增量耗时 (平均每小时两帧之间时间差>100ms 的次数)
CPU Usage(Total 整机/App 进程,统计结果合 Xcode 一致)
Memory (是统计 FootPrint,注:OOM 与 FootPrint 有关,与系统、机型无关。只与 RAM 有关,如 1G 内存机器。FootPrint 超过 650MB,引发 OOM)。受 iOS 平台限制,暂时无法获取 ios10 及以下系统的 memory。后续版本增加。如做性能测试,建议升级 iOS 系统版本
Xcode Memory (XCode Debug Gauges 统计方式即 XCode Memory)。受 iOS 平台限制,暂时无法获取 ios10 及以下系统的 Xcode Memory。后续版本增加。如做性能测试,建议升级 iOS 系统版本
Real Memory(Xcode Instrument 统计方式即 Real Memory,实际占用物理内存。注:物理内存与系统策略有关,关注意义不大)
Virtual Memory(虚拟内存)
Wakeups(线程唤醒次数)。注:超过 150 进程很大可能会被系统 kill
CSwitch(上下文切换测试)。注:单核超过 14000 进程会被系统 Kill
GPU Utilization(Render/Tilter/Device)
1) Render:渲染器利用率 (像素着色处理阶段,若占比高,说明是 PS 阶段出现瓶颈,shader 过于复杂或纹理大小、采样复杂等)
2) Tilter:Tilter 利用率 (顶点着色处理阶段,若占比高,说明是 VS 阶段出现瓶颈,顶点数太多等原因)
3) Device:设备利用率 (整体 GPU 利用率)
Network(Recv/Send,测试目标进程流量,和 Xcode 结果一致)
Battery Power(整机实时 Current 电流、Voltage 电压、Power 功率)(注:和 Xcode Instrument 结果一致)
Log(系统调试日志信息)
Android 平台
Screenshot
FPS(1 秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
1) Avg(FPS):平均帧率 (一段时间内平均 FPS)
2) Var(FPS):帧率方差 (一段时间内 FPS 方差)
3) Drop(FPS):降帧次数 (平均每小时相邻两个 FPS 点下降大于 8 帧的次数)
Jank(1s 内卡顿次数。解释说明如 iOS 平台说明)
1) BigJank:1s 内严重卡顿次数
2) Jank(/10 分钟):平均每 10 分钟卡顿次数
3) BigJank(/10 分钟):平均每 10 分钟严重卡顿次数
FTime(上下帧画面显示时间间隔,即认为帧耗时)
1) Avg(FTime):平均帧耗时
2) Delta(FTime):增量耗时 (平均每小时两帧之间时间差>100ms 的次数)
CPU Usage(Total 整机/App 目标进程,统计结果和 Android Studio Profiler 一致)
CPU Clock(各个 CPU 核心的频率和使用率)
Memory (PSS Memory,统计结果和 Android Java API 标准结果一致,与 Meminfo 也一致。注:部分三星机器系统修改了 Meminfo 底层统计方式,导致 Meminfo 与 Java AP 统计结果不一致,新出三星机器已修复)
Swap Memory (Swap Memory)
Virtual Memory
Memory Detail(NativePSS、GFX、GL、Unknown)
GPU Usage(目前仅支持高通芯片手机)
GPU Frequency(目前仅支持高通芯片手机)
Network(Recv/Send)
CTemp(CPU 温度)
Battery Power(Current 电流、Voltage 电压、Power 功率)(注:与仪器测试误差<3% 左右)
Log(系统调试日志信息)
Web 性能数据管理:
账户信息管理
性能数据管理、图表展示、编辑、版本对比
性能测试任务管理
使用步骤:
步骤 1 : Window PC/苹果 Mac 机器上安装、运行 PerfDog 客户端。
iOS: 若 PerfDog 检测不到连接手机或无法测试,请先安装确保最新 iTunes 是否能连上手机。

Android: 请开启手机 Debug 调试模式及允许 USB 安装。

步骤 2 : 启动 PerfDog,然后 USB 连接手机,自动检测添加手机到应用列表中。
iOS: 则即插即用,用户无需做任何操作。

Android: 有两种模式,非安装模式和安装模式。

a. 非安装模式:
手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。

b. 安装模式:
需要在手机上自动安装 PerfDog.apk,手机屏幕上有实时性能数据显示。(请开启 Debug 调试模式、允许 USB 安装和 PerfDog 悬浮窗管理权限),启动 PC 版 PerfDog.exe,则会在手机上自动 PUSH 安装 PerfDog.apk,具体安装类似各个手机厂商安装第三方 APP 提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件 PerfDog.apk 释放到当前文件夹里,手动安装 PerfDog.apk 即可)。

这里重点说明下 Android 平台下,LMK 和 Swap 这两个参数意义:

LMK:Android 平台下 OOM 与游戏进程内存大小无关,主要是系统剩余物理内存有关。系统剩余物理内存小于 LMK,则会引起 OOM。

Swap: 系统进程用到 zram/vnswap 内存压缩技术。不同手机系统启用 Swap memeroy 大小不同。

步骤 3 : 测试模式。

USB 模式测试:
USB 连线,在设备列表选择 USB 图标设备进行 USB 模式测试 (插线模式测试功率无任何意义)。

WIFI 模式测试 (测试功率):
USB 连线后,在设备列表选择 WIFI 图标设备进行 WIFI 模式测试。WIFI 检测连接成功后,拔掉 USB 连接线。(注:需要 PC 和被测手机连接同一 WIFI,WIFI 检测连接成功后,拔掉被测手机 USB 线 (插线模式测试功率无任何意义))。

步骤 4 : 选择测试的游戏&应用。
PC 如图:

Android 平台,安装模式下,手机屏幕左上角有实时性能数据显示(Android 手机请打开 PerfDog 悬浮窗管理权限,否则手机上不会显示性能参数)。

功能介绍:

  1. 性能参数控制 Page:
    选择需要收集性能参数,控制性能参数显示 page。

  2. 记录保存:

测试结束时,可自主选择两种方式保存处理 (Upload/Save) 性能数据:

1)将性能数据同步上传 PerfDog 云端 web 看板。

2)本地导出 Excel 文件。

  1. 记录回放(方便回看分析): 打开要回放文件。

回放结果如图:

  1. 批注及标定:
    鼠标左键双击,增加批注,再次双击,则取消批注。鼠标左键单击,则增加标定,再次点击则重新标定。

  2. 设定性能参数统计分析阈值、编辑统计参数分析及框选记录保存:
    可以通过鼠标框选/拖动查询时间周期内,统计数据等。同时可对框选数据进行保存。工具左侧 “Setting” 以设定对应的性能参数统计分析阈值等。

  3. 场景 Label 标签:
    通过标签按钮给性能数据打标签,鼠标左键双击颜色区域可修改对应区域标签名。

  4. 屏幕记录:
    注意:截屏记录开启,影响性能。

  5. 多进程问题测试:
    iOS 平台,APP 多进程分为 APP Extension 和系统 XPC Server。
    比如:企鹅电竞直播软件用到 APP Extension 扩展进程 (扩展进程名 LABroadcastUpload)。当然也可能用到系统 XPC Server 服务进程,如一般 web 浏览器会用到 webkit。
    备注:后期版本 PerfDog 提供 XPC Server 测试功能。
    Android 平台,一般大型 APP,比如游戏有时候是多进程协作运行(微信小游戏,微视等 APP 及王者荣耀等游戏多子进程),可选择目标子进程进行针对性测试。默认是主进程。如图王者荣耀。

微信小游戏、小程序测试等,如下是微信小游戏 - 浪漫玫瑰园:

  1. Log 日志功能:
    采集系统日志信息。

  2. 停止功能:
    无需拔手机,选择 NULL 即可停止采集信息。

Web 云平台功能介绍:

  1. 个人性能数据 MyData。

具体性能数据展示。

  1. 测试任务管理。

创建任务邀请测试成员加入,或加入其他人创建的测试任务中。

  1. 性能数据共享归纳。

  2. 测试任务性能数据 Task Data。

重要提示:

  1. PerfDog 的 Windows & Mac OS X 客户端都支持用户对 iOS 和 Android 设备进行测试。
  2. iOS 平台: 若 PerfDog 检测不到连接手机或无法测试,请先安装确保最新 iTunes 是否能连上手机。内存采集一直为 0 请重启手机。
  3. Android 平台:有两种模式 (非安装模式,安装模式) a) 非安装模式: 手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示 (请开启 Debug 调试模式)。

b) 安装模式:
i. 需要在手机上自动安装 PerfDog.apk,手机屏幕上有实时性能数据显示。(请开启 Debug 调试模式、允许 USB 安装和 PerfDog 悬浮窗管理权限),启动 PC 版 PerfDog.exe,则会在手机上自动 PUSH 安装 PerfDog.apk,具体安装类似各个手机厂商安装第三方 APP 提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件 PerfDog.apk 释放到当前文件夹里,手动安装 PerfDog.apk 即可)。

ii. 安装模式下,在测试过程中,由于系统资源紧缺会 kill PerfDog 显示 app(手机界面性能数据显示),但不影响正常测试功能。

  1. WIFI 模式:只能在 WIFI 模式测试功率等信息。USB 连线后,在设备列表选择 WIFI 图标设备进行 WIFI 模式测试。WIFI 检测连接成功后,拔掉 USB 连接线。(注:需要 PC 和被测手机连接同一 WIFI,WIFI 检测连接成功后,拔掉被测手机 USB 线 (插线模式测试功率无任何意义))。
  2. iOS 平台:Iphone 小圆点/辅助触控(AssistiveTouch)及 Iphone x 刘海手机的小白条/引导式访问(Guided Access)影响 PerfDog 采集数据准确性,请关闭。
  3. 截屏记录影响性能 (整体 FPS 影响<=1。小米 5:CPU=1% 左右。IPhone7P:CPU<2%),若无需请不要开启截屏。

性能测试技术交流群:720150565
查看 PerfDog 详情:https://perfdog.qq.com/?ADTAG=media.dev_website


↙↙↙阅读原文可查看相关链接,并与作者交流