介绍

安装及运行

重要提示

软件性能数据采集

iOS平台

Android平台

Web性能数据管理

数据陷阱

介绍

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

PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)、Android模拟器、云真机等性能测试。支持APP多进程测试(如Android多子进程及iOS扩展进程APP Extension)。

Windows & Mac OS X平台PerfDog桌面应用程序版本都支持对iOS和Android设备进行测试。PC上PerfDog可多开,单PC可同时测试3台手机。

详情参考:PerfDog使用说明书

安装及运行

  • 登录PerfDog官网https://perfdog.qq.com/,根据自己的PC平台选择想要下载的桌面应用程序
    • Windows平台:解压下载包,双击打开PerfDog.exe桌面应用程序
    • Mac平台:直接运行dmg桌面应用程序
  • USB连接手机,自动检测添加手机到应用列表中
    • iOS:则即插即用,用户无需做任何操作。若PerfDog检测不到连接手机或无法测试,请先安装确保最新itunes是否能连上手机
    • Android:有两种模式,非安装模式和安装模式。(注:请开启手机USB调试模式及允许USB应用安装。)
      • 非安装模式
        • 手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示
      • 安装模式
        • 需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示(允许USB应用安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹 里,手动安装PerfDog.apk即可)。此模式下,在测试过程中,可能由于系统资源紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能。
  • 测试模式
    • USB模式测试:
      • USB连线后,在设备列表选择USB图标设备进行USB模式测试
    • WIFI模式测试(测试功率):
      • 只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线 (USB模式测试功率无任何意义,会充电))(备注:一般公司WIFI可能做了安全策略限制,导致iOS平台在公司 WIFI下无法使用)
  • 选择测试的APP开始测试
    • Android平台,安装模式下,手机屏幕左上角有实时性能数据显示(Android手机请打开PerfDog悬浮窗管理权限,否则手机上不会显示性能参数)

重要提示

  • Windows & Mac OS X平台PerfDog客户端版本都支持用户对iOS和Android设备进行测试。PC上PerfDog可多开,单PC可同时测试多台手机。
  • PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)及Android模拟器性能测试。
  • 支持APP多进程测试,如Android多子进程及iOS扩展进程APP Extension。
  • iOS平台:iPhone小圆点/辅助触控(AssistiveTouch)及iPhone x刘海手机的小白条/引导式访问(Guided Access)影响 PerfDog(性能狗)采集数据准确性,请关闭。
    • 注:应用、游戏中关闭小白条/引导式访问(Guided Access)方法:
      • 点击【设置】-【通用】-【辅助功能】-【引导式访问】
      • 开启【引导式访问】,进入游戏后,连按三下电源键,可彻底隐藏home键。
      • 若想恢复home键,再按三下电源键即可恢复。
  • 截屏记录、Log日志收集会影响性能(整体FPS影响<=1。小米5:CPU=1%左右。iPhone7P:CPU<2%),若无需请不要开启截屏或Log日志收集。
  • 提示网络连接失败问题 可能是PC网络设置了网络代理或启用了抓包软件,请关闭。
  • PerfDog无法检测到手机
    • Android平台:
      • 请开启Debug调试模式(华为设备,需要先开启开发者选项中的 "仅充电"模式下允许ADB调试选项 ,再开启usb调试)。
      • 以上还不行,请重新打开PerfDog软件及重启手机。
      • 以上还不行,请确认PC上ADB可能被独占(自动化测试框架、Android Studio工具等),请关闭工具及ADB.exe。
      • 以上还不行,请用手机管家或手机助手检测下。
    • iOS平台:
      • 需要手机信任。
      • 以上还不行,请用itunes软件检测下是否可以连接检测到手机。
      • 以上还不行,请重启手机及换USB线(可能USB线老化)。
      • 以上还不行,请重启手机。
  • 如何收集更多性能参数?
    • UI右下方+号按钮,自定义性能参数。勾选表示收集,选中对应框表示显示。
  • 为什么我看不到GPU信息?
    • Android平台,目前只支持部分高通GPU手机,后期陆续补全。
  • 为什么手机无法测试电量功率?
    • 只能在WIFI模式下测试电量,USB模式有充电测试无意义。iOS平台下,有无线充电功能手机暂时不支持。
  • 为什么无法截图?
    • 只在USB模式可使用。
  • 为什么手机上看不到性能信息?
    • 请打开手机悬浮窗口显示权限。
  • Android云真机测试流程
    • 手机云真机平台ADB远程调试->Copy远程调试ADB命令信息->本地cmd命令窗口输入刚Copy的ADB命令->回到手机云真机平台确认授权->PerfDog选择云真机测试。
  • Android模拟器测试和Android云真机测试流程类似。
  • Android手机WIFI模式连接失败?
    • 部分华为、OPPO手机请在仅充电模式下,进行WIFI模式连接。
  • iOS手机内存采集一直为0,请重启手机,Energy采集一直是0,请重启测试的APP应用或者游戏。
  • Mac11.15系统,需要做安全设置,否则会误报PerfDog为恶意软件,具体设置方法为:打开系统设置->安全性与隐私->通用->点击仍然打开。
  • 无法删除PerfDog文件夹,请任务管理器关闭Adb.exe进程。
  • 软件性能数据采集

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

