Unity UPR (Unity Performance Reporting)使用记录 (1)

您所在的位置:网站首页 upr游戏王 Unity UPR (Unity Performance Reporting)使用记录 (1)

Unity UPR (Unity Performance Reporting)使用记录 (1)

2024-07-13 17:09| 来源: 网络整理| 查看: 265

 

UPR使用手册

1. 使用准备

1.1 访问UPR首页 https://upr.unity.cn

注册或登陆Unity账号,点击「现在开始使用」按钮

1.2 下载 UPR App https://upr.unity.cn/download

2. 创建UPR项目

2.1 点击「创建」,新建UPR项目 https://upr.unity.cn/projects

2.2 填写项目信息

「项目包名」必须和手机中待测项目的APK包名一致。

「Unity版本号」必须和手机中待测项目所使用的Unity版本保持一致。

2.3 在Unity ID站点创建组织 https://id.unity.com/en/organizations

当启用一个Unity帐号时,Unity会自动在帐号下面创建了一个默认“组织”。默认组织的名称和用户名一样。

3. 在UPR项目中新建测试

3.1 在UPR中查看「我的项目」 https://upr.unity.cn/projects

3.2 修改项目基本信息

「项目包名」必须和手机中待测项目的APK包名一致。

「Unity版本号」必须和手机中待测项目所使用的Unity版本保持一致。

 

3.3 点击「新建测试」,创建测试

 

「项目包名」必须和手机中待测项目的APK包名一致。

使用UPR App的用户请确保填写正确的「项目包名」。使用UPR Desktop的用户,无须填写「项目包名」。

「Unity版本号」必须和手机中待测项目所使用的Unity版本保持一致。

「游戏截图」可以控制测试过程中是否进行截图,并设置截图频率。

「DeepLua」可以控制是否将收集到的Lua性能数据发送至UPR Server。

「DeepMono」可以控制是否将收集到的Mono性能数据发送至UPR Server。

「DeepMono」与「DeepLua」仅限与0.3.0及以上的UPR Package配合使用。

「UPR App运行报告」可以记录UPR App运行时自身的系统开销,便于更准确的分析测试游戏的性能表现。

获得测试二维码

 

3.4 打开UPR App扫描二维码

请确保测UPR App开启了「悬浮框权限」。

请确保手机中待测项目的APK是开发版本「Development Build」。

测试PC端游戏,请使用UPR Desktop。更多详细信息,可以参考:相关文档 > UPR Desktop。

 

请注意,测试Unity版本2017.3之后的游戏时,请确认在点击「启动游戏」按钮之前,游戏不处于运行状态(包括后台)。

 

3.5 测试游戏

点击 「 ▷ 」按钮开始测试。点击「 + 」按钮记录场景标签。点击「 📷 」按钮记录内存快照。点击「 ▢ 」按钮停止测试。

UPR Desktop-----https://blog.csdn.net/game_jqd/article/details/108757666---------

UPR桌面端解决方案,减轻测试设备性能压力,使测试过程更加顺畅。提供CLI用于自动化测试系统对接。

下载 UPR Windows

下载 UPR Mac

注意事项 UPR Windows/UPR Mac 可以配合 UPR Package 使用,获取游戏截图、收集手机内存信息,以及Lua性能分析等基本数据。为解决不同网络环境下设备之间的测试,和避免网络不稳定的数据传输问题等问题,推荐使用ADB进行连接。新增内存快照(Memory Snapshot)功能,便于分析内存之间的调用关系,查看内存分配详情(目前仅支持18.3及以上版本)。新增RenderDoc功能,便于GPU的分析与性能优化。 Win UPR操作手册

*以下使用安卓端游戏为例演示测试流程,PC端和iOS端游戏操作流程类似,在此不作过多赘述。

*Windows端游戏测试流程,请详见步骤10。

1. 下载 UPR Windows程序。

2. 打开 UPRDesktop.exe 程序。

 

3. 在UPR官网新建测试, 并拷贝session id。

 

项目包名必须以和APK的包名一致。

Unity版本号必须和使用的Unity版本保持一致。

 

