致移动游戏&应用性能测试分析的伙伴们:
你是否会因移动游戏&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/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)
  12. Avg(FPS):平均帧率(一段时间内平均FPS)
  13. Var(FPS):帧率方差(一段时间内FPS方差)
  14. Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
    Jank(1s内卡顿次数。解释说明如iOS平台说明)
  15. BigJank:1s内严重卡顿次数
  16. Jank(/10分钟):平均每10分钟卡顿次数
  17. BigJank(/10分钟):平均每10分钟严重卡顿次数
    FTime(上下帧画面显示时间间隔,即认为帧耗时)
  18. Avg(FTime):平均帧耗时
  19. 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%),若无需请不要开启截屏。
  4. 性能测试技术交流群:720150565
    查看PerfDog详情:https://perfdog.qq.com/?ADTAG=media.dev_website

移动端性能测试必备工具PerfDog性能狗相关推荐

  1. PerfDog性能狗上手体验及总结分析

    一.PerfDog简介 PerfDog性能狗是移动全平台iOS\Android性能测试工具,快速定位分析性能问题,提升APP应用及游戏性能和品质,手机无需ROOT/越狱,手机硬件.游戏及应用无需做任何 ...

  2. PerfDog性能狗实测智能手表性能

    随着国内越来越多的厂商发布智能手表,而这些手表的系统基本上都是基于Android系统深度打造的,就拿OPPO Watch ECG版本来说,ColorOS Watch 1.5正是基于Android O深 ...

  3. ufo帧率测试网站_移动全平台性能测试分析工具:PerfDog性能狗

    点击关注,我们共同每天进步一点点! PerfDog是腾讯出品的移动端性能测试工具,致力于提升移动应用和游戏的性能和品质,主打游戏APP,当然应用APP也能用. 介绍: 移动全平台iOS/Android ...

  4. PerfDog性能狗(移动性能测试神器)

    PerfDog介绍: 移动全平台iOS/Android性能测试.分析工具平台.快速定位分析性能问题,提升APP应用及游戏性能和品质.手机无需ROOT/越狱,手机硬件.游戏及应用APP也无需做任何修改, ...

  5. perfdog 性能狗之Jank

    jank&Bigjank 1秒内的卡顿次数PerfDog Jank计算方法:同时满足两条件,则认为是一次卡顿Jank.①Display FrameTime>前三帧平均耗时2倍.②Disp ...

  6. PerfDog(性能狗)测试之FPS

    ScreenShot(只支持USB模式) FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帖率/FPS) 1)Avg(FPS):平均帖率 2)Var(FPS):帖率方差 3)Drop(FPS) ...

  7. 移动应用性能测试工具—PerfDog

    移动应用性能测试工具-PerfDog 前言 当前移动设备越来越多地涌现在我们日常生活中,人们通过移动设备可以高效地完成很多事,比如网络购物.充值缴费.新闻资讯.理财等.随着中国IT.互联网的发展和市场 ...

  8. PerfDog-移动端性能测试-基本使用

    常见的腾讯性能测试工具:腾讯gt.腾讯wetest.腾讯perfdog 腾讯perfdog: https://perfdog.qq.com/ 一.介绍: 移动全平台iOS/Android性能测试.分析 ...

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

    在十一月初,腾讯就官宣了一则消息,腾讯WeTest明星工具-PerfDog面向全球发布.官宣介绍如下:https://wetest.qq.com/lab/view/475.html.我在看到该新闻时, ...

最新文章

  1. 近期活动盘点:统计学概论和医疗临床大数据分析讲座、24小时创新挑战:数字时代的人类健康与福祉...
  2. 关于 Nginx 配置 WebSocket 400 问题
  3. java中web应用中重定向与转发的区别
  4. TF.js 识别图片中的物件
  5. java 正则表达式 替换字符串img标签的路径_python面试题汇总第06期-正则表达式(内附7题及答案)...
  6. objectdatasouce的温故
  7. view-activity跟控件在onkey事件上的传递关系
  8. Silverlight中使用MVVM(9)-绑定Enum类型数据
  9. Something about TFS
  10. Apk打包-apk的解压和压缩实验
  11. mplayer+科大讯飞离线语音包
  12. 电子商务里的P2P、O2O、P2C、B2C、B2B、C2C是什么?
  13. cisco 交换机 获取 转发表_思科交换机端口号、终端IP地址和MAC地址的互查
  14. 一款超好用的开源密码管理器?
  15. 5.8架构设计原则案例分析
  16. VR全景拍摄的具体张数
  17. K-Means聚类分析广告投放效果的改进(数据标准化、最佳K值的确定)
  18. 【 非线性回归 Logistics-Regression 模块实现与源码解读 深度学习 Pytorch笔记 B站刘二大人(5/10)】
  19. 传奇开区网站如何添加流量统计代码
  20. sql数据库教程百度云_【推荐】原画教程百度云|原画师自学教程(附原画全套视频教程)...

热门文章

  1. RJ45和PSY之间为什么用网络变压器
  2. android局部布局刷新,Android RecyclerView 局部刷新分析
  3. Python学习D-1
  4. 运满满服务器繁忙显示500,运满满上线两年多 听听货车司机怎么说
  5. linux下Local Adress(本地ip:端口)和Foreign Address(外部ip:端口)
  6. 使用VMware通过vmdk文件创建XP虚拟机
  7. java毕业设计服装库存管理系统mybatis+源码+调试部署+系统+数据库+lw
  8. cocos2d-x Tile Map教程(二)
  9. 诺基亚Lumia630开始预订
  10. 【C++】打开C++的大门