• PerfDog的使用教程


    一、介绍:

    移动全平台iOS/Android性能测试、分析工具平台,快速定位分析性能问题。PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)、Android模拟器、云真机等性能测试。支持APP多进程测试(如Android多子进程及iOS扩展进程APP Extension)。

    重要说明Q&Ahttps://bbs.perfdog.qq.com/detail-128.html

    特殊机型指南https://bbs.perfdog.qq.com/detail-127.html

    性能参考标准说明https://bbs.perfdog.qq.com/detail-145.html

    WEB使用手册https://bbs.perfdog.qq.com/article-detail.html?id=49

    PerfDogService(自动化及云测性能服务https://perfdog.qq.com/perfdogservice

    二、优缺点:

    优点:

    1. 支持移动全平台:支持Android/iOS移动平台,提供PerfDog软件Windows & Mac版本
    2. 无需ROOT/越狱:Android设备无需ROOT,  iOS设备无需越狱
    3. 测试数据准确:工具CPU性能影响<1%,保证性能数据准确真实性
    4. 测试数据完整全面: 轻松获得 FPS、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能参数
    5. 支持应用广泛:支持所有APP应用、游戏、小程序、小游戏、H5、web
    6. 工具易用性高:无需安装,即插即用,减少繁琐的测试障碍

    缺点:

    PerfDog当前处于市场推广阶段,存在诸多Bug,测试一天下来发下的Bug就不下5个,如:

    1. 在Mac上执行时,如果Mac屏幕休眠后,手机会与该工具断开连接导致测试中断
    2. 在Mac上执行测试期间图表显示正常,但上传到云平台后cpu或内存图表无法展示,且单次测试时间越长越容易复现,已提交给他们的开发处理这个Bug
    3. 在云平台上对浏览器的分辨率适配不好,当测试时间超过10分钟后,在云平台上无法展示完整的图表,比如测试30分钟,只显示13分钟的图标数据,可通过放缩浏览器,改变mac分辨率等方式解决,但显示有问题,已提交给他们的开发处理这个Bug
    4. 统计https的流量上行与实际值偏差大
    5. 测试数据保存本地时,经常出现PerfDog卡死

    三、性能指标:

    1. 包体大小:包体大小能被列为性能指标,是从APP性能指标及游戏运营两个维度考虑的,玩家是更希望包体小的同时性能要好,有时它们会是一个互相取舍的关系。
    2. CPU占用率:一般情况下,用主流手机玩游戏20%-40%的CPU占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果CPU占用率超过80%就非常值得我们去关注了。
    3. 图片处理器每秒刷新的帧数(FPS):可用来指示页面是否平滑的渲染。手机游戏帧率FPS,30-60都可接受,上了60对于人眼主观感受差别就不大了。对于游戏开发而言,并不是FPS越高就一定越好,FPS取决于显卡,其次是内存、CPU,然后是网络。故综合游戏其他性能指标,选择一个适合的FPS即可。
    4. 内存使用:在Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。移动设备的内存资源是非常有限,为每个APP进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。
    5. 电量:相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,android的很多特性都比较耗电(如屏幕,GPS,sensor传感器,唤醒机制,CPU,连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验。
    6. 流量:目前的网络类型包含2G3G4Gwifi,其中还有不同运营商的区分,我们在APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。另外,对于需要联网的手游来说,部分游戏对不同联网方式的网络类型采用了不同的流量消耗策略,主要分为wifi环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试。

    总结,性能指标大致如下:
    FPS cpu mem GPU NETwork Battery(wifi)

    四、测试前准备

    1.  自己的设备的其他应用全都关闭。
    2.  电量充足,一般70%以上。(其实测试50%以上就行了,但是在测试过程中会耗电)
    3.  不能边充电边进行性能测试。
    4.  保持登录应用的账号不要被其他人挤掉,不然可能测试的性能数据作废了。
    5.  设备。至少要准备三台测试机,覆盖目前的高、中、低配手机(主要看cpu),如果是ios需要更多的机型。

    五、安装及运行 

    登录PerfDog官网https://perfdog.qq.com/,根据您的PC平台选择想要下载的桌面应用程序

    Windows平台:解压下载包,双击打开PerfDog.exe桌面应用程序。

    Mac平台:直接运行dmg桌面应用程序。

     账号的注册登录:

    需要先注册账号,然后登录该账号后测试的数据就会同步到平台上;

      

    打开PerfDog.exe文件,需要登录才能进入到 perfDog的主页, 输入刚刚官网注册邮箱即可

    连接手机:

    iOS:则即插即用,用户无需做任何操作。若PerfDog检测不到连接手机或无法测试,请先安装确保最新itunes是否能连上手机(最新itunes可在QQ管家上直接下载安装)。

    备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html

    Android:有两种模式,非安装模式和安装模式。(注:请开启手机USB调试模式及允许USB应用安装。)。

    a.   非安装模式:

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

    b.   安装模式:

    需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示(允许USB应用安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。此模式下,在测试过程中,可能由于系统资源紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能。

    备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html

    测试模式:

    USB模式测试:

      USB连线后,在设备列表选择USB图标设备进行USB模式测试

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

      只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(USB模式测试功率无任何意义,会充电))(备注:一般公司WIFI可能做了安全策略限制,导致iOS平台在公司WIFI下无法使用)

     首页模块介绍:

    模块1:选择调试的手机设备

    模块2:选项需要测试的应用名称,会显示手机上安装的所有应用

    模块3:手机的CPU、GPU、内存介绍等

    1. device:显示的是设备相关信息;
    2. Setting:显示的是性能指标数据的配置页面, 参数有:FPS(帧数)、FrameTime(帧时间)、CPU、NetworkFlow(网络流量) 一般我们保持默认(可以根据自己产品的特点调整)
    3. About:显示的是版本号和帮助文档入口

    模块4:

    FPS:

    FPS(Frames per second) 1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS。

    名称说明Avg(FPS)平均帧率(一段时间内平均FPS)Var(FPS)帧率方差(一段时间内FPS方差)Drop(FPS)降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

    在平时玩游戏的时候, 延迟不能大于100毫秒, 否则用户的严重只剩下了卡顿, 100-300毫秒用户可以感受到延迟, 当达到一秒, 用户的注意力就会转移

    Jank:

    1秒内卡顿次数, 帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)

    Jank1s内卡顿次数(同时满足ab,则认为一次卡顿Jank)

    a) 当前帧耗时>前三帧平均耗时2倍。
    b) 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。

    BigJank1s内严重卡顿次数(同时满足ab,则认为是一次严重卡顿BigJank)

    a) 当前帧耗时>前三帧平均耗时2倍。
    b) 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。

    BigJank:1秒内严重滞后的次数

    Jank(/10min):平均每10分钟卡顿次数

    BigJank(/10min):平均每10分钟严重卡顿次数PerfDog Stutter测试过程中,卡顿时长的占比。Stutter(卡顿率)=卡顿市场/总时长

    FTime:

    名称说明FTime上下帧画面显示时间间隔,即认为帧耗时Avg(FTime)平均帧耗时Delta(FTime)增量耗时(平均每小时两帧之间时间差>100ms的次数)

    模块5:

    CPU Usage:CPU利用率官方讲解

    名称说明Total CPU整机CPU使用率AppCPU进程CPU使用率CPU Clock各个CPU核心的未规划频率和未规划使用率CPU Clock Normalized各个CPU核心的规划频率和规划使用率

    模块六:

    名称说明MemoryPSS Memory
    统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)Swap Memory部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低Virtual Memory(VSS)VSS 虚拟耗用内存(包含共享库占用的内存)Memory DetailNativePSS、GFX、GL、UnknownCTempCPU温度
    Battery Power(Current电流、Voltage电压、Power功耗)
    注:与仪器测试误差<3%左右。
    注:Sum(Battery)是耗电量。

    模块7:

    选择需要收集性能参数,默认已经选中了一些常用的

    iOS平台(苹果官方Xcode工具参数对齐。注:iOS系统对进程性能参数做严格限制,超过限制则会被系统kill)

    • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
    • 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与卡顿无任何直接关系)

      参考:https://bbs.perfdog.qq.com/article-detail.html?id=6

      PerfDog Jank计算方法:

      1.同时满足以下两条件,则认为是一次卡顿Jank.

        a)当前帧耗时>前三帧平均耗时2倍。

        b)当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。

      2.同时满足两条件,则认为是一次严重卡顿BigJank.

        a)当前帧耗时>前三帧平均耗时2倍。

        b)当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。

        1)BigJank:1s内严重卡顿次数

        2)Jank(/10min):平均每10分钟卡顿次数。

        3)BigJank(/10min):平均每10分钟严重卡顿次数

    • Stutter(测试过程中,卡顿时长的占比)
    • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持)

        1)Avg(FTime):平均帧耗时

        2)Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)

    • CPU Usage(TotalCPU表示整机CPU使用率,AppCPU表示进程CPU使用率,统计结果和Xcode一致,PerfDog使用率=Xcode使用率/核心数。备注:iOS平台CPU Usage是未规范化CPU使用率,请参考https://bbs.perfdog.qq.com/detail-146.html)
    • Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。注:PerfDog暂时在iOS9、10系统无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本
    • Xcode Memory (XCode Debug gauges统计方式即XCode Memory)。注:iOS9、10系统暂时无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本
    • Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存系统策略有关,衡量内存指标时不会关注,但是它有助于分析定位整体性能问题。比如:footprint没有降低,说明应用没有释放内存,但是real memory却降低了,说明系统对内存做了压缩。由于压缩会占用CPU资源,同时相应会导致FPS降低)
    • Virtual Memory(虚拟内存)
    • Available Memory(整机可用剩余内存)
    • Wakeups(线程唤醒次数。注:超过150进程很大可能会被系统kill。a sleep/wake cycle on each thread per second,Exceeding limit of 150 wakeups per second over 300 seconds,特别是iOS13.2闷杀后台进程事件,建议重点关注)
    • CSwitch(上下文切换测试。注:单核超过14000进程会被系统Kill。Context Switch Limit 14000(Core/Second)
    • GPU Utilization
    1. Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
    2. Tiler: Tiler利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
    3. Device:设备利用率(整体GPU利用率)
    • Network(Recv/Send,测试目标进程流量,统计结果合Xcode一致)(注:USB测试模式下是app的,WiFi测试模式下可能是整机可能是app
    •  BTemp(电池温度)
    • Battery Power(仅WIFI模式,整机实时Current电流、Voltage电压、Power功耗)(注:20s获取一次,目前最精准的统计方式,结果和Battery life结果一致,支持所有iOS机型)

    注:Sum(Battery)是耗电量。

    • Energy Usage(即为Xcode Energy Impact。监控应用使用的能耗情况(包括CPU、GPU、NetWork、Location、Display (iPhone X only)、Overhead)。(注:和Xcode Energy Impact结果一致。有线模式下测试,支持iOS9及以上系统。Total Energy<=270为Low,270<Total Energy<=1000为High,Total Energy>1000为Very High)。

      参考:https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/devf7f7c5fcd

    • Log日志采集(WIFI模式下,不支持Log收集)

    Android平台

    • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
    • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
    1. Avg(FPS):平均帧率(一段时间内平均FPS)
    2. Var(FPS):帧率方差(一段时间内FPS方差)
    3. Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

      备注:高阶FPS功能-Android窗口与FPS

       请参考https://bbs.perfdog.qq.com/?m=app&c=detail&a=index&id=201

    • InterFrame(部分机型具有动态补帧/插帧技术,此参数可真实反映1秒内插入的帧数) 
    • Jank(1S内卡顿次数。解释说明如iOS平台说明)
    1. BigJank:1s内严重卡顿次数
    2. Jank(/10分钟):平均每10分钟卡顿次数。
    3.  BigJank(/10分钟):平均每10分钟严重卡顿次数
    • Stutter(测试过程中,卡顿时长的占比)
    • FTime(上下帧画面显示时间间隔,即认为帧耗时)
    1. Avg(FTime):平均帧耗时
    2. Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
    • CPU Usage(传统CPU利用率,也叫未规范化CPU利用率,TotalCPU表示整机未规范化CPU使用率,AppCPU表示进程未规范化CPU使用率。备注:统计结果和Android Studio Profiler一致。具体参考https://bbs.perfdog.qq.com/detail-146.html)
    • CPU Usage (Normalized)(规范化CPU利用率,TotalCPU表示整机规范化CPU使用率,AppCPU表示进程规范化CPU使用率。备注:建议参考规范化CPU利用率,性能参考更精准。具体参考https://bbs.perfdog.qq.com/detail-146.html)
    • CPU Clock(各个CPU核心的未规范化频率和未规范化使用率)
    • Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)
    • Swap Memory (Swap Memory,部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低)
    • Virtual Memory(VSS)
    • Available Memory(整机可用剩余内存)
    • Memory Detail(NativePSS、GFX、GL、Unknown)

      注:在极限测试情况下,例如开启游戏超高帧率,建议不要勾选收集Memory Usage和Memory Detail,因为部分机型会有性能损耗。

    1. Non-fragment:非片段着色器(顶点着色器,细分着色器,计算着色器)耗费的GPU时间占渲染耗费的GPU时间的比例。
    2.  Fragment:片段着色器耗费的GPU时间占渲染耗费的GPU时间的比例。
    • Mali Memory & Bus Bandwidth(仅支持Mali芯片GPU)
    1. L2Load/Store:Load/Store单元读取L2内存的实际带宽 (包括顶点缓存,原子,图像数据)。
    2. L2Texture:Texture单元读取L2内存的实际带宽 (纹理采样)。
    3. Bus Read:定义GPU到DRAM或者GPU外部的系统内存的实际读带宽。
    4. Bus Write:定义GPU到DRAM或者GPU外部的系统内存的实际写带宽。
    • Mali Pixels Info(仅支持Mali芯片GPU)
    1. OverDraw:表示每个像素由多少个片段分层组成,通常用于表示像素被重复绘制的次数。
    2. PixelsThroughput:表示每个被渲染的像素耗费的GPU的时钟的数量。

      注:更多GPU信息说明,请参考:https://bbs.perfdog.qq.com/article-detail.html?id=72

    • Network(Recv/Send,测试目标进程流量)注:USB/WiFi测试模式下均为APP数据
    • CTemp(CPU温度)
    • Battery Power(仅WIFI模式,Current电流、Voltage电压、Power功耗)(注:与仪器测试误差<3%左右)。注1:Sum(Battery)是耗电量。注2:对于已经兼容的双电机型,可参考:https://bbs.perfdog.qq.com/detail-340.html,未兼容设备可以电流x2进行容错。
    • Log日志采集(WIFI模式下,不支持Log收集)

     六、测试步骤

    1.打开该软件并使用数据线连接手机,选择要测试的手机设备

     2.点击右下角“+”,在PerfDog上勾选好性能测试需要的参数

     3.在PerfDog上选好需要进行测试的APP,并在手机上打开该APP

     4.(待程序趋于稳定状态开始录制,一般等待2分钟)在PerfDog上点击开始进行性能录制

     5.结束测试

    可以在保存excel文件的路径里看到测试的数据

    也可以在云端看到自己测试的数据(性能数据同步上传到了PerfDog云端web看板)进入云端:点击右上角“云”icon,登录TAPD,进入云端。

  • 相关阅读:
    jquery index与eq
    尝试一下
    document
    2017-03-28 java script DOM操作
    2017-03-25 CSS 样式
    CSS 样式表分类
    CSS 样式表
    HTML 框架
    表格
    HTML常用标记
  • 原文地址:https://www.cnblogs.com/Testing1105/p/15088843.html
Copyright © 2020-2023  润新知