4. 在UPR Windows程序中填入session id,按下回车键,加载测试的配置信息。

 

5. 在「Select IP or Input IP」下拉列表中选择待测设备,或者输入待测设备的IP地址。

查询待测设备的IP地址,并在下拉框中输入该地址。

确保待测试手机和UPR Windows在同一个网络环境下。

 

UPR Windows可以自动识别附近正在运行Unity Debug 版本游戏的设备ip和正在使用ADB连接的设备,可以直接在「Select IP or Input IP」下拉菜单中进行选择。

 

6. 点击「Settings」,设置文件缓存阈值(optional)。

 

当网络传输速率差时,UPR Windows会将超过缓存阈值的记录写入文件。 当正常的记录发送完毕后,UPR Windows将从文件中读取记录,并继续发送。 当勾选remove dump message选项时,UPR Windows会在记录发送后,将本地文件中的记录删除。 文件缓存阈值默认设置为10000,remove dump message默认为勾选状态。

 

7. 启动手机待测试游戏(需为Development Build打包的Unity游戏)。

8. 点击「Start Test」, 连接UPR服务器,并开始测试。

 

UPR Windows程序也可以以命令行的方式打开 。

可以通过命令UPRDesktop.exe -h获取可以使用的命令行提示。

 

UPRDesktop.exe -p -s                          

为设备的IP地址,请确保测试设备和UPR Windows在一个局域网内,IP地址获取方法可详见步骤5。 使用「ADB连接」,无需保证测试设备和UPR Windows在同一局域网内,详见步骤9。 为在UPR网站上创建的测试报告的session id,session id地址获取方法可详见步骤3。

 

9. 使用「ADB」连接, 进行测试。

使用ADB连接进行测试时,需要将待测设备解锁,使用数据线连接,并打开设备中的待测游戏,点击「Start Test」, 链接UPR服务器,并开始测试。

ADB模式也可以以命令行的方式打开。

如果使用数据线连接进行测试时,需要输入测试的游戏包名。

UPRDesktop.exe -p -s -n                           

为待测试的游戏包名。

使用数据线连接进行测试时,如果输入测试的游戏包名,UPR Windows可以自动根据项目包名开启手机内的待测项目,并开始游戏。

使用ADB连接可以将处在不同网络环境下的安卓设备和电脑相连接进行测试,并改善数据传输速率,提高传输稳定性。

10. Windows端游戏测试。

在UPR官网新建测试, 并拷贝session id。

在UPR Windows程序中填入session id,加载测试的配置信息。

启动build成功Windows端游戏(需为Development Build打包的Unity游戏)。

 

在「Select IP or Input IP」下拉列表中选择待测设备,或者输入待测设备的IP地址。

Win UPR可以自动识别同一台正在运行Unity Windows Debug 版本游戏设备,可以在下拉框中进行选择。

 

点击「Start Test」, 连接UPR服务器,并开始测试。

11. 测试过程中,可以记录对象快照/内存快照/Tag。

点击「Add Tag」记录标签。

 

点击「Capture Objects」记录对象快照。

 

点击「Capture Memory」记录内存快照。

 

在命令行模式下,也可以使用命令行记录对象快照/内存快照/Tag。

 

12. 测试游戏,待测试结束,点击「Stop」按钮。

 

在命令行模式下,也可以使用命令行关闭UPR Windows。

该命令会将之前启动的UPRDesktop进程一并关闭。

UPRDesktop.exe --stop                   

13. 测试结束,可以到UPR官网查看测试报告。

14. 测试在Build Settings里面勾选过「Autoconnect Profiler」选项的游戏时,请先启动游戏后再点击「Load Configuration」按钮。

15. UPR Desktop支持全平台游戏测试,包括但不限于Android,iOS,Windows。上述步骤为Android游戏的测试方法,如果想进行其他平台的游戏测试,UPR Desktop的使用方法不变,启动相应平台下的游戏程序即可。

MacUPR操作手册

1. 下载 UPR Mac 程序。

2. 下载并安装 .net 3.0 core程序。

3. 点击「UnityPerfProfiler」程序,获取可以使用的命令行提示。

 

4. 打开UPR Mac程序。

