当前位置:HOS学院>技术前沿>研发实战:如何对VR游戏进行自动化测试

研发实战:如何对VR游戏进行自动化测试

作者:hosmba发布时间:2019-04-08 12:11:23来源:映维网

Lucky VR是热门多人游戏《PokerStars VR》的开发商。日前,这款游戏的一名软件开发者Huiyoung Hyun Jung通过Oculus博客分享了关于开发自动化测试系统的经验。


01.jpg


就虚拟现实而言,由于用户高度沉浸在游戏之中,bug会造成非常非常不愉快的体验。如果不确定问题的根源,你将非常难以解决它们,而确定bug的重现步骤非常腻烦和令人泄气。多人游戏尤是如此,因为一些bug只在非常特定的情景中出现。


因为各种各样的原因,测试VR游戏虽然测试VR游戏非常具有挑战性,而与传统游戏相比,测试人员的工作会更加繁重,并且运行多个实例可能非常困难。本文概述了我是如何通过开发自动化测试系统来解决《PokerStars VR》的测试挑战,以及能够帮助你简化测试过程的技巧提示。


附接至虚拟化身的camera可以增加用户的沉浸感,但在VR中测试时这可能会成为障碍,因为用户需要佩戴头显来感知VR环境。要创建自动化测试,第一步是设置第二个camera,这样你无需穿戴Rift头显就能轻松浏览相关的情况。


如果系统检测到未穿戴头显,你可以禁用附接至虚拟化身的主camera,并启用更宽视角的第三人称camera。你同时可以录制镜像屏幕的视频。如果你决定要在无人监督的情况下运行自动测试,这可能非常有用。对于《PokerStars VR》,我们设置了一个鸟瞰camera,令其围绕着牌桌转动。


2. 输入与追踪


取决于游戏的类型,模拟输入和头部追踪可能极具挑战性。所以,我建议你关注其他可以从自动测试系统中获益更多的组成要素。例如,你可能会发现某些对象在不同关卡之间切换时未能正确实例化或销毁。


在多人游戏中,新加入游戏的玩家可能无法同步画面,或者当发生host迁移时,你可能会在运行游戏数小时后发现内存泄漏。Oculus SDK提供了一个事件委托(事件代理)。当检测到未穿戴Rift时,系统就会调用这个事件委托。你可以编写一个根据需要禁用输入,追踪及一定虚拟化身组件,并订阅所述事件的函数。


02.jpg


3. 实现测试


实现测试系统的时机已经成熟。最有用的测试场景是人类测试员难以完成,并需要定期完成的测试场景。例如,某些bug需要测试人员执行特定操作,但同时要执行另一个函数以引发冲突。 在现实世界中,网络意外断开是常见的事情,并且需要定期测试。确定需要自动化的测试类型。


在实现时,不要改动核心游戏逻辑,因为这就违背了测试的目的。首先构建类属基础系统,然后编写特定的测试场景。接下来,你可能会发现可以从自动化测试中获益的其他场景,但可能无法同时执行两个不同的测试。例如,你可以进行网络稳定性测试,然后再进行常规的游戏测试。


4. 日志记录


对于日志记录的重要性,怎么强调都不为过。利用自动测试系统,记录堆栈踪迹和错误异常可以非常好地相互补充。当你运行自动测试系统时,它会创建大量有用的数据,并帮助分析从录制视频中发现的错误。知晓幕后发生的事情可以帮助定位问题的根源,因此请确保你的日志文件包含错误异常和堆栈踪迹。当出现错误报告但你又不确定原因时,它同样有助于纳入自定义信息。将你认为可疑的信息放入自定义日志,在运行数小时自动化测试后你有可能会想到更好的点子。


我想分享的另外一点是,纳入可以帮助你从日志文件中定位正确消息的任何帮助。当我第一次收到隔夜自动化测试会话的结果时,我的日志文件长达数十万行。定位相应的日志消息非常具有挑战性。解决问题的一种方法是,组合日志消息和时间戳,这样你就可以立即识别哪条日志消息匹配你在录制视频时发现的bug。设置一个显示错误的开发控制台,这样你就能够在分析录制视频时轻松发现错误。


5. 《PokerStars VR》的自动Host迁移测试


在《PokerStars VR》开发的早期阶段,我们在host迁移过程中发现了一系列影响游戏的问题。有时变量未同步,RPC函数未在其他客户端调用,或者对象在插值过程中遭遇冻结。要确定bug的重现步骤非常困难。它们要求host在非常具体的时间点断开连接。有时host迁移必须在不到0.5秒的时间窗口内发生,这是一个非常大的问题,特别是因为它是一款扑克游戏,所以游戏的运行必须稳健。


我解决这个问题的方法是,自动host迁移测试。首先,我实现了一个host bot和一个client bot。当host bot位于大厅时,它会创建一个多人扑克室。每个client bot定期从服务器获取现有房间列表,并搜索标记为自动测试房间的房间列表。当发现测试房间时,client bot加入房间。在进行一段随机的游戏时间后,host bot离开房间并返回大厅,这时host迁移出现。


当发生host迁移后,下一个host将重复这一行为。一旦bot返回大厅,它就会重复测试循环。在自动会话期间,如果游戏状态在一段时间内没有任何改变,或者如果一个bot玩家没有对RPC进行响应,则可以认为游戏出现bug。如果检测到这种问题,所有bot都会离开房间并返回大厅。


6. 如何操作


下班后,我们先运行自动化测试,然后再离开办公室。这一般会持续大约16个小时。当有8个bot在会话期间参与测试时,每次新创建的多人房间都将执行7次host迁移测试。 这允许我们在一夜之间进行数百次host迁移测试。我们会记录,分析和讨论测试会话期间发生的所有事情。


在开始运行自动化测试之后,我们能够在数周内解决每次host迁移时出现的游戏问题。另外,测试系统一直是确保我们能够放心发布新功能的工具。 借助自动化系统生成的有用调试数据,《PokerStars VR》已经不再依赖于手动测试和错误报告。


7. 总结


自动化测试可为你的游戏创造巨大价值。QA测试人员可以更快地发现bug再现步骤,并在其他工作流程方面保持高效。它可以找到人工不容易发现的问题。它是定位现有问题的绝佳工具,同时可以确保改动现有代码不会导致进一步的问题。最重要的是,它不依赖于用户发送错误报告,而是自动生成有价值的测试数据。在VR中进行测试非常有挑战性,但我希望这篇文章能够帮助节省更多的时间和精力。


  环视天下声明:HOSSKY网站登载或转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。

技术前沿热点