Files
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

63 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# test/ — 测试代码与主机端脚本
> 测试分两部分,**物理隔离**在两个子目录:
> - **`board/`** —— 板端测试套件(`.c/.h`,编入固件由 testTask 执行)
> - **`host/`** —— 主机端脚本(`.py`,PC 侧驱动板子并判读结果)
## 目录结构
| 目录 | 内容 | README |
|---|---|---|
| `board/` | 板端测试套件(编入 Keil 工程,占 RAM) | [`board/README.md`](board/README.md) |
| `host/` | PC 端测试/判读脚本(Python) | [`host/README.md`](host/README.md) |
| `run_all_suites.py` | **多套件回归编排**(改宏 → 构建 → 烧录 → 采集,`try/finally` 保证还原开关);`--check-build` = 只编译不烧录(纯离机) | 本文 §多套件回归 |
## 运行方式
```bash
# /serial-boot-test 一键闭环(推荐)
& '.venv\Scripts\python.exe' .dsh/skills/serial-boot-test/scripts/run_boot_test.py
# 单独校验日志
& '.venv\Scripts\python.exe' .dsh/skills/serial-boot-test/scripts/verify_log.py <日志文件>
# 多套件回归编排(需真机;自动改开关 + 构建 + 烧录 + 采集,结束后还原)
& '.venv\Scripts\python.exe' test/run_all_suites.py
& '.venv\Scripts\python.exe' test/run_all_suites.py --suites STORAGE,GD5F
& '.venv\Scripts\python.exe' test/run_all_suites.py --dry-run # 只看计划
# 只编译不烧录(不需要 MCU / 串口 / ST-LINK,验证 4 套件可编译性)
& '.venv\Scripts\python.exe' test/run_all_suites.py --check-build
```
退出码约定:`0`=PASS / `1`=FAIL / `2`=采集或烧录错误 / `3`=用法或预检错误。
## 多套件回归(`run_all_suites.py`)
套件互斥(编译期 `#error`)意味着跑 4 个套件要手工循环 4 轮。本脚本把它编排成一条
命令,并且**无条件还原** `test_config.h`——**跑完忘还原 = 测试固件进库**,这是它存在的
核心理由(与提交期门禁 `test-suite-switch` 互为独立防线)。
⚠️ 每轮要真机烧录 + 采集,4 套件约数分钟起;破坏性套件还会改设备持久状态。
**仅回归窗口用,绝不挂 pre-commit**。
`--check-build` 则相反:**只改宏 + `/keil-build`,不烧录不采集,无需任何硬件**,用于防止
"测试套件长期编不过而无人知"(2026-08~09 CH395F 套件实例)。改动 `test/board/` 下测试
代码后建议先跑它——实测 4 套件均 `BUILD_OK: 0 errors, 0 warnings`。
## ⚠️ 注意
- 本目录**被 pre-commit 门禁排除**(测试代码不受 C 规范约束)
- `board/` 套件占用 RAM,启用前先核算预算(见 `docs/内存管理/`)
- **Keil 工程已同步**:`board/` 下 7 个 `.c` 编入 `MDK-ARM/STM32F4-Demo.uvprojx`,
IncludePath 含 `../test/board`;移动文件须同步改工程文件
- 套件选择开关:`board/test_config.h` 的 `TEST_SUITE_*`(互斥,一次只启用一个)
- 测试缓冲用**分 Phase 复用静态缓冲**(避免 `L6406E` 溢出)
## 相关文档
- `docs/测试说明/流程与规范/测试开发标准流程.md` — 测试验证分层与门禁决策表
- `docs/测试说明/流程与规范/自动化测试流程.md` — `/serial-boot-test` 细节与失败模式
- 各模块测试指南:`docs/测试说明/板级测试/*_Test_Guide.md`
- `docs/测试说明/专项验证/链路延迟测试说明.md`