单位 9 / 11

质量保证 (QA)、调试和自动化测试

收益:

  • 能够理解功能、回归、边缘案例和碰撞测试层,并利用人工智能生成测试场景和边缘案例列表
  • 能够通过人工智能编写自动测试代码并提取日志和崩溃分析中的模式来加速调试
  • 能够理解人工智能的错误诊断不是证据而是假设,必须用日志和重现来证明原因,以及错误报告可重现的重要性。

当游戏发布时,玩家会以开发者没有想象到的方式玩游戏:被困在墙壁中、利用库存、到达不可能的地方、引发崩溃。质量保证(QA——质量保证);这是在发布之前系统地测试游戏并发现和修复错误(bug)、崩溃、不稳定和不良体验的过程。这是游戏制作中劳动强度最大但又至关重要的环节之一。人工智能在许多方面加速了质量保证:测试用例生成、错误报告分析、日志审查、自动测试代码编写、调试和改进生产步骤。但人工智能并不能取代人类测试者对游戏感觉的直觉和评估。

在本单元中,您将学习如何在 QA 和调试中使用 AI;您将学习测试场景设计、日志分析、自动测试编写和错误报告规则。

QA 的层级和 AI 的位置

质量保证是多层次的。功能测试:该功能是否有效(门是否打开,录音是否加载)。回归测试:新的更改是否破坏了之前的工作方式?边缘情况测试:异常输入(重置库存、一次两个键、边界值)。性能/崩溃测试:游戏是否稳定。游戏玩法/体验测试:有趣、直观。人工智能在前四个方面很强:生成场景、列出边缘案例、编写测试代码、分析日志。最后的——经验——属于人类。

QA 流程逐步:

  1. 生成测试用例(使用 AI 的功能和边缘用例列表)。
  2. 编写自动化测试(重复检查的代码)。
  3. 运行并收集(记录错误、日志、崩溃)。
  4. 分析(使用 AI 检查日志和错误模式)。
  5. 报告并验证(清晰、可重现的错误报告;测试修复)。
提示:很难找到边缘情况,因为设计师“正确”地玩了他的游戏。问 AI“如果玩家想要打破这个系统,他们会尝试什么?”列出漏洞利用和边缘情况。

自动测试:将重复工作留给机器

在每个版本中手动测试相同的东西是很累而且容易出错的。自动化测试将这些检查放入代码中:函数每次调用时是否返回正确的结果,系统是否处于预期状态。 Unity和Unreal提供测试框架;人工智能编写这些测试的速度很快。它对于回归尤其有价值:如果某个更改破坏了之前有效的功能,则测试将变为红色。检查人工智能生成的测试,确保它们检查真正有意义的内容——空白测试比没有测试更糟糕。

注意:在调试过程中,人工智能有时会产生一个虚构的解释作为“可能的原因”(幻觉)。不要仅仅因为人工智能告诉你了错误的原因就接受它;通过记录、重现和测试来证明原因。误诊会延误找到正确的诊断。

再现:调试的核心

修复错误的首要要求是可靠地重现它。被描述为“有时会发生”的错误无法修复,因为您无法验证修复是否有效。因此,调试最有价值的工作是缩小错误发生的确切条件(哪些步骤、哪种情况、什么时间)。人工智能有助于缩小范围:您可以给出症状和部分复制步骤,并说“建议可能触发此行为的条件和缩小策略。”但你实际上是通过运行游戏来缩小范围的;人工智能产生假设,你消除它们。

尤其是与时序相关(竞争条件)和内存状态相关的错误是潜在的;这些仅发生在特定的顺序或负载中。对于此类错误,在日志中添加时间戳和状态信息至关重要;人工智能可以分析这些丰富的日志并查看模式(“当这两个事件最近发生时,错误总是发生”)。记住调试的黄金法则:首先理解,然后修复。在不理解的情况下进行纠正会隐藏错误,但不能解决它,并且常常会在其他地方产生新的错误。

三个迷你箱子

