AI 单元测试实战

Find AI Tools
No difficulty
No complicated process
Find ai tools

AI 单元测试实战

Table of Contents

  1. 🌟 简介
  2. 📚 AI 系统概述
    • 操作候选列表
    • 初始游戏状态评分
    • 模拟动作和评分
    • 测试分类
  3. 🛠 AI 系统测试
    • 游戏板重构
    • AI 分函数重组
    • 测试设置构建
    • AI 基础测试案例
    • 货物箱测试案例
  4. 🕵 测试发现与调整
    • 测试案例中的问题
    • AI 行动点处理调整
  5. 💡 测试与开发经验分享
    • 从早期测试中学习
    • 建议和总结
  6. 🚀 结束语

简介

最近我不断调整并修复音频问题,不确定这一次会有什么效果,但我会尽力而为。与此同时,我一直在拖延的一件事情即将到来——修复 AI。上次我离开时对方法感到很有信心,但我知道有一些关键的 bug。老实说,从一开始我应该做的是单元测试。几年前,我全职工作时的工作内容实际上就是编写自动化软件测试。但自那以后,我对为自己的软件编写测试有一种不合理的抵触情绪,特别是游戏。到目前为止,我一直依赖手动测试。但在诊断复杂系统中的问题时,将其分解为更小、可测试的组件确实有助于解决问题。因此,这周我将专注于这一点。

AI 系统概述

操作候选列表

在这一步骤中,首先要收集一份行动候选列表,这些候选行动可以来自游戏中的任何对象,其中一些是元行动,会被扩展成多个具体步骤。

初始游戏状态评分

接下来的步骤是对初始游戏状态进行评分,这由游戏板来表示,我过去称之为上下文。然后,对于每个行动候选者,AI 会克隆游戏板,模拟行动,然后对生成的状态进行评分。如果评分比初始评分高,它会计算一个改进比率,即分数差除以达到那个分数所需的行动数。只有找到至少一个有利的行动,才会执行最终的步骤。

模拟动作和评分

AI 系统包括两类测试,一类是针对 AI 系统本身的测试,另一类是针对参与该系统的对象的测试,通过建议行动、模拟行动和评分来实现。

测试分类

首先,我必须进行大量的重组,主要是使游戏板更独立,以便我可以随时创建它,并向其中添加对象,而不会实际将这些对象添加到游戏场景中或影响游戏中的其他任何东西。我已经有能力在克隆的游戏板上模拟行动,而不会影响正式状态,但它假定游戏板上的所有对象都是真实的对象。对于测试,我不想要这样。在这个重构过程中,我已经发现一个严重的 bug,即项目的评分是基于实际游戏状态而不是评分的实验。我还必须将 AI 分成更多函数,以便逐步测试,使其能够在任何游戏板上操作。

AI 系统测试

游戏板重构

我首先对游戏板进行了大量的重组,使其更加独立,以便随时创建并添加对象,而不会实际影响游戏场景中的其他内容。

AI 分函数重组

接下来,我将 AI 分成更多的函数,以便逐个测试,并使其能够在任何游戏板上操作。

测试设置构建

然后,我构建了一个基本的测试设置,目前只是一个测试案例列表,每个测试案例都有函数指针和标签,并随着需要添加辅助函数,用于重复的任务。虽然这一切都很基础,但对于我这个独立开发者来说已经足够了。

AI 基础测试案例

现在,我想更仔细地看看我的一些测试案例。在测试 AI 基础设施时,我首先创建了一个游戏板,并手动添加了一个区域,然后我创建了一个测试对象并将其放置在游戏板上。接下来,我添加了一个单位,你会发现游戏板传递到了许多这些函数中,因为它需要封装每个对象的完整状态。每个克隆的游戏板都会得到一个状态的新副本,因此更改不会影响其他游戏板。

货物箱测试案例

在这个测试中,我首先不关心单位的得分,所以我先添加单位,然后评分游戏板,除此之外没有其他内容。接下来,我添加一个箱子和一个货物垫,并确保评分增加。然后,我将单位移动到箱子附近,并确保评分再次增加。然后我进行了一系列的测试,测试捡起箱子并将其送到货物垫的过程,首先每次给单位一个行动点,

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.