首页 > 其他分享 >游戏测试·工作中性能测试总结

游戏测试·工作中性能测试总结

时间:2024-12-22 16:27:06浏览次数:7  
标签:总结 gfx 场景 游戏 测试 性能 测试用例 FPS

目录

一、前言

二、测试基础

三.卡顿问题定位

四.性能问题定位流程

五.常用优化方法

六.兼容性问题和预想结果

七.内存详细数据类型

八.3D美术优化

渲染技术汇总:

https://blog.csdn.net/poem_qianmo/article/details/78309500


一、前言

        性能优化是游戏开发绕不开的重要环节。可以提升用户体验、降低设备能耗、扩大受众市场,将更好的游戏画面展示给玩家。

        本篇文章是对工作中常用的性能测试知识点做个总结。

二、测试基础

1.用例设计

理解需求后进行用例设计,避免漏测至线上

以下介绍常用的测试用例设计方法,万变不离其宗,在设计用例前可以通过和几个方法寻找思路,避免漏测

这些方法就是为了在设计用例的时候,用最简单的方法覆盖最全的测试内容

测试方法

原理

应用

使用场景举例

等价类划分

将输入数据划分为有效和无效的等价类,每个等价类的数据应当被软件以相同的方式处理

为每个等价类选择至少一个代表性的值作为测试用例,以减少测试用例的总数且尽可能全面地覆盖所有可能情况。

活动关卡数量较多时,可以根据角色、场景、关卡类型等特点进行拆分,大致相同的关卡可以选择性测试

边界值分析

错误往往发生在输入或输出范围的边界上。

不仅测试每个等价类的代表值,也要测试边界值。

测试关卡时,可以测试场景最复杂、怪物数量最多、女武神组合最复杂时的情况

因果图法

通过分析输入(原因)和输出(效果)之间的逻辑关系,用图的方式表示并转换为决策表,从而生成测试用例。

适用于逻辑条件复杂的场景,如多个条件组合导致不同的结果。

例如测试渲染feature时,将不同的画质选项分别组合成,可能有异常效果

判定表

对于每个业务逻辑,列出所有可能的条件组合及其对应的动作,将复杂的业务规则结构化表示。

有效处理那些具有多个条件和行动的复杂决策逻辑。

枚举所有可能出现的结果,例如4个角色,4个关卡,可能有16种角色进入方式

状态转换测试

基于系统的状态及状态间的转变来设计测试用例。

适用于系统的状态较多,且状态间转换复杂的情况。

例如第一部舰桥和零号世界舰桥时进入零号世界时的表现,第一部舰桥进入耗时会增加

使用(用例)场景测试

根据系统的使用场景来设计测试用例。

模拟实际软件的使用方式,适用于冒烟测试、验收测试等。

平常测试时用压缩包来解压PC包,模拟线上情况应该用启动器下载PC包

错误推测

基于经验来猜测软件中可能存在的错误,设计测试用例。

可以补充其他方法遗漏的测试用例,特别适用于经验丰富的测试人员。

当发现线上反馈什么资源不显示时,先尝试切到流畅画质或使用低端机试一下

探索式测试

在没有或者只有极少量测试文档的支持下,依靠测试者的直觉和经验进行测试。

通常用于快速发现问题的情况,如迭代开发初期或新功能的初步测试。

冒烟一个demo的时候,可以利用经验,快速的将外围、玩法冒烟一遍,同时可以判断此需求后续的性能风险等级

组合测试

通过系统地组合输入参数的不同取值,用于发现不同输入组合下可能导致的问题。

适用于输入参数较多,测试全排列不现实的场景。

测试聊天框时,可以尝试sql注入,富文本等输入方式,查看是否有问题

配对测试

基于绝大多数软件缺陷都是由单个或者一对参数引起的假设,测试所有可能的唯一参数对。

一种有效率的组合测试手法,可以大幅减少测试的总数和成本。

测试AA时,可以开启TAA测试一遍不同画质的耦合情况,再开启FXAA测试一遍,其实就是单元测试搭配耦合测试的一种

正交阵列测试

使用正交阵列定义测试用例,以便在最少的测试用例中测试到最多的参数组合。

适用于需要测试多个变量的场景,尤其是变量间有交互时。

例如某活动场景1+场景2,角色A+角色B,可以测试场景1+角色A,场景2+角色B,在比较忙的时候可以这样测试减少压力,但一定要做到心中有数