iOS平台

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

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
  • Avg(FPS):平均帧率(一段时间内平均FPS)
  • Var(FPS):帧率方差(一段时间内FPS方差)
  • Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Std(FPS):帧率标准差(一段时间内FPS标准差)
  • Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)

参考:https://perfdog.qq.com/article_detail?id=10162&issue_id=0&plat_id=1扩展:APP&游戏需要关注Jank卡顿及卡顿率吗?

  • Jank计算方法:
    • 同时满足以下两条件,则认为是一次卡顿
      • Jank当前帧耗时>前三帧平均耗时2倍
      • 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)
    • 同时满足两条件,则认为是一次严重卡顿BigJank
      • 当前帧耗时>前三帧平均耗时2倍
      • 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)
  • BigJank:1s内严重卡顿次数
  • Jank(/10min):平均每10分钟卡顿次数
  • BigJank(/10min):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持)
  • Avg(FTime):平均帧耗时
  • Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage:传统CPU利用率,也叫未规范化CPU利用率。为CPU执行时间/CPU总时间。(Total整机/App进程)一般Android Studuio、adb、Xcode等获取的CPU利用率都是未规范化CPU利用率。 iOS下,该值与Xcode使用率/核心数一致
  • CPU Usage(Normalized):规范化CPU利用率。考虑CPU频率变化。为 (CPU执行时间/CPU总时间) * (当前时刻所有CPU频率之和/所有CPU频率最大值之和)
  • TotalCPU:表示整机CPU使用率
  • AppCPU:进程CPU使用率 注:建议低于60%,高于90%说明有严重的CPU性能问题
    • 由于移动设备CPU频率时刻变化,用传统CPU利用率计算方法,假定在低频率时刻计算出CPU利用率=30%,和在CPU高频时刻计算出CPU利用率=30%。
    • 同样都是30%但性能消耗是完全不样的,明显高频消耗更高。传统CPU利用率已无法真实反映性能消耗。 Android下要用规范化CPU利用率作为衡量性能指标;iOS平台,频率变化一般是在电池电量极低,锁屏等极端情况下才出现,所以规范化CPU利用率没有很大意义。
  • 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)
  • Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
  • Tilter:Tilter利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因) Device:设备利用率(整体GPU利用率)
  • Network(Recv/Send,测试目标进程流量,和Xcode结果一致)
  • Battery Power(整机实时Current电流、Voltage电压、Power功率)(注:和Xcode Instrument结果一致)
  • Energy Usage(即为Xcode Energy Impact。监控应用使用的能耗情况(包括CPU、GPU、NetWork、Location、Display (iPhone X only)、Overhead)。(注:和Xcode Energy Impact结果一致。有线模式下测试。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(系统调试日志信息)

Android平台

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
  • Avg(FPS):平均帧率(一段时间内平均FPS)
  • Var(FPS):帧率方差(一段时间内FPS方差)
  • Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。解释说明如iOS平台说明)
  • BigJank:1s内严重卡顿次数
  • Jank(/10分钟):平均每10分钟卡顿次数
  • BigJank(/10分钟):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时)
  • Avg(FTime):平均帧耗时
  • 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(系统调试日志信息)
  • 重点说明下Android平台下,LMK和Swap这两个参数意义:
    • LMK:Android平台下OOM与游戏进程内存大小无关,主要是系统剩余物理内存有关。系统剩余物理内存小于LMK,则会引起OOM
    • Swap: 系统进程用到zram/vnswap内存压缩技术。不同手机系统启用Swap memeroy大小不同。
    • 扩展:
      • Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进程都有自己独立的内存地址空间,随着应用打开数量的增多,系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了lmk,全称为LowMemoryKiller(低内存杀手),lmk来决定什么时间杀掉什么进程。
      • Android基于Linux的系统,其实Linux有类似的内存管理策略——OOM killer,全称(Out Of Memory Killer), OOM的策略更多的是用于分配内存不足时触发,将得分最高的进程杀掉。而lmk则会每隔一段时间检查一次,当系统剩余可用内存较低时,便会触发杀进程的策略,根据不同的剩余内存档位来来选择杀不同优先级的进程,而不是等到OOM时再来杀进程,真正OOM时系统可能已经处于异常状态,系统更希望的是未雨绸缪,在内存很低时来杀掉一些优先级较低的进程来保障后续操作的顺利进行。

Web性能数据管理

  • 账户信息管理
  • 性能数据管理、图表展示、编辑、版本对比
  • 性能测试任务管理

数据陷阱

你在看数据表的时候发现不了问题,但是你打开走势图就很明显可以发现问题一个比较正常的数据:从入场开始比较正常的一个数据

 

 

内存泄露:数据存在内存泄露。(内存在一直上升,可能会导致系统崩溃)

 

 

当手机发热严重时,cpu会出现降频,帧率从60降到29,具体数据见perfdog链接,如下: