我是这个测试领域的新手。我刚刚使用统一引擎开发了一款基本游戏,但我想对其进行测试。
我已经检查过硒,但是我不知道如何获取返回的值,该值包含游戏中正在执行的动作的信息。如果我能够获得价值,那么我将能够相应地采取必要的行动。
我是这个测试领域的新手。我刚刚使用统一引擎开发了一款基本游戏,但我想对其进行测试。
我已经检查过硒,但是我不知道如何获取返回的值,该值包含游戏中正在执行的动作的信息。如果我能够获得价值,那么我将能够相应地采取必要的行动。
Answers:
有多种测试游戏的方法,最常用的两种是:单元测试和集成测试。
用于单元测试您正在测试游戏的内部运作方式,而没有实际运行它。您可以对已提取依赖关系的特定模块执行此操作(例如,基于给定的一组因素来计算获得的Quest XP的逻辑;是否播放给定的声音)。根据抽象逻辑的多少,您可以进行更多测试,但是特别是为了统一起见,考虑到完成游戏体系结构的方式(例如,从单行为继承),可能会更加困难。不过,应用诸如组合的OOP模式,您可以提取可以以确定性方式(例如物理)测试的逻辑位,即使有时可以将其视为有点极端。这完全取决于您有多少时间,是否从头开始进行该项目,您有多少经验,等等。总的来说,我还没有 与其他非游戏软件项目相比,游戏中的单元测试很多。当您提供模拟行为时,这种测试非常容易自动化。
对于集成测试,当所有部分都在运行时,您可以在给定的时间与“整个”游戏进行交互。根据您要测试的事物的深度,我发现完全不可能完全容易。
一种想法是建立一个“集成测试”构建,该构建记录它所做的每个(大多数)动作(即,产生怪物,播放声音,开始效果,产生粒子)。在运行了给定的时间后,您可以检查日志以查看它是否与给定的模式匹配(这也取决于游戏基于输入的随机性)。现在,这听起来很简单,但问题是:您如何告诉游戏进行所需的动作?这使我想到了第二个想法。
同样,另一个想法是在游戏中拥有一种用于测试目的的服务器,该服务器能够处理请求(例如,通过REST API),并且对实体起作用。这些请求可能是诸如:向左移动,跳转,旋转X度,更改视口等。使用这种方法,您还可以通过直接检查状态或验证虚拟状态来“检查”游戏是否按预期运行发生事件的日志。其他移动设备的UI测试工具(例如Xamarin Test Cloud)也使用了这种方法
对于控制部分,如果您的游戏是基于触摸/浏览器的,则可以改为通过虚拟触摸/输入设备来模拟操作,但这要困难一些,具体取决于操作的复杂性。
关于视觉方面,另一个想法是在初始阶段获取一些参考屏幕截图,图像,并在更新的版本中发生相同的动作序列后将它们进行比较。比较可以具有特定的偏差余量,以防止微小的变化。在测试期间,您可以记录不匹配的屏幕并查看差异。由于不同的更改,可能需要更新参考屏幕。在这种情况下,可以使用预设动作再次运行游戏,并更新参考图像。除非您使用先前的想法来设置用于生成粒子的某种种子,否则这可能不适用于粒子系统或随机生成的场景。
对于声音而言,它可能会更难一点,因为它将涉及“监听” OUT设备(IIRC并不总是可能的,因为它取决于系统的硬件)。但是,如果可能的话,您可以进行与图像相同的基于参考的比较。
我希望这为您如何实现游戏测试自动化提供了一些启示。
以后的编辑:我只是看到还有一个相关的问题,可能会给您一些有关如何做某些事情的指示:自动测试游戏