乐于分享
好东西不私藏

别再只让 AI 写测试脚本了:Codex + 游戏自动化测试的完整玩法

别再只让 AI 写测试脚本了:Codex + 游戏自动化测试的完整玩法

最近我一直在研究一个问题:

Codex 怎么用于游戏测试?下文内容很长,建议结合奶茶+咖啡配合食用

这里说的不是:

“帮我写一段 Airtest 脚本。”

也不是:

“帮我生成几个测试用例。”

这些其实已经是 AI Coding 最基础的能力了。

我真正感兴趣的是:

能不能让 Codex 像一个测试工程师一样,自己操作 Android 真机、打开游戏、完成操作、截图、抓日志、判断结果,发现异常以后继续查日志、定位问题,最后留下可以回归的自动化资产?

如果这条链能够跑通,游戏自动化的形态就会发生比较大的变化。

传统游戏自动化一般是:

测试人员   ↓设计测试用例   ↓写 Airtest / Poco   ↓执行   ↓失败   ↓看截图   ↓查 Logcat   ↓找开发

而 Coding Agent 时代可能逐渐变成:

                 Codex / Test Agent                         ↓                 理解测试目标                         ↓              控制 Android 真机                         ↓           Airtest / Poco / ADB / AI Vision                         ↓                  执行游戏操作                         ↓          Screenshot + Logcat + SLS                         ↓                 AI Failure Agent                         ↓          UI异常 / 日志异常 / 数据异常                         ↓             生成稳定自动化回归脚本

我花时间把目前 GitHub 上几条比较有价值的路线翻了一遍。

里面既有老牌的 Airtest、Poco,也有 2026 年非常值得关注的新东西,比如 agent-device、Midscene Skills、Mobile-Agent。

如果你本身做游戏测试,这几个项目值得放在一起看,而不是单独学某一个工具。


一、先搞清楚:Codex 在这里到底是什么角色

Codex 不是 Appium,也不是 Airtest。

它本质上是一个 Coding Agent。

它可以理解项目、查看文件、执行 Shell 命令、修改代码、运行测试,再根据结果继续迭代。OpenAI 现在还支持通过 AGENTS.md 给 Codex 写项目长期规则,通过 Skills 把重复工作封装成稳定工作流,通过 MCP 接外部工具。

所以真正合理的架构不是:

Codex ↓替代 Airtest

而应该是:

                Codex                  ↓             理解测试任务                  ↓          决定调用什么能力      ┌───────────┼───────────┐      ↓           ↓           ↓   Airtest       Poco        ADB      ↓           ↓           ↓     图像       游戏对象      真机      └───────────┼───────────┘                  ↓              游戏客户端

Airtest、Poco、ADB这些工具负责“手脚”。

Codex负责“脑子”。

这才是 Coding Agent 用在游戏测试里比较正确的打开方式。


二、Airtest:目前游戏 UI 自动化依然绕不开的底座

GitHub:

AirtestProject/Airtest

截至 2026 年 8 月,Airtest GitHub 大约 9.5K Star。官方定义本身就是“UI Automation Framework for Games and Apps”,支持 Android、iOS、Windows,并通过图像识别定位 UI,而不是完全依赖原生控件树。2025 年底还有新版本发布,2026 年仓库仍有新的 Issue 和代码活动。

为什么游戏测试特别需要这种东西?

因为很多游戏是 Unity、UE 或其他引擎开发的。

Android 原生 App:

ButtonTextViewRecyclerView

自动化框架很容易找到。

但是游戏画面可能只有:

UnityPlayer

里面真正的按钮、角色、地图、奖励图标,并不一定是 Android 原生控件。

这时候传统的:

find_element(id="xxx")

很可能根本找不到。

Airtest采用另外一条路线:

人眼看到什么,就根据图像识别什么。

例如:

touch(Template("login.png"))wait(Template("home.png"))assert_exists(    Template("success.png"),"页面进入成功")