案例 1 — 边缘案例搜寻。在角色扮演游戏中,团队在“正常”游戏中测试了库存系统,并认为它很可靠。他们让 AI 说“尝试破解这个库存”并生成 30 个边缘情况场景;其中 4 个是真正的错误(0 重量物品分割,同时丢弃)。出版前已更正。

案例 2 — 日志分析解决了崩溃问题。游戏随机崩溃;崩溃日志有数百行。当人工智能获得日志并询问模式时,发现崩溃总是发生在特定的场景转换和内存不足时。有了这个线索,程序员发现了内存泄漏;事故率降至零。

案例3——误诊归来。一个程序员相信了AI的解释“这个错误是这个函数引起的”,鼓捣了半天;没有结果出来。当他再次澄清并记录生产步骤时,错误出现在完全不同的地方。教训:人工智能的诊断是假设,而不是证据。

四个可复制模板

1) 边缘案例/利用场景生成:

您的角色:恶意 QA 测试员。我描述了以下系统:[系统,规则]。任务:列出 20 个边缘案例场景,这些场景将尝试破坏、利用该系统或使该系统进入意外状态。对于每个:尝试什么、预期结果、可能的错误。

2)自动化测试编写:

引擎:[Unity 2022.3 / Unreal 5.3]。测试框架:[指定]。为以下功能/系统编写自动化测试:[描述/代码]。包括正常情况、极限情况和错误输入。确保每个测试验证真正有意义的东西;编写空洞/无意义的测试。

3)日志/崩溃分析:

以下是游戏的崩溃/错误日志:[log]。任务:标记重复出现的模式、常见条件(场景、内存、计时)和可能的根本原因。将每个原因呈现为“待证明的假设”;说清楚。还告诉我如何验证。

4)错误报告澄清:

使以下模糊的错误报告清晰且可重现:[原始报告]。输出:标题、逐步再现、预期结果、实际结果、频率、环境。如果缺少信息,请列出需要哪些信息。

弱提示/强提示

弱提示:

我的游戏有一个错误,请修复它。

无上下文、无日志、无复制;人工智能具有预测性,产生幻觉的风险很高。

强力提示:

我的 Unity 2022.3 游戏中有一个错误:当玩家执行快速保存加载时,库存有时会翻倍。复制:[步骤]。相关代码:[粘贴]。日志:[粘贴]。任务:列出可能的根本原因作为要证明的假设,给出如何验证每个原因以及可能的修复方法。弥补一个不存在的原因;如果您不确定,请告诉我。

复制、代码、日志和“作为假设呈现”要求使诊断可靠。

QA层表

它测试什么?

人工智能贡献

人类份额

功能性的

该功能有效吗?

脚本、测试代码

录取决定

回归

老东西坏了吗?

自动测试

范围决定

极端情况

异常输入

剧本制作

优先级

崩溃/性能

决心

日志分析

根本原因确认

经验

娱乐、直觉

有限

完全是人类

常见错误

  • 只是测试“正常”游戏玩法。边缘案例发布后会爆炸。
  • 误将AI诊断当证据。为什么通过日志和测试来证明。
  • 编写空的自动化测试。无意义的测试给人一种自信的错觉。
  • 模糊的错误报告。无法纠正不可重现的错误。
  • 跳过回归测试。每次修正都可能导致新的错误。

综上所述

QA 是让游戏为玩家做好准备的纪律。人工智能;生成边缘情况场景、编写自动化测试、分析日志并澄清错误报告。但他们的诊断只是假设,经验的评估是人为的,每一次修正都需要重新测试。用人工智能复制“谁能打破这个以及如何打破这个”的反应;你收集证据。

应用任务

从您的游戏中选择一个系统。使用“边缘案例/利用场景生成”模板生成 20 个场景,并实际测试 5 个风险最高的场景。使用“错误报告细化”模板为您发现的错误创建可重现的报告。

清单

  • [ ] 我创建了一个边缘案例“谁可以打破这个以及如何打破?”
  • [ ] 编写并审查了用于重复检查的自动化测试。
  • [ ]我把AI诊断当作一个假设,并用log/test证明了它。
  • [ ] 我重复地报告了错误。
  • [ ] 我重新测试了每个修复的回归。