VR 应用测试指南 - 自动化和性能
测试、自动化和性能都是最大限度缩短迭代时间和提高开发者效率的重要领域。在开发生命周期的各个阶段,上述每个概念都有许多重叠之处。而下方指南涵盖高级概念和存在 VR 开发流程改进机会的特定领域。
在开始提供性能测试和测试自动化的最佳实践和注意事项之前,我们希望确保您掌握以下场景的基础知识:
单元测试:最小的单个代码单元。示例包括单独的游戏对象、特定功能、方法等。由于单元测试侧重于代码库的一个非常特定的部分,以前,这是开发者开始寻找自动化机会的地方,因为这些测试通常是测试脚本的最简单形式。
集成测试:对系统的两个或多个模块进行组合测试,例如测试整个环境、场景、特定互动等。这些需要构建并集成到引擎中,还包括多个系统,因此,与单元测试相比,这些测试的自动化需要更多的技能和资源。
端到端/质量保证 (QA) 测试:通常手动完成,这在以前是指应用的完整播放过程,或端到端的特定级别/互动。
QA 通常由内部或第三方 QA 团队管理,包括记录完整的测试计划。有一些方法可以实现这些测试的自动化,但请记住,将部分质量保证流程自动化可能需要很高的技能和资源,而您可能希望将这些技能和资源优先用于其他方面。
有鉴于此,电脑模式并不能反映真实的独立体验。请勿测试性能或受 CPU/GPU 影响的应用的任何元素,这可能会导致重大挑战、遗漏错误和大量的性能问题。在 Quest 上部署和测试应该是测试流程的常规部分。
测试流程自动化可以为您带来很大的帮助,尤其是从长远来看,但在开始关注自动化脚本编写和自动化的技术要求之前,请考虑一些事项。请参阅下文,了解在设计测试和自动化策略时应牢记的几个关键因素:
考虑时间和技能:准备好分析编写可靠的测试脚本与使用手动测试相比的成本效益分析。测试越复杂,编写和维护所需的时间和精力就越多。
综合考虑,建议采用自动化:考虑到上述观点,如果您有能力自动化测试,无论是启动测试、复杂的互动还是全环境测试,自动化都可以帮助您的团队大大加快迭代时间,并最大限度地减少应用中随着时间的推移而出现的错误/问题的数量。
自动化可重复且重点突出的元素:自动化应用中可重复且通常不太复杂的部分。自动化将最大限度地提高效率,并确保您的脚本准确地交付设计结果。
针对边缘案例机会:在需要大量后勤工作才能完成单个手动测试或可能被视为 “异常 ”的用户流的奇怪情况下采用自动化。
在确定待自动化的测试类型和资源重点后,请使用以下最佳实践来推进测试自动化流程。
- 将测试脚本作为自动化的灵感来源:由于您的团队很可能已经使用测试脚本来驱动 QA 流程,因此这些脚本可以很容易地找到构建中那些可以用最低成本实现自动化的可重复区域。
- 使用源代码控制和持续集成:如果您想发布一款完全开发的 Meta Quest VR 应用,建议您利用源代码控制+持续集成系统。系统的形状和规模各异,建议您根据团队规模和所创建应用的类型来调整系统。对于源码控制系统,我们建议使用 Git 和 Mercurial,如果您的应用比较复杂,也可以使用 Perforce。对于持续集成系统,请查看 Jenkins、TeamCity或GitLab。
- 建议使用应用的 2D 版本:无论您是否使用测试自动化,请确保包含一个可在 2D 屏幕上运行的应用版本。这将为您节省大量时间来测试某些功能、变量和属性,并加快调试过程。
- 尽可能利用遥测技术:从长远来看,当您分析可能导致特定错误的原因时,这类数据可能非常强大。在计划记录哪些遥测数据时,请考虑在应用中的旅用户历程,以及成功完成游戏所需的用户流程。
- 尽早检测构建错误:在 CI 系统上编译代码并运行资产构建可以在提交新更改后立即检测问题。主动警告您的团队这些错误可以确保他们避免任何冲突,并避开这些问题可能导致的任何潜在障碍。
- 强烈推荐用于性能测试:设备上的自动化尤其有助于监控性能。新的更改可能会无意中损害性能,在知道原因后,尽快检测到这一点将更容易修复。长时间的监控性能也可以确保优化性能的更新是有效的。有关测试应用性能的更多信息,请参阅下文。
- 设备上的触发事件:在 VR 头戴设备上触发特定事件,例如“告诉角色前往 X 世界并将角色移动到 Y 位置”。检查 ADB 的性能特征,并确保在整个活动过程中进行某些检查。
无论哪种类型的应用,性能优化对于任何针对独立式 Meta Quest 头戴设备(如 Meta Quest 和Quest 2)的应用的成功都至关重要。参阅下文,了解在考虑性能优化的情况下规划开发过程时需要记住的几个重要考虑因素。
性能预算:在您努力确保 VR 应用符合帧率时,建议您考虑记录系统的不同部分以及您将分配的性能预算。这将有助于确保清晰的沟通,并有助于在整个开发生命周期中确定优先级。
性能 KPI:除了预算外,还可以为应用的性能设置 KPI,这可能包括启动时间、特定互动所需时间、用户界面响应、场景间导航等具体基准。
线程管理:虽然这将被视为一个架构决策,但请记住将关键元素放置在前台,而不太重要的元素则不会阻塞主线程。
我们将继续构建并改进我们的开发者工具套件,使您能够监控、分析并优化应用的性能。请参阅下文了解这些工具的一些亮点,同时您也可以查看
移动优化工具页面了解更多信息。
- OVR 度量工具:使用实时图形叠加分析您的移动应用,该图形叠加可提供应用和设备数据,如帧率、热量、GPU/CPU 节流值等。有关该工具中每个统计数据的更多信息,请参阅OVR 度量工具统计数据定义指南。
- 使用 Logcat 收集 VrApi 日志:使用此命令行 Android SDK 工具收集系统日志。利用 Logcat 检索Meta Quest VrApi 日志,以查看应用性能和设备设置。有关该工具中每个统计数据的更多信息,请参阅VrApi 统计数据定义指南。
- ovrgpuprofiler:使用此低级 CLI 工具访问实时 GPU 管线指标和渲染阶段跟踪数据。ovrgpuprofiler 包含在 Meta Quest 和 Quest 2 运行时中,并存在于每个设备上。
- Perfetto:Perfetto 是一款与引擎无关的性能跟踪工具,与内置引擎分析器相比具有一些主要优势,比如它包含了系统进程的广泛视图,以及与应用性能分析相同时间线上的其他指标。此外,它还能直接将调用到 OVRPlugin 的函数映射到操作系统,并从高层次深入了解各种 GPU 计数器和指标,从而更好地隔离性能问题。它还可以生成 GPU 渲染阶段跟踪。
- RenderDoc:一个支持多种图形 API 和开发平台的图形调试工具,是帧捕获和分析的理想解决方案。
- RenderDoc for Oculus:Meta Quest 维护的 Renderdoc 的一个分支,用于 Quest 平台。除了 RenderDoc 的正常图形调试功能外,此版本还提供了访问低级 GPU 分析的权限,特别是来自 Meta Quest 的图块渲染器数据。
- Unity 分析器:在 Meta Quest 上构建并运行此工具,可直接从 Unity 环境中收集更多性能信息。更多详情请参阅官方 Unity 分析器文档。
无论您是有几个头戴设备可用于连续的自动化测试,还是您想发挥创意,利用备用头戴设备通宵运行测试,启动任何规模的设备实验室都能帮助您在开发过程更早地发现错误和性能问题。有关使用备用设备进行自动化测试的一些注意事项和最佳实践,请参阅下文:
- 这完全取决于您的开发资源:虽然您需要硬件来启动和运行,但请记住,首先,您管理任何类型的设备实验室的能力最终将取决于您的工程团队,以及他们编写自动化测试脚本的能力,从而在每次迭代中节省团队的时间和精力。
- 更多自动化=更多设备:在您编写了一些自动化脚本之后,可以在非正常运行时间、通宵时开始在可用设备上进行测试。所有这些都是一个迭代过程,在您编写了足够的自动化后,您就可以开始证明更多的硬件可用作专门的测试单元。
- 记得考虑测试后的带宽:当您开始证明专用测试单元的合理性时,请记住您需要团队成员来分析和报告这些结果。如果不存在此带宽,您可能需要重新考虑专用硬件。
- 2D 测试:由于您可能拥有比 Meta Quest 头戴设备更多的电脑和笔记本电脑,因此您可以随时开始在2D设备上运行自动化。这些足以测试游戏逻辑、外观和感觉(初始纹理)、脚本游戏等。
这个平台拥有测试、自动化、性能优化和工具的有用资源,以帮助推动上述所有工作,以下是一些可以帮助您入门的亮点。