这也是为什么它到现在在游戏测试领域依然很有价值。


三、Airtest + Codex 应该怎么结合

很多人想到的第一步可能是:

让 Codex 写 Airtest。

当然可以。

但价值不算特别大。

更好的方式是先让 Codex理解已有项目。

例如项目结构:

game-automation/├── common/├── pages/│   ├── login.py│   ├── lobby.py│   └── battle.py├── cases/│   ├── test_login.py│   └── test_game.py├── images/└── reports/

然后让 Codex:

阅读当前 Airtest 自动化项目。找到已有登录、主页和游戏场景的公共能力。新增一条完整游戏流程回归:启动应用→ 登录→ 进入指定功能→ 完成操作→ 判断结果页面→ 保存截图→ 保存日志优先复用已有方法。执行脚本。如果失败,不要立即修改测试代码。首先分析:1. 图片定位失败2. 页面加载超时3. 游戏功能异常4. 设备异常5. 网络异常6. 自动化脚本异常给出证据以后再决定是否修改测试。

这时候 Codex做的已经不是“生成代码”。

而是:

维护一套游戏自动化工程。


四、Poco:比截图识别更进一步,直接访问游戏 UI 对象

GitHub:

AirtestProject/Poco

目前约 1.9K Star

Poco 是一个跨引擎 UI 自动化框架,可以用于 Unity3D、Cocos2d-x、Android Native、iOS Native 等环境。AirtestProject 另外还有专门的 Poco-SDK 仓库,用于给不同游戏引擎集成 Poco。

Poco和Airtest最大的区别可以简单理解成:

Airtest:

我看到这个按钮长这样。

Poco:

我知道这个按钮叫什么。

例如:

poco("LoginButton").click()poco("GameStart").click()assert poco("ResultPanel").exists()

相对于:

touch(Template("login_button.png"))

Poco通常更加稳定。

因为UI换个颜色:

Airtest图片识别可能受影响。

但是如果:

LoginButton

这个游戏对象没变,Poco仍然可以定位。


五、但 Poco 有个问题:需要游戏项目配合

这是很多测试团队容易忽略的地方。

Poco不像纯图像识别一样完全黑盒。

通常需要在Unity或者其他引擎里面接入对应 SDK。AirtestProject 的 Poco-SDK 仓库就是为这些引擎提供接入实现。 所以实际选择一般是:

研发愿意配合接SDK        ↓      Poco研发不愿意修改游戏        ↓     Airtest

如果是企业内部长期项目,我个人更倾向:

Poco +Airtest

同时使用。

核心流程:

Poco。

复杂画面:

Airtest。


六、AltTester:Unity 游戏自动化非常值得看的另一个项目

GitHub:

AltTester-Unity-SDK

当前约 121 Star

Star没有Airtest高,但是它的定位非常明确:

Unity UI Driven Test Automation。

它允许通过:

C#PythonJavaRobot Framework

查找Unity游戏里的对象并与对象交互。

例如游戏里真正存在:

Canvas ├─ Lobby ├─ StartButton ├─ RewardPanel └─ Settings

AltTester可以直接对这些对象进行访问。

所以从自动化稳定性来说:

图像识别      ↓Airtest游戏对象树      ↓Poco / AltTester

它们其实解决的是两种不同层面的问题。


七、AltTester + Codex 特别适合做什么

如果一个Unity项目研发愿意配合测试,Codex可以读取:

Unity代码+AltTester测试代码+测试失败结果

然后分析:

UI对象发生改变?业务逻辑发生改变?自动化对象路径失效?还是游戏本身真的Bug?

例如:

以前:

Canvas/Lobby/StartButton

版本调整成:

Canvas/Home/StartButton

传统自动化:

ElementNotFound

测试人员自己排查。

Codex可以读取:

Git Diff+Unity代码+AltTester脚本

发现:

StartButton仍然存在,但是父节点从Lobby迁到了Home。

然后修改测试。

这就是一个很典型的:

