Files
STM32F4-Base/docs/测试说明
wandering1 7efa58d9a1
CI / 静态门禁 (pre-commit) (push) Failing after 25s
CI / 主机侧单测 (MSVC) (push) Successful in 48s
network: 台架 IP 迁到 192.168.31.100,并把重复写死的值收进单一真源
分两段(用户裁定 2026-11-02):先做地址迁移,再把同类字面量收敛成
单一真源,以后再改地址只动一处。

一、IP 迁移 192.168.1.100 → 192.168.31.100(gw 同步 → .31.1)
- 工厂默认:Drivers/BSP/NETCFG/net_cfg.c 的 NET_CFG_DEF_IP/_GW
- 注释/文档示例、主机与板级测试、台架 py 脚本、两份 sim_config.ini
- 字节序教学点同步换算 hex:0x6401A8C0 → 0x641FA8C0(内存
  C0 A8 1F 64),旧版示例引文与历史 Trap 记录按冻结纪律不动
- UI 黄金基准:网口设置 4 态 + shot_info 共 5 张 .bin 由
  check_content_pages.py --update 重刷(渲染值 IP 变了,属预期变更)
- 保留判定:客户点表引用(IEC104/继电保护规划)、芯片手册摘录、
  日期冻结的变更记录行、已退役台架档案 MDK-ARM/retracted_bench_*

二、单一真源收口(A+B+C+D,用户批准全做)
- 新建 test/host/bench_defaults.py:台架 py 默认值唯一定义点
  (DEVICE_IP/DEVICE_GW/PC_IP/NET_BCAST),22 个脚本改为引用;
  MDK-ARM 两探针与 scripts/board_ui_nav.py 经 sys.path shim 引入
- test/board/net_test_task.h 新增 TEST_PC_PEER_IP,板测三处
  PHASE*_REMOTE_IP 改引该宏(保留 -D 覆盖);Phase1 断言改
  memcmp 数组比较,数组各只出现一次
- simulator/tests/check_content_pages.py 从 net_cfg.c 正则解析
  NET_CFG_DEF_* 推导期望值(解析失败即报错、不静默兜底),
  脚本内台架 IP 字面量清零
- 装饰性注释去具体值(net_cfg.h/net_socket.h/net_socket.c/
  net_socket_sim.c);字节序教学 hex 对刻意保留为唯一写值点
- 刻意不动:主机单测夹具 IP(逐文件钉住的任意值是正确测试
  实践)、文档正文 IP(那是文档内容本身)

顺带:scripts/gen_task_table.py 规范串清掉「,B5」——编号清退提交
72b4b094 改了受管区没重跑生成器,task-table 门禁因此一直红

验证:产品 @build 0/0;CH395F 套件开关构建 0/0 后还原产品态;
6 套主机单测 rc=0;content_pages(含宏推导路径)/菜单 8 态/
推流位比对全 PASS;bom-drift 99 无漂移;doc-links/coding-standard/
cppcheck 绿;py_compile 23 文件 + --help 冒烟(含 shim 绝对路径)
2026-11-02 14:46:42 +08:00
..

测试说明目录导航

本目录放测试文档与测试采集数据,2026-10-30 起按用途分六个子目录(原先 25 篇文档 与 3 个数据目录平铺在一层,找文档靠记忆、命名靠约定)。 全量索引与每篇文档的内容说明在 docs/README.md §6(同一事实只在一处详述, 本文件不重复那些描述),这里只回答两件事:东西该放哪一层、每层现在有什么。

1. 结构与职责

docs/测试说明/
├── 流程与规范/   测试开发的标准动作、门禁决策表、测试文档模板(3 篇)
├── 单元测试/     主机侧纯逻辑单测的说明 + 跨全部套件的覆盖率口径(9 篇)
├── 板级测试/     上板测试:芯片/模块测试指南 + 实机测试实施流程(5 篇)
├── 专项验证/     针对一个问题或一次复验的台架专项流程、存储恢复操作(6 篇)
├── 测试工具/     PC 侧工具用法:串口助手、ST-LINK_CLI 烧录与复位(3 篇)
└── 测试数据/     测试跑出来的原始证据:boot_log_data/ m2_data/ m3_data/

归层的分界线是"这份文档随什么一起演进":跟着测试方法走 → 流程与规范;跟着主机侧 单测代码走 → 单元测试;跟着真机套件与硬件走 → 板级测试;跟着一次结论走(写完即定稿 的专项)→ 专项验证;跟着一个工具走 → 测试工具;不是文档而是证据 → 测试数据。

