移动端性能测试必备工具PerfDog性能狗

致移动游戏&应用性能测试分析的伙伴们: 你是否会因移动游戏&APP性能问题,而备受煎熬?你又是否因寻找性能测试分析工具,而彷徨迷茫?你是否因工具需要,而尝试各种ROOT/越狱?你是否...

致移动游戏&应用性能测试分析的伙伴们:

  • 你是否会因移动游戏&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文件。

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

    回放结果如图:

  • 4. 批注及标定:
    鼠标左键双击,增加批注,再次双击,则取消批注。鼠标左键单击,则增加标定,再次点击则重新标定。
  • 5. 设定性能参数统计分析阈值、编辑统计参数分析及框选记录保存:
    可以通过鼠标框选/拖动查询时间周期内,统计数据等。同时可对框选数据进行保存。工具左侧“Setting”以设定对应的性能参数统计分析阈值等。
  • 6. 场景Label标签:
    通过标签按钮给性能数据打标签,鼠标左键双击颜色区域可修改对应区域标签名。
  • 7. 屏幕记录:
    注意:截屏记录开启,影响性能。
  • 8. 多进程问题测试:
    iOS平台,APP多进程分为APP Extension和系统XPC Server。
    比如:企鹅电竞直播软件用到APP Extension扩展进程(扩展进程名LABroadcastUpload)。当然也可能用到系统XPC Server服务进程,如一般web浏览器会用到webkit。
    备注:后期版本PerfDog提供XPC Server测试功能。
    Android平台,一般大型APP,比如游戏有时候是多进程协作运行(微信小游戏,微视等APP及王者荣耀等游戏多子进程),可选择目标子进程进行针对性测试。默认是主进程。如图王者荣耀。

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

  • 9. Log日志功能:
    采集系统日志信息。
  • 10. 停止功能:
    无需拔手机,选择NULL即可停止采集信息。

Web云平台功能介绍:

  • 1. 个人性能数据MyData。

    具体性能数据展示。

  • 2. 测试任务管理。

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

  • 3. 性能数据共享归纳。

  • 4. 测试任务性能数据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(手机界面性能数据显示),但不影响正常测试功能。

  • 4. WIFI模式:只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(插线模式测试功率无任何意义))。
  • 5. iOS平台:Iphone小圆点/辅助触控(AssistiveTouch)及Iphone x刘海手机的小白条/引导式访问(Guided Access)影响PerfDog采集数据准确性,请关闭。
  • 6. 截屏记录影响性能(整体FPS影响<=1。小米5:CPU=1%左右。IPhone7P:CPU<2%),若无需请不要开启截屏。
  • 性能测试技术交流群:720150565
  • 查看PerfDog详情:https://perfdog.qq.com/?ADTAG=media.dev_website
  • 发表于 2020-09-01 13:37
  • 阅读 ( 90 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
腾讯WeTest

29 篇文章

作家榜 »

  1. hey girl 181 文章
  2. 王前前 137 文章
  3. 柠檬 118 文章
  4. lamking 105 文章
  5. 云少 105 文章
  6. 腾讯移动品质中心TMQ 104 文章
  7. humortony 82 文章
  8. 周培 49 文章