摘要
Arena 的选秀(开局轮流挑选英雄技能、宝物、生物等)正在迁移到新的“共享档位”实现。迁移后有一批测试失败,其中一部分并不是规则没做完,而是测试自己构造了不合法的局面。本次只改测试构造,不改任何生产规则、AI 评分、目录或校验器:修正后目标测试通过,剩余失败(档位池耗尽、依赖种子的场景假设、整局导出断言)原样保留,整体产品门槛仍是红的。
要回答的问题
在失败测试里,哪些是“夹具(测试预先搭好的局面)本身不合法”,哪些是真正的未完成规则?前者修掉之后还剩什么?
方法
- 终局技能类测试:原来固定使用已过时的
draft-state.v8状态。现在先由引擎正常创建状态,再设置要展示的场景;等级与效果的原断言不变。 - Kittenhorn、Qilin、Halfling 的固有属性/冲突说明:原来放在一个“不同档位混在一起”的报价里,这在真实选秀中不可能出现。现在逐个单独测试,另用一次真实选秀推进到生物阶段,展示同档报价,再按玩家选的编号执行对应的权威命令。
- Lightweaver 等替代升级能力测试:原来把随机生物改名后沿用了原兵种的专长标记。现在用公开的部队构造夹具(施法者、两个友军、两个敌人),目标枚举、预览、实际动作、状态文字的断言全部保留。生产里的专长来源一致性检查不变。
- 冰刺(Icy Spikes)混合首次施加与重复施加:种子 246 下三个敌人中只有两个预先带了状态,旧断言却假设三个都有,于是在合法的空值上报错。这是测试假设错误,不是网页投影丢了状态。改为显式摆放:一个预标记的邻居、一个新目标,分别检查“延长已有来源到 4 回合”和“新施加 2 回合”,并逐个对照实际结算回执与预览。
结果
| 运行 | 结果 |
|---|---|
| 终局技能 + 两个 Lightweaver 用例 | 10 通过 |
| 改终局后的 App/Integration 全量(此时 Lightweaver 夹具尚未修) | 1519 通过、15 失败,239.81 秒 |
| Lightweaver 修正后的网页会话文件 | 163 通过、6 失败,13.49 秒 |
| 冰刺修正前的完整 App 回归 | 1418 通过、10 失败,204.64 秒;与前一次相比只少了冰刺这一项失败 |
| 冰刺最终版的网页会话文件 | 164 通过、5 失败,98.12 秒;5 项都是原有的共享档位/整局失败 |
失败与负结果
剩下的失败包括固定档位池耗尽、依赖种子的场景假设和整局导出断言。这些不是被豁免的失败:完整产品门槛仍然没有通过。是否引入“池耗尽时的回退”必须先完成对原生游戏选秀池的独立调查。
局限
- 只改测试构造,不声明任何浏览器渲染变化,也没有新的浏览器测试。
- 不证明原生游戏的细微结算顺序;也不修共享档位耗尽问题。
- 文件里原有的 160 条 Ruff 提示与此前完全相同,没有顺手处理。
结论与下一步
把“夹具非法”与“规则未完成”拆开后,剩余红灯更能反映真实缺口。下一步是独立调查原生选秀池,再决定共享档位的耗尽处理。
Comments