自动化脚本自维护。


八、agent-device:我觉得2026年测试人员非常值得关注

GitHub:

callstack/agent-device

截至目前大约已经 4K Star,而且项目非常活跃,2026 年 8 月仍在快速发布版本。

这个项目和传统移动自动化最大的区别是:

它不是首先为“测试工程师写脚本”设计的。

而是:

给 AI Agent 操作真实设备。

官方定位直接就是:

Mobile app verification for AI agents。

它可以让Agent:

查看设备打开App获取界面状态点击输入滑动截图保存测试证据

Android底层还是会使用ADB等能力。项目甚至提供了Android ADB Provider,包括 logcat、应用管理、键盘等能力。

这就非常适合Codex。


九、agent-device甚至已经自带测试Skill

这一点非常有意思。

项目里面直接有:

skills/

其中有一个:

dogfood/SKILL.md

官方描述就是:

系统性探索和测试 iOS/Android App,寻找 Bug、UX问题以及其他问题。

也就是说,它已经开始把:

移动端探索测试

本身封装成 Agent Skill 了。

另外还有:

agent-device/SKILL.md

专门教 Coding Agent 怎么使用设备。

这意味着以后可能不需要:

写一个完整Appium Framework

而是:

Codex ↓加载 Mobile Testing Skill ↓agent-device ↓真实Android设备

十、如果把 agent-device 用在游戏测试里

例如给Codex一个目标:

测试游戏启动和主流程。要求:1. 启动APK2. 等待首页出现3. 进入目标功能4. 完成核心操作5. 每个关键步骤截图6. 操作失败后保存当前UI状态7. 同时拉取最近30秒Logcat8. 判断是否存在Crash / Exception / Timeout9. 输出测试报告

Codex可以负责:

Plan ↓调用 agent-device ↓真实设备 ↓收集证据 ↓分析

但是这里一定要强调一个限制:

agent-device能够控制Android,不代表它天然就懂Unity游戏内部UI。

如果游戏是大量自绘画面:

Accessibility Tree

可能提供不了足够的信息。

所以:

agent-device

更适合作为:

设备控制层。

而:

Airtest / Midscene

更适合作为:

视觉识别层。


十一、Midscene:我认为特别值得游戏测试关注的AI视觉路线

GitHub:

web-infra-dev/midscene

当前大约 14.6K Star,2026年8月仍在持续快速开发。

Midscene的核心思路特别适合解释给测试人员:

传统自动化:

找到元素ID→ 点击

Midscene:

看截图→ 理解页面→ 找到目标→ 操作

它的官方说明明确提到:

仅通过截图进行视觉驱动,可以处理缺少语义标记的元素、Canvas、自定义控件、原生应用等界面。

看到 Canvas 这两个字,游戏测试就应该注意了。

因为Unity、WebGL、游戏自绘界面,恰恰是DOM/Accessibility路线最难搞的地方。


十二、Midscene更有意思的是已经直接开始做Skills

GitHub:

web-infra-dev/midscene-skills

目前约 288 Star

里面已经提供:

Android Automation SkilliOS Automation SkillHarmony Automation SkillVitest + Midscene E2E Skill

Android直接通过ADB控制。

这意味着:

Codex以后可以:

加载 Midscene Android Skill        ↓理解自然语言测试目标        ↓视觉理解游戏画面        ↓ADB控制设备        ↓完成操作

这个方向我认为比:

“Codex写Airtest代码”

更值得研究。

因为已经开始接近真正:

AI GUI Testing Agent。


十三、Midscene到底适不适合游戏?

答案不是简单的“适合”或者“不适合”。

如果是:

传统Android控件

完全没必要上视觉大模型。

uiautomator/Appium更稳定。

如果是:

UnityCanvas复杂图形UI自绘控件缺乏Accessibility

视觉Agent反而开始有优势。

所以可以设计成:

             Codex               ↓          判断当前界面      ┌────────┴─────────┐普通控件              游戏自绘UI   ↓                       ↓Poco/uiautomator        Midscene                           ↓                        Vision

