WeTest 明星工具-移动端性能测试 PerfDog 初探

ld11620967:在十一月初,腾讯就官宣了一则消息,腾讯 WeTest 明星工具-PerfDog 面向全球发布。官宣介绍如下: https://wetest.qq.com/lab/view/475.html 。我在看到该新闻时,有种大开眼界的感觉,移动端的性能测试原来可以这么简单。今天闲暇之余,来了一波初探,简单体验了一番。

软件性能数据采集
我们先来了解下通过该工具能采集到哪些性能数据:

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/242=84ms)。
    同时满足两条件,则认为是一次严重卡顿 BigJank.
    1 、 当前帧耗时>前三帧平均耗时 2 倍。
    2 、 当前帧耗时>三帧电影帧耗时(1000ms/24
    3=125ms)。
    计算思路:考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为 vsync 时间间隔,连续两次 vsync 没有新渲染画面刷新,则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时 2 倍,则认为一次潜在卡顿。同时单帧耗时满足大于两倍电影帧耗时 1000ms/242 (由于人眼低于 24 帧才能辨别画面不连续性),则认为是一次真正卡顿。同时若单帧耗时大于 3 倍电影帧耗时,则认为是一次严重卡顿。
    注解:为什么是两次 vsync ? GPU 一般是 3 重缓冲 buffer,当前帧已占用一个 buffer,即剩余 2 缓冲 buffer,人眼一般可容忍 2 帧延迟。 为什么是两帧电影帧耗时?低于 24 帧画面,人眼就能感知到画面不连续性,电影一般都是 24 帧。即电影帧耗时 1000ms/24=41.67ms,两帧电影帧耗时也就是 41.67ms
    2,三帧电影帧耗时是 41.67ms*3 。
  4. BigJank:1s 内顿严重卡次数
  5. Jank(/10min):平均每 10 分钟卡顿次数。
  6. BigJank(/10min):平均每 10 分钟严重卡顿次数
    FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1 以下系统暂时不支持。)
  7. Avg(FTime):平均帧耗时
  8. 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 )
  9. Render:渲染器利用率(像素着色处理阶段,若占比高,说明是 PS 阶段出现瓶颈,shader 过于复杂或纹理大小、采样复杂等)
  10. Tilter:Tilter 利用率(顶点着色处理阶段,若占比高,说明是 VS 阶段出现瓶颈,顶点数太多等原因)
  11. 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 平台说明)
  4. BigJank:1s 内严重卡顿次数
  5. Jank(/10 分钟):平均每 10 分钟卡顿次数
  6. BigJank(/10 分钟):平均每 10 分钟严重卡顿次数
    FTime(上下帧画面显示时间间隔,即认为帧耗时)
  7. Avg(FTime):平均帧耗时
  8. 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(系统调试日志信息)
    上述内容来自官网使用文档。我们了解了参数,就实际来操作一下吧。对于工具的介绍,网络上都有,我就结合自己的实际体验来说吧。

使用的基本流程
在自己实践使用时,基本流程如下:

1.注册账号(只有注册账号后才能下载安装包)

2.下载安装包并解压

3.在 perfdog 后台创建测试项目

4.打开可执行文件 PerfDog.exe

5.使用注册的账号登录

6.使用 usb 将手机和电脑连接(不能锁屏,开启调试模式)

7.选择连接模式( wifi 还是 usb )

8.选择 app 应用列表

9.配置要监控的数据

10.开始记录数据

11.操作对应 app

12.停止记录数据(不能少于 10S )

13.上传记录数据

14.进入 perfdog 后台查看性能数据

流程介绍
前五步操作就不讲述了,大家都懂。我们直接从第六步说起,我使用的是 ios 设备。

连接设备
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 大小不同。

测试模式
通过 usb 连接电脑后,出现如下界面,可以选择测试模式:

USB 模式测试:

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

WIFI 模式测试(测试功率):

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

在实践中,USB 和 WiFi 模式我都有使用。选择模式后,界面会展示设备的详细信息,如下:

选择测试应用
选择模式后,则可以选择要测试的应用了(当前手机中的所有 app 都可以被选择),如下页面:

选择对应被测应用,并操作对应的 app,界面展示如下:

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

开启悬浮权限

android 设备中的界面性能参数显示如下:

功能介绍
1.性能参数配置
性能参数可在界面中配置,点击界面中的+号即可,如下:

①点击对应条目参数,颜色会变深,图表数据则会展示在界面中

②勾选对应条目参数,表示需要收集该数据

2.记录保存
点击右侧的蓝色开始按钮,则表示在记录数据,如下:

需要注意的是:记录时间不能少于 10S 。少于 10S,则会提示如下信息:

点击按钮后,记录会停止记录并保存数据,如下:

2.1 提交记录到 perfdog 后台
可以修改名称,点击 confirm,数据会上传到 perfdog 的后台,如下:

可以查看详细的性能数据,如下所示:

2.2 记录保存到本地
勾选保存按钮,数据就会保存到本地,如下:

可以打开 excel 文件查看对应的性能数据:

3.数据回放
点击 perfdog 界面上的文件夹按钮,选择对应的本地数据,即可以回放记录,操作如下:

可在界面查看回放结果,如下:

4.批注及标定
双击鼠标左键,增加批注,再次双击,则取消批注。

单击鼠标左键,则增加标定,再次点击则重新标定。

增加了批注和标定的界面如下所示,红色为批注,淡紫色为标定:

5.性能参数分析
5.1 数据统计
可以选择一个时间段内的数据,进行统计,如下:

5.2 设置性能参数统计分析阈值
在 perfdog 界面中的 setting 下,可以配置,如下:

5.3 保存框选数据
对某一时间段内的数据框选后,可以单独保存片段,在框选范围内,右键即可,如下:

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

7.日志记录
在 perfdog 界面,可以查看对应日志,也可以设置查看日志的等级,如下:

在尝试 WIFI 模式时,发现 log 按钮勾选不了。

8.停止功能
停止测试应用,不需要拔掉数据线,或者断开连接,在选择应用的界面中,选择 NULL 即可,如下:

9.截图录屏
连接安卓设备,并使用安装模式,可配置截屏参数,如下:

界面就会记录操作的过程,如下所示:

如此记录是不是很明了?但这种用法会影响性能参数,实际用途中不推荐。如果觉得新鲜,可以尝试使用即可。

PerfDog 后台使用
1.邀请人员
可以邀请对应人员一起维护测试项目

2.数据共享
数据共享后,可以在任务数据中查看明细,可按 android 、ios 区分,以及 app 包的版本,设备版本来查看。

使用注意点
1.设备连接

iOS: 若 PerfDog 检测不到连接手机或无法测试,请先安装确保最新 iTunes 是否能连上手机。

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

2.截图记录影响性能

截屏记录影响性能(整体 FPS 影响<=1 。小米 5:CPU=1%左右。IPhone7P:CPU<2%),若无需请不要开启截屏。

总结
使用 PerfDog 工具下来,整体有以下几点感受。

1.对性能指标的测试,更加便捷;

2.易操作

3.记录支持回放

4.数据便于管理与查看

PerfDog 工具是款不错的性能测试工具,点赞一波。

原文: https://www.cnblogs.com/hong-fithing/p/11918703.html

性能测试技术交流群:720150565

查看 PerfDog 详情: https://perfdog.qq.com/?ADTAG=media.dev_website