2.性能指标含义

FPS (Frames Per Second)

定义: FPS 表示屏幕每秒能够刷新的帧数。这是衡量视频游戏或图形应用程序平滑程度的重要指标。

影响用户体验: 较高的 FPS 意味着更加流畅的画面和更好的用户体验。对于大多数游戏,60FPS 被认为是良好的用户体验的基线,手游中则至少要在22帧以上,而对于专业级的玩家,他们可能更倾向于更高的帧率,比如120Hz或144Hz及以上。

计算方式:游戏帧率从计算方式上来看分为逻辑 FPS 和硬件刷新 FPS,一般情况下游戏引擎工具统计的帧率都是逻辑帧率,即把每次调用底层 SwapBuffer 之间的间隔当做每帧耗时,然后根据耗时计算出逻辑 FPS。逻辑 FPS 实际上和玩家看到的画面刷新帧率会有区别,一般移动设备的屏幕刷新频率是 60HZ,即每秒刷新 60 次,VSync(垂直同步) 时间为 16.6ms,真实的画面刷新耗时是 16.6ms 的倍数。

Frametime

定义: Frametime 是渲染一帧图像所需的时间,通常以毫秒为单位。它与 FPS 有直接的关系,即 Frametime 为1秒钟的时间除以 FPS 值。

影响用户体验: 低而且稳定的 frametime 表示图像流畅无延迟。如果 frametime 高或者波动大,即使 FPS 总体平均值较高,玩家也可能感受到卡顿和不流畅的画面。

Jank

定义: Jank 指的是由于渲染延迟或者性能不佳导致的屏幕卡顿或者跳帧现象。

影响用户体验: Jank 会严重影响用户体验,因为它破坏了画面流畅性,让动画或移动显得不自然、突兀。

Draw Call

定义: Draw Call 是指 CPU告诉GPU绘制图形对象的指令。每次 draw call 可以包括数万至数百万的图形多边形(通常是三角形)。

影响性能: Draw Calls 的数量可以显著影响性能,因为每个 draw call 都需要处理时间。过多的 draw calls 会减慢渲染过程,降低 FPS,建议drawcall峰值不要超过500。

Tri (Triangles)

定义: 在3D图形中,"Tri" 指的是三角形,它是构建3D模型和场景的基本单位。GPU的工作是根据这些三角形来渲染图像。

影响性能: 三角形的数量可以直接影响渲染性能。更多的三角形意味着复杂的模型和场景,但也增加了GPU的工作负担。建议Tri峰值不要超过50万。

Memory (RAM/VRAM)

定义: Memory指的是计算机RAM(随机存取存储器)或是专门为GPU设计的VRAM(视频随机存取存储器)。它们被用来临时存储数据,如纹理、顶点数据等。

影响性能: 足够的内存可以确保快速存取和处理大量数据。内存不足可能导致性能瓶颈或闪退,因为系统或GPU必须使用更慢的存储设备,如硬盘或固态硬盘。

Transparent Screen Ratio

定义: 半透明屏占比

影响性能: 直接影响FPS和功耗,轻则导致发热过快,重则导致明显的掉帧,建议峰值不要超过标准值:8层

3.基础指标

以某二次元RPG游戏为例,iOS中档性能标准。

fps

28

frame_time

40 (ms)

jank

3

jank_time

416 (ms)

mem_app

1650 (MB)

mem_mono_heap

160 (MB)

mem_dynamic_vbo

20 (MB)

gfx_dc

500

gfx_tri

500000

gfx_batches

500

gfx_transparent_screen_ratio

800 (%)

gfx_light_screen_ratio

200 (%)

gfx_light_num

15

gfx_water_screen_ratio

100 (%)

gfx_effect_screen_ratio

800 (%)

gfx_volumetric_screen_ratio

100 (%)

budget_npc

15

budget_gadget

40

budget_monster

18

budget_monster_battle

18

count_screen_effect

2

count_grab

1

count_all_preload_monsters

25

功耗

total

1150 (mA)

三.卡顿问题定位

        如果遇到突然卡顿,多半是cpu问题,可以使用profiler查看详细信息;如果是持续低帧,多半是gpu问题,可以使用xcode查看渲染耗时。

1. 性能截帧测试工具集合

工具

特点

描述

perfdog

unity profiler

简单、易用、功能强大、推荐⭐

定位性能与渲染bug必备,第一步用它

UWA

需要接入sdk

