如何对Unity3D游戏进行功能测试?


25

语境

我将继续在Unity3d中为游戏使用一些旧代码,并且我想编写一些用于回归的功能测试,以确保在实现新事物或重构时不会破坏事物。

我已经知道Unity3d的“单元测试工具”套件可以作为资产使用。我已经将其用作单元测试套件,因此我测试了我的模型(类)。

我正在考虑哪种测试的示例

对于“功能测试”,我的意思是这样的:

  • 运行程序
  • 在菜单场景中,断言有一个显示“开始”的按钮
  • 点击它
  • 然后断言新场景已加载
  • 断定像素XXX为红色
  • 点击坐标XXX
  • 现在断言像素变为绿色
  • 等等

问题

问题1:如何编写和运行游戏功能测试?这通常也在UnityTestTools(UTT)中完成吗?

问题2:如果UTT可以用于单元测试,那么是否有单独的功能测试套件?哪一个?

笔记:

我的目标是Android,并且正在运行 Unity5.3.1f1


据我所知,内置的UTT仅用于单元测试。资产商店中可能有一款适合您需求的测试工具
user3797758

3
其实没有 自从第一个版本发布以来,Unity Test Tools包含用于集成测试和大量断言的工具集。如果您在内置UTT中看不到任何类似内容,请从Asset Store下载完整的UTT。
Maxim Kamalov '16

看一下Test Running文档,Unity Test Runner Doc,它同时允许播放模式和编辑模式测试。
Racksay '17

Answers:


1

据我了解,您正在寻求了解Unity中的自动化测试。

Unity测试工具

这应该是您的goto方法,但是在深入探讨方法之前,我将研究原因。

进行任何形式的自动化测试的首选方法是在尽可能接近生产的环境中进行。对于编写常规集成测试的任何人来说,使用Unity测试工具(位于Unity编辑器中)之类的声音听起来都是个坏主意。

为什么?因为在进行任何集成测试时,您都希望将用户打开时不存在的多余内容拖到您的应用程序中。与iOS版本相比,Unity编辑器可能具有不同的性能或行为(例如)。

那么,为什么要使用Unity测试工具(UTT)呢?

主要原因是方便。Unity编辑器和UTT都是基于易于使用和视觉化的目的而构建的。您可以轻松地编写测试,将其与您的特定游戏挂钩并了解何时失败。

那么Unity编辑器和产品之间的行为差​​异又如何呢?

毕竟,Unity编辑器是应用程序的包装。这意味着编辑器和产品之间会有一些差异。但是,除了集成测试之外,Unity Editor长期以来一直是包装器。这是一个成熟的平台,上面有成千上万的游戏。通过在编辑器中运行集成测试所获得的结果将非常准确。

在您提供的示例场景中,可以使用Unity Test Tools轻松声明除第一项之外的所有内容。您可以像其他集成测试一样打开场景并验证行为。

我建议您使用UTT编写大部分(如果不是全部)测试。为了增加与持续集成工具(例如Jenkins)的兼容性,您可能希望使用命令行参数从控制台运行这些工具。

启动应用程序和手动测试

在Unity编辑器中,启动应用程序不是您可以精确控制的事情。要验证游戏的这一方面以及更多内容,可以使用一些基本的手动测试。

解决方法如下:

  1. 确保游戏达到您关心(或可能关心)的特定里程碑时发出某种信号。记录到文件是最常见的方法(使用内置自动记录第3方版本)。
  2. 定期阅读和分析日志。这可以手动进行,也可以使用第二喜欢的脚本语言编写脚本。

备择方案

毫不奇怪,正如Unity所涉及的所有方面一样,我们有多种选择。以下是您可能要考虑的一些事项:

根据项目的规模和范围,您可能希望使用上面概述的一个或多个选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.