- CLAUDE.md 137→140:日期注记全清;文件头红线收敛为指针(全表唯一权威=code-conventions §1.4.1);测试两入口/闸机轮次/MC 档位超长红线拆子条目(MC 精度数字收敛为 sim-data/README 档位表指针);规范导航补 test-conventions/concept-conventions 两行 - code-conventions 210→148:§3 测试纪律拆出独立成文;缺陷对照表与版本历史表退役(历史归 git);反面案例去日期化;与 §1.5 重复的流程条目合并 - doc-conventions 210→149:概念封装/引用纪律/归档三节拆出 concept-conventions.md(原 §7–9 合并桩节标注);§10/§11 保号——active.md 与 tools 脚本存量引用零断链;数值纪律强制收口条款移出表格单元格 - 新增 test-conventions.md(49 行):探针标配/回归断言/提交前全量验证/验收清单落码规范 - 新增 concept-conventions.md(54 行):概念封装建模/跨文档引用纪律/归档与事实源 - 机械闸:五文件行数≤150 ✓ IMPORTANT=0 ✓ 日期残留=0 ✓ 熵增闸 PASS ✓ doc 三闸(gdd_lint/doc_link_audit/doc_term_audit)对改动文件零波及(存量 GDD 基线失败与本批无关) - 行为验证:全新上下文只读子代理五问导航 5/5 正确(含两份新文档命中与 §10/§11 交叉印证)
50 lines
3.7 KiB
Markdown
50 lines
3.7 KiB
Markdown
# 测试规范(Dungeon Sweeper)
|
||
|
||
> 约束范围:`game/smoke/`、`game/tests/` 与一切场景探针的编写与验收。
|
||
> 分工:测试**执行许可**(什么时候允许跑测试)归 CLAUDE.md「硬性红线·测试执行两入口铁规」;命令与工具清单归 CLAUDE.md「运行与验证」;本文管测试怎么写、怎么算合格。
|
||
|
||
**写任何测试前必须通读本文。**
|
||
|
||
---
|
||
|
||
## 1. 测试总纲——"存在"必须证明"可达且正确"
|
||
|
||
核心层验收标准通过不算有测试:GDScript 编译不查字典字段与时序,呈现层错误只在运行时暴露。
|
||
测试必须证明功能可达(用户真的能用到)且行为正确(结果符合验收标准)。
|
||
|
||
## 2. 场景级探针标配
|
||
|
||
每新增一个可交互 UI 区域(视图/覆盖层/面板),必须配套场景级 headless 探针:
|
||
真实实例化场景 → 驱动真实输入路径 → 断言可见性与状态。
|
||
|
||
凡模态覆盖层,探针必须断言:打开后自身 visible 且遮挡物已隐藏(模态被遮挡 = 功能存在但不可达)。
|
||
|
||
## 3. 缺陷修复必须沉淀回归断言
|
||
|
||
每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:旗动作耗尽 AP → 必须进入第 2 轮;
|
||
选用道具 → 库存态必须变 Used)。没有回归断言的修复视为未完成。
|
||
|
||
## 4. 提交前全量验证
|
||
|
||
交付前必须全绿:`smoke_all.gd` + 全部场景探针(ui_probe / ui_click_probe / ui_tune_probe)。
|
||
行为探针使用随机化玩家行为(旗/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。
|
||
|
||
## 5. 测试函数怎么写——验收清单条目的落码规范
|
||
|
||
需求卡片 §7「逐需求点验收清单」每一条都要落成可执行的验证;本文定统一写法,卡里定每批的具体内容(测什么/注入哪里)。写卡期查不出执行载体的条目=不可测,当场呈报,禁拖到实现期。
|
||
|
||
1. **执行载体五选一,逐条声明**:单元测试(`tests/run_all`)/冒烟断言(`smoke_all.gd` 对应场景段)/场景探针(`smoke/` 下 `*_probe`)/MC 同种子对拍/人工核对(仅限无法自动化的纪律类需求点,如命名锁定、数值占位)。行为类条目以自动化载体为主。
|
||
2. **粒度与对应关系**:每条清单条目至少一个自动断言;多条条目可合用一个测试函数。断言失败消息末尾带编号尾缀〔卡短名 Vn〕(如〔秘宝批 V3〕)——断言与卡片清单可互相 grep 查找。
|
||
3. **断言词汇按验证对象五选一**:
|
||
|
||
| 词汇 | 适用场景 |
|
||
|---|---|
|
||
| 逐位相等 | 同种子下确定性公式与结算的精确对拍 |
|
||
| 区间/差值带 | 概率与平衡读数(MC 同种子配对比较,出带即红) |
|
||
| 快照比对 | 存档域结构、配置表行结构 |
|
||
| 重放 | 同种子断点回放、改前改后配对 |
|
||
| 状态/计数器断言 | 条件解锁、限次、充能——置数据→走路径→断计数值 |
|
||
|
||
4. **调试注入两层(能力测试与流程体验两分法的落码面)**:自动化测试=测试代码直调核心层写口构造状态(直改数据表行/计数器/存档域,不经 UI、不走正常资源积累流程——冒烟现役做法);人工体验=DebugOverlay/DS_DEBUG 调试面,服务用户目检。清单条目的「怎么测」必须写到数据面粒度:改哪张表哪行、置哪个计数、调哪个核心写口。
|
||
5. **换代批旧验证约束同生死**:删除旧数据行/旧实现代码的批次,必须同批摘除只验证旧实现的断言与护栏校验,由新断言替代——旧件断言残留=冒烟假绿来源;合并后冒烟全绿且全仓无旧件残留引用为证。
|