摘要
用户的要求很直接:试玩时不能中途崩溃,界面测试要由软件自动完成,不靠人手点。本次建了三层测试,都驱动真实的网页会话代码。首轮:浏览器层 3 整局全部打完、0 页面错误;回放层一局 111 步全部经界面点出且每步画面一致;会话层 30 局找到两个会导致录像生成失败或 AI 回合崩溃的真问题,均已修复。三层测试只证明界面不崩、显示与 Simulator 会话一致,不证明规则与商业游戏一致。
要回答的问题
能否让程序像玩家一样从选秀一路打到终局,并在任何异常、画面停住或显示不一致时自动报错?
方法:三层测试
| 层 | 做什么 | 什么算失败 |
|---|---|---|
| 会话层 | 直接调用网页会话随机走完整局:选秀(含重抽)、布阵、战斗里快照列出的每类合法动作、AI 回合、按需预览 | 任何异常;快照不是严格 JSON 或阶段未知;每隔 N 步从存档重建后状态不同;终局后录像/分析没就绪 |
| 浏览器层 | 在独立端口启动真实服务,Playwright 驱动本机 Edge 无头打开页面,按类型加权随机点可见控件、随机悬停;AI 回合用页面时钟快进 5 秒 | 页面异常、控制台错误、HTTP 5xx、请求失败、画面停住(失败保存截图和 HTML) |
| 回放层 | 会话层记录每步选择与画面,再让浏览器按玩家方式逐步点出同一局:选秀卡、布阵、移动/攻击(指向目标边缘选进攻方向)、开魔法书选法术点目标 | 每步后服务器画面(状态号、存活部队数量与位置)和记录不同;页面内存与服务器不一致;棋盘数量牌不对;界面点不出某个合法动作 |
默认测试只跑短局(会话层 2 局、浏览器层进战斗后 25 步、回放层 2 回合);设置环境变量后加一整局浏览器对局。没有 Playwright 或 Edge 时浏览器两层跳过。
设置
浏览器层种子 11–13;回放层种子 101;会话层种子 1000–1029(30 局)。
结果
- 浏览器层:3 整局全部打完,0 页面错误。
- 回放层:111 步全部经界面点出,每步画面一致。调试中确认两条界面约定(不是缺陷):鼠标点目标格时按指针所在的边选进攻方向;原地攻击只有一种方式时用无后缀的动作。
- 会话层找到两个真问题:
- 赛后分析不认识区域射击结果
attack_hex,录像和分析生成失败。已修,并加覆盖测试:Simulator 公开动作清单里的每种动作都必须有计数项。 - AI 回合崩溃(种子 1015):接近路线上的场地效果让攻击预览变成“已取消”(没有伤害、没有幸运分支),而带厄运的攻击者仍按幸运分支去取伤害,抛出
ValueError。现在已取消的攻击估值为 0,并加了回归测试(去掉修复时测试会失败)。
- 赛后分析不认识区域射击结果
- 会话层随后补上“终局后等录像就绪,失败即报”,用注入的分析异常验证能报出来。
局限
- 回放层的英雄技能、生物技能、多目标法术、区域射击路径已写好,但还没在回放中被抽到,需要更多种子。
- 浏览器随机层每步约 1 秒,整局 1–5 分钟,更多种子需后台批量跑。
- 只证明界面层稳定、显示一致,不证明规则与商业游戏一致。
结论与下一步
自动化整局测试已可用,首轮就抓出两个会让试玩中断的问题。下一步用更多种子覆盖剩余点击路径,并可与感知侧的“界面动作词汇”共用这套点击路径。
Comments