这其实是未来非常值得研究的一种混合方案。


十四、Mobile-Agent:真正的“AI自己操作手机”

GitHub:

X-PLUG/MobileAgent

目前约 9.1K Star

这是阿里通义实验室相关的移动GUI Agent项目,当前已经发展到 Mobile-Agent-v3.x / GUI-Owl 等体系,2026年仍在频繁更新和研究。

Mobile-Agent-v2的基本流程本身就是:

手机截图 ↓视觉模型理解 ↓规划下一步操作 ↓ADB操作手机 ↓再次截图 ↓继续判断

官方提供的版本明确使用ADB连接Android设备,Mobile-Agent-v2采用多Agent协作改善长任务导航。

这基本已经是:

AI自己玩手机。


十五、那Mobile-Agent是不是可以直接拿来测游戏?

可以研究。

但我不会建议现在直接拿它替代游戏自动化框架。

原因很现实。

AI GUI Agent有一个核心问题:

不够确定。

传统脚本:

点击A点击B点击C

100次都应该一样。

视觉Agent:

看图思考点击

可能出现:

第1次点这里第2次偏一点第3次理解错页面

Mobile-Agent社区过去也讨论过速度、坐标精度、模型依赖等问题。

所以我认为它现在更适合:

探索测试

而不是:

核心P0稳定回归

十六、游戏测试里最合理的结构其实是“两套自动化”

第一套:

确定性自动化

使用:

AirtestPocoAltTesteruiautomator2

负责:

每日回归冒烟测试核心流程版本验证

第二套:

AI探索自动化

使用:

CodexMidsceneMobile-Agentagent-device

负责:

探索页面异常操作随机路径寻找未知问题生成测试建议

发现问题以后:

AI探索 ↓稳定复现 ↓转成 Airtest/Poco ↓进入 Regression Suite

这个闭环非常重要。


十七、uiautomator2:设备控制层非常成熟,但游戏里不能乱用

GitHub:

openatx/uiautomator2

目前约 8.3K Star,2026年6月仍发布了3.7.0版本,项目保持活跃。

它本质是:

Python ↓HTTP ↓Android UiAutomator ↓Android设备

优点是:

稳定、简单、Python友好。

特别适合:

安装App启动App点击系统控件权限弹窗输入账号系统设置截图设备操作

但是到了Unity真正的游戏画面:

uiautomator可能只看到:

UnityPlayer

里面的游戏对象不可见。

所以我会把它定位成:

外围自动化。

例如:

uiautomator2负责:安装权限启动系统弹窗外围Native页面            ↓进入游戏            ↓Airtest/Poco

十八、ADB:不要小看它,它可能才是整个系统真正的底层

很多AI测试平台做到最后,实际上都会回到ADB。

因为ADB能做:

adb devicesadb installadb shell am startadb shell input tapadb shell input swipeadb exec-out screencapadb logcat

也就是说:

连接设备安装APK启动游戏点击滑动截图抓日志

全都可以做到。

所以Codex其实天然适合ADB。

它只需要执行Shell。

例如:

检查当前连接的Android设备。如果只有一台:安装build/app.apk。启动目标应用。保存启动后截图。运行期间持续收集logcat。如果出现:FATAL EXCEPTIONANRCrashOutOfMemoryTimeout保存前后30秒日志。

这其实已经是一个:

Android Game Testing Skill。


十九、游戏自动化做到这里还不够:必须把日志拉进来

UI测试最大的误区是:

页面看起来对了 = 功能对了。

实际上可能:

UI       PASS接口     PASS业务日志 FAIL埋点     FAIL

所以游戏质量平台应该同时采集:

ScreenshotLogcat业务日志服务端日志数据结果

二十、aliyun-log-android-sdk:如果公司本来就在用SLS,非常值得接

GitHub:

aliyun/aliyun-log-android-sdk