在启动MacUPR前,请确保被测试的游戏已经启动

第一次使用UPR Mac时,需要给UnityPerfProfiler程序增加可执行权限。

sudo chmod +x UnityPerfProfiler                                              

使用命令行的方式打开UPR Mac。

./UnityPerfProfiler -p -s                        

当使用数据线连接进行测试时,需要输入待测要应用包名。

./UnityPerfProfiler -p -s   -n                      

为设备的IP地址,请确保测试设备和UPR Mac在一个局域网内。

IP地址获取方法可详见WinUpr操作手册的步骤5。

----------------https://blog.csdn.net/game_jqd/article/details/108757666------------

为在UPR网站上创建的测试报告的session id。

session id地址获取方法可详见WinUpr操作手册的步骤3。

package name 为待测试的应用包名

 

5. 在测试过程中,可以通过命令行记录对象快照。

./UnityPerfProfiler --capture                                             

 

6. 待测试结束,使用命令行结束测试。

./UnityPerfProfiler --stop                                            

 

7. 测试结束,可以到UPR官网查看测试报告。

使用ADB方式连接

1. 准备

确认PC安装过ADB Tools,将手机通过USB连接线连接,打开开发者模式并且启动USB调试。

1. 执行 adb devices指令

查看移动设备是否连接成功, 如果出现如下信息则说明设备连接成功。

List of devices attached 44dd1836        device

2. 确认端口55000 56000 23333未被占用

请确保移动设备和电脑上的 55000 56000 23333端口都没被占用。 可以通过在命令提示符或终端中执行netstat -ano | findstr "来查看端口是否被占用

3. 释放被占用端口

如若端口已经被占用的情况下,由上一条指令可以看到占用端口的应用PID值,通过如下指令将其终止即可taskkill /pid

4. 端口映射

adb forward tcp:55000 localabstract:Unity- adb forward tcp:56000 tcp:56000 adb forward tcp:23333 tcp:23333

样例

C:\Users\test\adb forward tcp:55000 localabstract:Unity-Unity-jp.co.unity3d.UnityChanCRS 55000   C:\Users\test\adb forward tcp:56000 tcp:56000 56000   C:\Users\test\adb forward tcp:23333 tcp:23333 23333

5. 检查端口映射

执行成功后。可以通过指令adb forward --list 查看是否3个端口都映射成功

6. Win UPR指定IP

在使用Win UPR测试过程中,请在Choose a player处选择Selected IP, 并在弹出框内输入127.0.0.1

7. Mac UPR指定IP

./UnityPerfProfiler -p 127.0.0.1 -s 12345678-1234-1234-123456789123

 

UPR Package 使用手册

UPR Package 是一个搭配 UPR Desktop使用的Unity软件包,功能包括:

提供屏幕截图功能采集设备硬件信息采集场景加载数据采集Lua Profiling数据(Powered by Miku-LuaProfiler,开源协议符合Apache License 2.0,      UPR Package修改部分如下:Lua数据收集方式及接收方式,程序模块的namespace。)采集AssetBundle数据(开发中)采集内存驻留数据 (开发中)

下载 UPR Package

使用手册

1. 下载UPR Package 和UPR Windows。

UPR Package 需要与最新版本的 UPR Windows/Mac(V0.9.4) 配合使用,进行游戏测试。

UPR Package 仅支持 Unity 2017.1 以上版本的游戏测试(基于安卓平台的项目仅支持2018.2及以上版本)。

2. 将 UPR Package 导入待测试的Unity工程中。

将下载好的 UPRTools.unitypackage 导入待测试的Unity工程。

可以将 UPRTools.unitypackage 直接拖入对应的Unity工程的 Project 视图中。

也可以在 Unity Editor 中手动导入。 在 「Assets -> Import Package -> Custom Package」 ,并选取 UPRTools.unitypackage 所在路径进行导入。

选择 UPRTools.unitypackage 内的包,并导入待测试的Unity工程。

成功导入 UPRTools.unitypackage 后,会自动弹出 Import 界面。点击「Import」按钮,可将所勾选的包导入进Unity工程中。

