中EN
概念页

自动化测试

Automation Testing

UE 的自动化系统 (Automation System) 构建在功能测试框架之上,支持单元测试、功能测试、内容压力测试和截图对比,并借助 Unreal Message Bus 提高稳定性。测试按用途分为 Unit、Feature、Smoke(承诺 1 秒内完成)、Content Stress 和 Screenshot Comparison。它依赖引擎系统运行,所以不适合纯粹的单元测试;这种情况用 Low-Level Tests。跨进程的整局会话测试用 Gauntlet。

测试类型

类型说明
UnitAPI 层面的验证测试
Feature系统级测试,例如 PIE、游戏内统计、切换分辨率
Smoke实现者对「速度」的承诺:所有 Smoke 测试都应在 1 秒内完成,只把单元测试或很快的功能测试标为 Smoke
Content Stress对某个系统做更彻底的测试以避免崩溃,例如加载所有地图、加载并编译所有蓝图
Screenshot Comparison对比截图,快速发现不同版本或构建之间的渲染问题

(Automation Test Framework in Unreal Engine)

框架家族

flowchart TD
  AF["Automation Test Framework<br/>基于功能测试框架,借助 Message Bus"] --> SP["Automation Spec<br/>行为驱动开发 BDD"]
  AF --> FT["Functional Testing<br/>用蓝图做关卡测试"]
  AF --> SC["Screenshot Comparison Tool"]
  LL["Low-Level Tests<br/>纯单元测试"] -."不依赖引擎系统".- AF
  G["Gauntlet<br/>运行项目会话并验证结果"] --> AF

图中 Automation Test Framework 是核心,下面挂着 Spec、功能测试和截图工具;Low-Level Tests 用于不依赖引擎的纯单元测试;Gauntlet 负责运行整局项目会话。

实践

  1. Automation Test Framework in Unreal Engine UE 5.8 文档

相关页面

游戏开发 · UE5Gameplay 调试器与可视化日志Gameplay Debugger & Visual LoggerGameplay 调试器 (GDT) 用于在运行时实时查看玩法数据(Pawn、AIController、行为树与黑板、EQS、感知、导航网格),联网时客户端也能看,并且只复制已启用类别的数据。可视化日志 (Visual Logger) 则把 Actor 的状态和图形化信息录下来,之后在编辑器里按时间轴来回拖动查看,适合排查难以复现的 bug。游戏开发 · UE5编辑器扩展与 Python 脚本Editor Extension & Python Scripting扩展 UE 编辑器有三条主要路线,门槛由低到高:Python 脚本(只在编辑器中可用,适合批量处理资产和串联外部 DCC 管线)、Editor Utility Widget(基于 UMG 的蓝图编辑器界面,做成自定义标签页),以及 C++ 编辑器插件(如 Editor Standalone Window 模板,用 Slate 的声明式语法构建窗口)。游戏开发 · UE5烘焙、打包与 Zen 加载器Cooking, Packaging & Zen Loader打包是一组构建操作:编译 (Build) → 烘焙 (Cook,把资产转成目标平台格式) → 暂存 (Stage) → 打包 (Package) → 可选的部署 (Deploy)。UE5 的运行时加载器 Zen Loader 会在暂存阶段离线算好包与对象的依赖图,并把数据装进 .utoc/.ucas 容器(IoStore),由 I/O 分发器以很低的 CPU 开销定位数据块;.pak 只用于不常访问的零散文件。游戏开发 · UE5Live Coding 实时编译Live CodingLive Coding 集成了 Live++,在引擎运行时重新编译 C++ 并给二进制打补丁;它比旧的 Hot Reload 快得多、也更灵活,新安装默认启用,快捷键 Ctrl+Alt+F11。默认开启的「对象重实例化 (Object Reinstancing)」会替换掉现有的 UCLASS/USTRUCT 等对象实例,从而支持新增函数、变量这类结构性修改;关闭它时只适合小改动,大改通常会崩溃。坑:在 .cpp 构造函数里改的默认值不会作用到已存在的实例。游戏开发错误处理与断言Error Handling & AssertionsGEA 把错误分为用户错误和程序员错误,两者处理方式相反:用户错误要尽量平稳地告知并继续,程序员错误应立即停机并给出详细的底层信息。“用户”又分玩家和制作游戏的开发者。实现手段有错误返回码、异常和断言。Naughty Dog、EA、Midway、Insomniac 等在运行时代码中通常关闭 C++ 异常,靠断言和静态断言 (staticassert) 捕获 bug,并用 RAII(Naughty Dog 称为 janitor)管理资源。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原