2. 归层判据(新文档该放哪)

你手上的东西 去处 判据
任何测试都要遵守的流程、命名、门禁口径 流程与规范/ 它约束别的测试文档怎么写
test/host/<模块>/ 那套主机侧单测的说明(用例数、断言点、抓出的缺陷) 单元测试/ 跑它不需要真机;文件名用 <模块>单元测试说明.md
需要真机/台架、对应 test/board/ 套件或某颗芯片的验收步骤 板级测试/ 涉及硬件接线、烧录、板端标记;模块指南命名 <芯片>_Test_Guide.md
针对一个具体缺陷或一次复验的验证动作(非常跑套件)、或一类恢复操作 专项验证/ 有明确的"做完就结束"边界,结论沉淀进模块文档/问题记录
讲一个 PC 侧工具怎么用(命令、参数、排障) 测试工具/ 主体是工具本身,不是被测对象
测试产出的原始数据(JSON、串口片段、二进制快照) 测试数据/<采集批次目录>/ 它是一手证据,不是说明

判据冲突时按这个顺序裁决:是否需要真机执行 → 是则 板级测试/;否则是否只服务一次专项 结论 → 是则 专项验证/;否则按对象类型(单测说明 / 工具 / 流程)归层。拿不准就放 专项验证/ 并在提交说明里写明理由——专项验证/ 是唯一允许"先收下再迁移"的层。

3. 现有文件清单(按子目录)

子目录 文件
流程与规范/ 测试开发标准流程.md · 自动化测试流程.md · 测试文档模板规范.md
单元测试/ 看门狗单元测试说明.md · 系统时钟单元测试说明.md · 开机账本单元测试说明.md · 配置文件单元测试说明.md · ADC输入层单元测试说明.md · 相量层单元测试说明.md · 卷锁单元测试说明.md · 时间同步单元测试说明.md · 主机单测覆盖率口径.md
板级测试/ CH395F_Test_Guide.md · GD5F2GQ5UE_Test_Guide.md · SD2506_Test_Guide.md · FTP_Test_Guide.md · 实机测试实施指南.md
专项验证/ ADC前端注入验证流程.md · 启动日志原子性复验流程.md · 链路延迟测试说明.md · 存储维护与容量恢复.md · 模拟器差距清单.md · 故障录波板级到场轮执行手册.md
测试工具/ 串口助手使用指南.md · 串口助手设计说明.md · ST-LINK_CLI_复位使用说明.md
测试数据/ boot_log_data/(39 个文件,串口/SoE 一手证据)· m2_data/(8 个,链路时延安静档)· m3_data/(11 个,链路时延 M3 各档)

各子目录内部不再加下一层:一层子目录 + 文件名前缀(模块名 / 芯片名)已足够定位,再加层只会 让引用变长、让下面第 4 条的递归门禁 glob 更难核对。

4. 四条硬约束

  1. 测试数据/ 里的文件是一手证据:只增不改。数值被"顺手格式化"就等于基线失效;要更正 结论请改文档并另存新证据文件,不动旧文件。
  2. 两类文件名有机器面,被 scripts/check_test_traceability.py 按目录递归扫描(自本目录 根往下找 *_Test_Guide.md 与 *单元测试说明.md):模块指南落 板级测试/、单测说明落 单元测试/,换层等于让追溯门禁看不见它。
  3. 改名 / 挪目录一律走 scripts/rename_ref.py(先 dry-run 再 --apply),它会同步改写 全库引用;手工扫引用既慢又漏 → docs/文档规范.md §3.6。它搬目录时原有两个会改坏内容的坑 已修(同日加了 --selftest 回归),本目录当时的处置见下面第 5 节。
  4. 引用本目录文档时用仓库根相对路径(形如 docs/测试说明/<子目录>/<文件名>.md);只有图片用 文档所在目录相对 → docs/文档规范.md §3.1 / §3.2。

5. 本次分层的处置记录(2026-10-30)

scripts/rename_ref.py 当时搬目录有两个坑(权威记录在 docs/文档规范.md §3.6 第 4/5 条,两处已于 同日修复并加 --selftest 回归;这里只留本目录的处置):

  • 测试数据/ 下 23 个证据文件的内容曾被脚本误改 → 已用 git show HEAD:<旧路径> 的原始字节逐字节还原, 现在这三个目录是纯改名(内容与 HEAD 逐字节一致)。
  • 数据 README 指向外部的 ../ 出链未自动补层级 → 已手工核对补齐(本目录 测试数据/*/README.md 与 专项验证/链路延迟测试说明.md)。