包导入成功后,可以 Project 视图中的 Assets 中查看到详细信息。

 

3. 在UPRTools中选择所需要的功能。

点击「Tool -> UPRTools」,会弹出 UPRTools 界面。

 

通过勾选LoadScene选项,可以将「场景切换」信息获取的功能注入到项目中。

当前内存信息的收集仅支持 Android 设备。当待测试的Unity项目在其他平台上运行应用时,该功能会在运行时自动关闭。

通过勾选Enable Lua选项,可以将「Lua Profiling」信息获取的功能注入到项目中。

在建立测试的时候,通过是否开启DeepLua和DeepMono可以控制是否将收集到的相关性能数据发送至UPR Server。

 

请在build项目之前,确保在UPRTools中已勾选所需要的功能。如需切换平台,请重新打开UPRTools进行再次勾选。

UPR Package注入成功后,会在Console里显示Success的Log。

4. 使用 UPR Desktop 测试游戏,并在UPR官网查看测试报告。

UPR Desktop 的使用方法详见相关文档。

运行时 Android 设备的内存数据,可以在 UPR 报告中的「硬件->设备内存」中获得详细信息。

 

Lua性能分析(iOS暂不支持),可以在UPR 报告中的「Lua>Lua性能分析」中查看。

Airtest UPR App集成

Airtest是一个跨平台的UI自动化测试框架。

访问AirTest首页 http://airtest.netease.com/

注意事项

具备 Airtest 基础知识。仅支持0.6.1及以上版本UPR APP。脚本测试不支持开启游戏截图功能。Airtest测试脚本图片识别存在失败可能性,可参考Aitest文档进行图像识别阈值调整。

示例程序

下载官方 示例程序官方示例脚本基于Unity官方提供的Example Project游戏, 下载示例游戏示例游戏包名 com.unity.sample201803, Unity版本2018.3  

集成手册

