Files
STM32F4-Base/.dsh/skills/board-test-suite/SKILL.md
T
wandering1 4a4ad6bc5f chore(全仓): @build/@test 旧文档别名清退为技能调用名
现状口径:/keil-build 与 /serial-boot-test 是 DSH 会话的技能调用名,
不是 shell 命令;「名 + 命令行参数」的命令形态改为可执行体
run_boot_test.py 的真实调用。

- AGENTS.md:别名说明重写为「技能调用名不是 shell 命令」,两条目改
  「编译(/keil-build)」「串口回归(/serial-boot-test)」
- keil-build / serial-boot-test 两 skill 调用名与示例同步;task-worktree
  方案文档去掉 @build/@test 惯例从句;@task 保留(不在点名范围)
- 123 文件现状陈述全改;台架捕获、变更记录/时间线、rename 映射输入
  等 41 行历史证据保留旧名
- gen_memory_svg.py 6 处措辞随改,3 张 SVG 产物同批重跑
- 顺手补并行方案同行漏网计数 51→52 钩子

验证:提交期快钩子对 123 文件实跑全 Passed;check_doc_links --all
rc=0(3038 处、无法判定 0);check_mermaid --all rc=0;YAML 解析 52
钩子不变;skill-size rc=0;py_compile 全过;字节卫生零漂移。
2026-10-30 13:03:12 +08:00

3.7 KiB
Raw Blame History

name, description, whenToUse
name description whenToUse
board-test-suite 板级测试套件运行与恢复:test_config.h 套件互斥、破坏性开关的持久代价(NAND 坏块记账)、run_all_suites.py 一键回归(自动改宏+无条件还原)、跑后恢复产品构建、容量恢复动作 A/B/C 区分。嵌入式"编译期套件开关"模式的通用流程。 要跑板级测试套件(CH395F/STORAGE/GD5F/RTC)回归、要开/关破坏性测试、怀疑仓库里混入了测试固件构建、或跑完套件要做容量/状态恢复时。

board-test-suite — 板级测试套件运行与恢复(文档型 skill)

开关模型(编译期,test/board/test_config.h)

  • TEST_SUITE_CH395F / STORAGE / GD5F / RTC 互斥(同开 = #error); 全部注释 = 产品构建 = 默认状态。
  • ENABLE_DESTRUCTIVE_TESTS 默认关:开着跑一轮的代价是改设备持久状态—— 实测 GD5F 整轮破坏性跑一次即多记一个 NAND 坏块(容量 95248→95200), 计数持久化在 dhara journal checkpoint 头里,普通格式化恢复不回来。
  • 提交门禁:pre-commit 钩子 test-suite-switch 默认拦截测试构建 (确需提交用 ALLOW_TEST_BUILD=1 显式放行)——跑完务必改回全注释并 /keil-build。

一键回归(推荐路径,勿手工循环)

& '.venv\Scripts\python.exe' test/run_all_suites.py                    # 全部套件:改宏→build→烧录→采集判读
& '.venv\Scripts\python.exe' test/run_all_suites.py --suites STORAGE,GD5F
& '.venv\Scripts\python.exe' test/run_all_suites.py --check-build      # 只编译不烧录(无需硬件,防"某套件长期编不过")
& '.venv\Scripts\python.exe' test/run_all_suites.py --dry-run          # 只看计划
  • 脚本 try/finally 无条件还原 test_config.h(含 Ctrl-C 路径)——这是它存在的核心 理由:跑完忘还原 = 测试固件进库。--keep-config 仅调试用。
  • 退出码 0=全 PASS / 1=有 FAIL / 2=环境错误;4 套件真机一轮数分钟起,仅回归窗口用,绝不挂 pre-commit。
  • 手工循环时的顺序(每轮):改宏(只开一个)→ /keil-build 0错0警 → 烧录 → serial-assistant 采集(open→clear→烧录→wait-idle)→ 判读套件汇总行。

跑后检查清单(必做)

  1. test_config.h 恢复全注释(用 run_all_suites.py 则已自动);
  2. /keil-build 确认产品构建 0 错 0 警;
  3. 若开过破坏性开关:核对开机日志容量数字(健康满值 96064 pages / 187 MB), 掉了 → 按 docs/测试说明/专项验证/存储维护与容量恢复.md 走恢复动作;
  4. 提交前 test-suite-switch 门禁会再兜一道。

三个维护动作别混用(存储类)

目标 开关 代价
A 卷/BBT 恢复 TEST_SUITE_STORAGE + ENABLE_STORAGE_RECOVERY_TESTS 卷全失,不恢复容量
B 容量恢复 A + STORAGE_RECOVERY_FULL_WIPE(擦净 2044 块 + 断电重启) 卷全失,约 4s 擦除
C 日常回归 只开 TEST_SUITE_*,不开破坏性 无(只读模式,横幅 mode: READ-ONLY)

原理与完整步骤见 docs/测试说明/专项验证/存储维护与容量恢复.md;各套件用例清单/判读见 docs/测试说明/ 对应 *_Test_Guide.md;流程规范 docs/测试说明/流程与规范/测试开发标准流程.md §3。

其它项目怎么套

模式通用:套件选择收进单一编译期头文件 + 互斥 #error + 默认产品构建 + 提交期门禁 + 编排脚本"改宏→构建→烧录→判读→无条件还原"。破坏性用例必须 独立开关且默认关,跑前想清楚持久代价与恢复路径。