目前约 191 Star

它支持Android日志异步上传、批量聚合与压缩、本地缓存、多客户端以及失败后的持久化机制。官方仓库的最新Release相对较早,主要集中在2023年,因此它更像成熟基础SDK,而不是当前高频演进的新项目。

这类东西放到测试平台里特别有价值。

例如:

游戏客户端    ↓业务事件    ↓Aliyun Log SDK    ↓SLS    ↓测试平台查询    ↓规则校验    ↓Codex分析

最终一个自动化用例不只是:

按钮点成功

而是:

UI执行成功业务日志产生字段完整数值正确没有异常日志

二十一、OpenTelemetry Android:如果想把日志平台继续往“可观测性”升级

GitHub:

open-telemetry/opentelemetry-android

项目现在提供 Android Agent,用于初始化 OpenTelemetry Java SDK,并提供 Android App 的自动埋点/RUM能力;2026年仍有持续Release和大量新的Issue、增强需求。

它的价值在于:

以后不只是:

日志

而是:

LogsMetricsTraces

例如用户进行一个操作:

游戏客户端 ↓Gateway ↓Game Service ↓Database

以后测试可以分析的就不只是:

报错了吗?

还可以看:

哪一层慢?

哪个Trace断了?

哪个版本开始异常?

这个已经从:

自动化测试

进入:

质量可观测性平台。


二十二、把上面这些东西放在一起,会是什么样?

我会把整个游戏AI测试系统分成六层。

================================================               ① Codex / Agent Layer================================================       Test Planner       Exploration Agent       Failure Agent       Log Analysis Agent       Regression Agent================================================              ② Skills Layer================================================       game-test       android-device       log-analysis       regression       bug-reproduce================================================             ③ Automation Layer================================================Airtest       Poco       AltTesteruiautomator2  Midscene   agent-device================================================               ④ Device Layer================================================               ADB        Android真机 / 模拟器================================================                ⑤ Data Layer================================================ScreenshotLogcatSLSOpenTelemetryAPIDB================================================               ⑥ Quality Layer================================================UI校验日志校验数值校验Crash分析异常归因测试报告================================================

这才是我理解的:

Codex + 游戏测试平台。


二十三、Codex怎么真正调用这些项目?

这里最关键。

目前最适合的有三种方式。

第一种是:

Codex ↓Shell ↓Python/CLI

例如:

codex ↓python run_airtest.py ↓adb logcat

这是最简单的MVP。

第二种是:

Codex ↓Skill ↓CLI

OpenAI官方现在已经把Skill定义成可复用工作流,可以包含 SKILL.md、脚本、参考资料等内容。

例如:

.game-testing/SKILL.mdscripts/    device.py    run_airtest.py    collect_log.py    query_sls.pyreferences/    game_rules.md    log_schema.md

Codex读取:

SKILL.md

就知道:

游戏测试应该怎么跑。

第三种是:

Codex ↓MCP ↓Game Testing Platform

Codex CLI 本身也可以作为MCP Server接入Agent系统。 如果公司已经有自己的测试平台,这种方式最终会更加合适。


二十四、一个真正能落地的 Game Testing Skill 应该怎么写

例如:

---name: android-game-testdescription: Android游戏自动测试、日志采集和失败分析---执行游戏测试时:第一步:检查adb devices。第二步:确认只有目标设备。第三步:安装指定APK。第四步:启动游戏。第五步:根据场景选择执行器。标准Native UI:使用uiautomator2。Unity可访问对象:优先Poco。不可访问的游戏UI:使用Airtest或视觉Agent。第六步:每个关键步骤保存截图。第七步:测试期间启动adb logcat采集。第八步:失败后禁止立即重跑。必须先保存:ScreenshotLogcat当前页面设备信息版本信息第九步:分析失败类型:Product BugAutomation BugEnvironmentNetworkDataCrashUnknown第十步:如果确定属于自动化脚本问题,才允许修改脚本并重新执行。