安装0.6.1及以上版本UPR App, 并配置正确的权限(悬浮窗权限)。下载示例程序将示例中 upr_lib.py / start.png / stop.png / tag.png / snapshot.png 拷贝到待测试项目中。在待测试项目导入文件位置导入upr_lib ( import upr_lib )。在UPR官网新建测试,并将session id拷出。在测试脚本待测试起始位置调用初始化方法 upr_lib.init_upr(’#sessionId#’)。在测试脚本待测试结束位置调用结束方法 upr_lib.stop_test( )。执行测试,测试完成并结束后,去UPR官网的测试列表中查看报告。

UPR_LIB方法

1. 初始化测试

upr_lib.init_upr('#sessionId#')                                                                                                          

一次测试流程仅需调用一次。#sessionId#填入在UPR网站上创建的测试sessionId。

2. 开始测试

upr_lib.start_test()                                                                                                                     

收集profiling数据并上传给服务器, 一次测试仅需调用一次。

3. 测试过程中添加tag

upr_lib.tag()                                                                                                                            

测试过程中增加tag, 可以调用多次。

4. 测试过程中添加对象快照

upr_lib.memory_snapshot()                                                                                                                 

收集当前场景对象快照, 可以调用多次。

5. 结束测试

upr_lib.stop_test()                                                                                                                      

一次测试仅需调用一次。

Airtest UPR Desktop集成

访问AirTest文档 https://airtest.readthedocs.io/zh_CN/latest/

访问POCO文档 https://poco.readthedocs.io/zh_CN/latest/

注意事项 具备 Airtest 基础知识。仅支持 2.2.2.1 及以上版本 UPR Desktop.Airtest测试脚本图片识别存在失败可能性,可参考Aitest文档进行图像识别阈值调整。 示例程序

示例1:POCO

下载官方 POCO Project下载官方 POCO demo apk游戏包名: com.upr.poco, Unity 版本: 2018.4

示例2:Aritest UI

下载官方 UI Project下载官方 UI demo apk游戏包名: com.upr.airtest, Unity 版本: 2018.4 集成手册 安装2.2.2.1及以上版本的 UPR Desktop.下载示例程序将示例中文件拷贝到待测项目中.修改UPRCommand.py文件的参数 adbpath 该变量指向airtest自带的adb路径sessionId 在UPR网站上创建的sessionIdpackagename 即将用来测试的apk包名execcmd 指向UPR Desktop可执行程序 UPR_LIB方法

1. 开始测试

upr_lib.start(sessionId, packagename, adbpath, execcmd)                                                                                                       

收集profiling数据并上传给服务器, 一次测试仅需调用一次。 如果使用的是Poco测试,需要在游戏启动后用如下语句初始化poco

poco = UnityPoco()

2. 测试过程中添加 object snapshot

upr_lib.cap_object(execcmd)                                                                                                                        

测试过程中添加object snapshot, 可以调用多次。

3. 测试过程中添加 memory snapshot

upr_lib.cap_memory(execcmd)                                                                                                                        

测试过程中添加 memory snapshot, 可以调用多次。

3. 测试过程中添加 tag

upr_lib.cap_tag(execcmd)                                                                                                                       

测试过程中添加 tag, 可以调用多次。

5. 结束测试

upr_lib.stop(execcmd)                                                                                                         

一次测试仅需调用一次。

 

UPR Open API

申请

请前往「App Key管理」页面申请,审核通过后将获得「App Id」和「App Secret」用以调用UPR Open API。

https://upr.unity.cn/open-api

API文档

https://upr.unity.cn/api/swagger/index.html

样例代码 (Python)

# -*-coding: utf-8-*-

import requests

 

API_ENDPOINT = 'https://upr.unity.cn/open-api'

 

# https://upr.unity.cn/projects

PROJECT_ID = ''  # 请填写 ProjectId

 

# 前往 https://upr.unity.cn/open-api 申请UPR Open App

AUTH = (

    '',  # 请填写项目的 App ID

    ''  # 请填写项目的 App Secret

)

------https://blog.csdn.net/game_jqd/article/details/108757666-------

def main():

    # 创建测试session

    session_request = {

        "projectId": PROJECT_ID,

        "sessionName": "battle test",    # 测试名称

        "gameName": "demo game",         # 游戏名称

        "gameVersion": "0.0.1",          # 游戏版本号

        "packageName": "com.demo.test",  # 游戏包名

        "unityVersion": "2018.4",        # Unity版本号

 

        "tags": [

            "tag1", "tag2", "tag3"       # 测试标签(可利用测试标签定位测试区间)

        ],

 

        "screenshotEnabled": True,       # 屏幕截图是否开启

        "screenshotFrequency": 4,        # 屏幕截图频率 (单位秒)

 

        "frameLockEnabled": True,        # 游戏是否有锁帧

        "frameLockFrequency": 60,        # 游戏锁定帧率

        "enableDeepLua": False,          # 是否开启Lua Profiling代码 (需要搭配UPR Package一起使用)

        "enableDeepMono": False,         # 是否开启Mono C#代码Profiling (需要搭配UPR Package一起使用)

        "monitor": False,                # 是否需要手机UPR App性能数据 (对UPR Desktop无效)

        "shareReport": True,             # 是否允许Project外的人员通过sessionId直接访问报表

        "gpuprofileEnabled": True,       # 是否开启GPU profiling

    }

 

    resp = requests.post('%s/sessions' % API_ENDPOINT, auth=AUTH, json=session_request)

    print(resp.text)

 

    '''

    [Response]

    {

      "SessionId": "",

      "ProjectId": "",

      "OrganizationId": "",

      "SessionName": "battle test",

      "GameName": "demo game",

      "GameVersion": "",

      "PackageName": "com.demo.test",

      "UnityVersion": "2018.4",

      "Tags": [

        "tag1",

        "tag2",

        "tag3"

      ],

      "ScreenshotEnabled": true,

      "ScreenshotFrequency": 4,

      "EnableDeepMono": false,

      "EnableDeepLua": false,

      "Monitor": false,

      "GPUProfileEnabled": true,

      "GPUProfileFrequency": 1000,

      "FrameLockEnabled": false,

      "FrameLockFrequency": 0,

      "ShareReport": true

    }

    '''

 

    # 更多API请详见 https://upr.unity.cn/api/swagger/index.html

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3