功能强大,需要接入sdk,暂时没用上

SnapDragon Profiler

高通专用

高通设备推荐使用,可看各线程状态

Xcode

iOS专用,功能强大⭐

iOS调试必备,unity profiler不行的话用它

RenderDoc

安卓与pc,截帧⭐

PC与安卓调试必备,unity profiler不行的话用它

systrace

查看线程状态

使用较少

Android GPU inspector

跟踪CPU和GPU的事件,截帧

目前支持的设备较少

perfetto

性能追踪、系统分析

Graphics API Debugger

对于高通的机器支持较好,可视化也较为方便。

Mali Graphics Debugger

需要机器得到Root才可以进行profiler

Android Studio

查看CPU,内存指标较为方便

Trepn Profiler

高通推出的 Android 应用性能和功耗测试工具

Battery Historian

Google 官方推出的 Android 应用电量分析工具

PowerTutor

密歇根大学推出的 Android 设备功耗分析工具

Monsoon Power Monitor

硬件功耗测试仪器

2.包含数据

标签:总结,gfx,场景,游戏,测试,性能,测试用例,FPS
From: https://blog.csdn.net/Switty_bo/article/details/144604695

相关文章

  • 55. 跳跃游戏
    题目链接解题思路:初始能够到达最远的位置max_index是nums[0],然后我们就依次遍历i<=nums[0],然后途中不断更新max_index,如果更新到某一时刻,到达了最后一个下标,返回true,如果「走不动」了,那么就返回false代码classSolution:defcanJump(self,nums:List[int])->bo......
  • 2024-2025-1学号20241309《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第十三周作业这个作业的目标自学教材《C语言程序设计》第12章并完成云班课测试作业正文2024-2025-1学号20241309《计算机基础与程序设计》第......
  • 2024-2025-1 20241319 《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标《C语言程序设计》第12章作业正文https://www.cnblogs.com/wchxx/p/18622144**教材学习内容总结结......
  • 2024-2025-1 20241318M《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标<自学教材《C语言程序设计》第12章并完成云班课测试>||作业正文|https://i.cnbl......
  • 第十三周学习总结
    学期2024-2025-学号20241414《计算机基础与程序设计》第十三周学习总结作业信息这个作业属于哪个课程<班级的链接>2024-2025-1-计算机基础与程序设计这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第一周作业这个作业的目标文件操作作......
  • 2024-2025-1 20241301 《计算机基础与程序设计》第十三周学习总结
    |这个作业属于哪个课程|2024-2025-1-计算机基础与程序设计||这个作业要求在哪里|2024-2025-1计算机基础与程序设计第一周作业||这个作业的目标|<复习知识,巩固基础>||作业正文|https://www.cnblogs.com/HonJo/p/18622132|一、教材学习内容(一)网络根据提供的搜索结果,第十五章《......
  • CrewAI 技术总结笔记
    CrewAI技术总结笔记CrewAI是一个专注于增强AI代理协作能力的框架,旨在通过角色定制、任务管理、团队协作和流程优化,创建高效的多代理系统。此手册将全面解析CrewAI的核心概念、使用方法及其扩展功能,帮助开发者快速上手并构建复杂的AI解决方案。1.代理(Agents)1.1概......
  • 内部培训测试 - 长亭科技平台
    1、日志分析2024(100分)简单安全杂项0,1),1,1))=102这些后面的数字。flag{mayiyahei1965ae7569}2、事件协同与响应-考试(200分)中等安全杂项蚁剑马Key:d76R3478flag{578530@chaitin}3、Misc-流量分析(100分)简单安全杂项\过滤排序后为/agent/metrics/putLines /upl......
  • 20241422 《计算机基础与程序设计》第13周学习总结
    2024-2025-120241422《计算机基础与程序设计》第13周学习总结作业信息这个作业属于哪个课程(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(2024-2025-1计算机基础与程序设计第十三周作业)这个作业的目标信息系统、数据库与SQL、人工智能与专家系统、人工......
  • 各大排序总结
    因为学了冒泡后就会用sort了,完全没有学过各种排序,第一次面试因为不会手写快排GG,痛定思痛,决定认真写篇学习博客QAQ冒泡排序时间复杂度$O(n^2)$,空间复杂度$O(1)$,不断swap把大的排到后面,咕噜咕噜冒泡泡voidBubbleSort(int*a,intlen){for(inti=1;i<len;++i){......