这就是Codex特别适合做的事情。


二十五、AGENTS.md又有什么用?

Skill解决:

某一种工作怎么做

AGENTS.md解决:

这个测试项目永远遵守什么规则

OpenAI官方说明Codex在开始工作前会读取 AGENTS.md,用于获得项目级长期指导。

例如游戏自动化仓库可以写:

# Game QA Rules本项目是移动游戏自动化测试。禁止为了让测试通过修改业务代码。自动化失败必须先判断失败类型。核心测试不得使用sleep作为主要等待方式。所有失败必须保存截图。Android失败必须保存logcat。新增测试优先复用已有Page/Component。UI图片统一存放assets。核心P0流程必须保持确定性。Vision Agent发现的问题不能直接进入CI。必须首先转换成稳定Regression Case。

以后Codex每次进仓库都按照这些规则执行。


二十六、那这些项目到底值不值得学?

按照我这轮调研,截至2026年8月,可以先这样看:

项目
Star约
游戏适配
AI Agent适配
活跃度
我的建议
Airtest
9.5K
★★★★★
★★★★
较活跃
必学
Poco
1.9K
★★★★★
★★★★
偏成熟
Unity团队值得
AltTester
121
★★★★★
★★★★
持续维护
Unity值得研究
agent-device
4K
★★★
★★★★★
非常活跃
强烈关注
Midscene
14.6K
★★★★
★★★★★
非常活跃
强烈关注
midscene-skills
288
★★★★
★★★★★
活跃
很值得实验
Mobile-Agent
9.1K
★★★★
★★★★★
非常活跃
探索测试
uiautomator2
8.3K
★★
★★★★
活跃
做设备外围层
aliyun-log-android-sdk
191
★★★★
★★★
成熟型
日志场景值得
OpenTelemetry Android
★★★★
★★★★
活跃
中长期布局

这里我不会把Star当成唯一依据。

真正需要看的是:

它在整条质量链路里负责什么。


二十七、如果让我现在从0开始,我不会一上来做“大平台”

我会先跑通一个非常小的闭环:

Android真机  ↓Codex  ↓ADB  ↓Airtest  ↓自动执行游戏操作  ↓Screenshot+Logcat  ↓Codex分析  ↓PASS / FAIL

先证明:

Agent真的可以把一条游戏测试跑完。

第二步再加入:

SLS

变成:

UI+客户端日志+服务端日志

第三步:

加入:

Poco

解决稳定定位。

第四步:

加入:

Midscene

做AI探索测试。

第五步:

再做:

Game Testing Skill

最后才做:

Web管理平台

二十八、最后真正想做的,其实不是“游戏自动化平台”

我现在越来越觉得,下一代测试平台和以前会很不一样。

以前我们的思路是:

平台 ↓测试人员配置 ↓脚本执行

以后可能会变成:

测试人员告诉Agent目标Agent理解业务自己选择:Airtest?Poco?ADB?Vision?执行采集UI + Log + Data判断失败尝试复现生成稳定测试资产

真正发生变化的不是:

“AI帮测试写代码。”

而是:

AI开始参与测试过程本身。

对于游戏测试来说,这件事尤其值得关注。

因为游戏天然就是:

复杂UI、非标准控件、视觉内容多、状态变化多、日志复杂、业务数值复杂。

传统DOM驱动的Web Agent可能并不占优势。

反而:

Vision+ADB+Airtest+Poco+日志+Coding Agent

这套组合,很可能更适合游戏。

如果让我从上面这些项目里只挑三个现在就开始实验,我会选:

Airtest + agent-device + Midscene。

Airtest负责成熟的游戏自动化能力。

agent-device负责把真实Android设备变成Agent可以直接操作的工具。

Midscene负责视觉理解和探索。

然后让Codex站在最上面负责:

规划执行分析修复回归

等这条链真正跑通以后,再把Poco、SLS、OpenTelemetry和数值校验逐步接进来,就很完美啦。