对UE的教学项目进行测试实录
LyraStarterGame 是 Epic 的 UE 教学项目,第三人称射击,带武器、装备、队伍、HUD 一整套系统。我拿它做了一次完整的游戏项目测试,从测试宪章到封板,96 个 CQTest 自动化用例,88 个 手工测试 总共发现13个已知问题(12 个 Bug + 1 个玩法建议)。这篇文章讲方法和结果,完整测试文档入口见下方导览。
| 想看什么 | 跳转 |
|---|---|
| 完整测试文档(37 份合并) | 全部文档 |
| 测试总结报告 | 测试总结报告 |
| Bug 报告汇总(13 项) | 00-Bug清单 |
| 用例分级清单(并入/删除理由) | 用例分级清单 |
| 性能测试总结报告 | 性能测试总结报告 |
测试案
划定测试范围 8 个游戏系统加性能专项:武器与装备、控制、相机、HUD、前端页面、音频、队伍、初始化链路,性能测试单独算。状态系统评估后移除,事件测试(死亡、重生这类跨系统链路)独立成册。
范围上做了几个决定:
- 黑盒测试为主,集成测试为主。除非明确标自动化,一律从玩家视角描述。
- 不单独测 GAS。Gameplay Ability System 不设独立系统,相关功能归进各系统的细则。
- 边界值测试包含 min , min -x , 0 , max + min / 2 , max , max + x。
- 测试方式只有两种:C++ CQTest 跑重复性高的用例(数值边界、状态流转、输入模拟、回归验证),手工跑需要视觉、手感、听感判断的用例。蓝图功能测试,Lua测试框架弃用。
CQTest 是什么
CQTest 是 Epic 的 C++ 测试框架,测试直接跑在游戏进程里。相比与蓝图测试有更高的自由度,面向AI友好,缺点是结构修改需要重编译,一次编译耗时5-6分钟。
最后 96 个用例分布:武器与装备 21、控制 30、事件 13、初始化链路 5、相机 9、音频 8、散布 10。每个套件对应一个 .spec.cpp 文件。
手工部分
自动化覆盖不了视觉、手感、听感。四个手工 Session:
- Session 1:武器动画、装备动作
- Session 2:控制动画、视角、相机
- Session 3:HUD、队伍、音频
- Session 4:探索性测试(EX-01 地图互动效果,90 分钟纯手工)——最有价值发现是无方向 Dash 仅在特定朝向触发(AM-03-06),另有弹射器、传送门、手雷一批交互问题
测出来的问题
结束时 13 个已知问题(12 个 Bug + 1 个玩法建议),没有阻塞级。
性能测试
封板后补了一轮性能专项:三轮 Unreal Insights trace(共 3348 帧)定位,再打包 Development 版复测。结论一句话:真实可复现的问题收敛到两个——体积云渲染尖峰(PIE 下 8.6ms 典型、99ms 尖峰,打包版 GPU 侧数字待确认)和 GC 卡顿。PIE 里约 80ms 的 GC 大暂停大部分是 Python 插件放大,打包版真实代价 18ms,降为 P2;打包版主要卡顿变成操作触发的编译类冻结(切换画质 PSO 现场编译约 1.5 秒、首次打开设置菜单 653ms)。下一步是把性能门禁做成 Gauntlet 自动化回归(PF-01~12)。
完整测试文档
全部文档(总纲、用例分级清单、系统测试用例、Bug 报告、性能与探索专项)合并成了一个页面:LyraStarterGame 测试文档。


