Hardware TDD 介绍
Hardware TDD 是一个用于嵌入式固件测试规划的技能,适用对象包括 Arduino、ESP32、ESP32-S3、Pico 和 Pico W。它的核心主张是:在宣称某个功能完成之前,先构建“测试阶梯”(test ladder)。纯行为往往可以在离目标(off-target)环境下测试,但电压、引脚复用、负载下的时序以及物理装配仍然需要目标硬件上的证据。
用途
该技能用于在规划嵌入式测试时提供结构化方法,帮助判断哪些内容可以离目标运行、何时使用 Wokwi 或仿真、如何编写主机假件(host fakes),以及如何在不混淆“编译证明”与“系统证明”的前提下接受一个物理硬件特性。
主要能力与流程
技能给出的流程包括:
- 将需求转化为可观察行为与安全不变量。
- 为纯 C/C++ 逻辑编写主机测试,对时间、串口、传感器和执行器使用假件,并保持硬件适配层足够薄。
- 仅在仿真器模型确实能表示相应外设与时序时使用 Wokwi 或其他仿真器,并记录模型局限。
- 使用所选工具链执行精确板卡的编译与静态检查。
- 创建单变量目标检查清单:断电连通性、受控上电、输入观测、输出抑制、复位/恢复以及日志。
- 通过物理门禁请求测量、照片或串口输出;不得从主机测试或编译日志推断目标成功。
- 将失败记录为证据,并保持下一次测试有边界。
测试矩阵
技能提供一个测试层级矩阵,区分各层能证明与不能证明的内容:
- 主机层:例如去抖、状态机、报文解析,能证明确定性逻辑,不能证明引脚电压或接线。
- 仿真层:例如被建模的传感器/LED/UART,能证明被建模的交互,不能证明稳压器、克隆板、EMI 或热行为。
- 构建层:例如精确 FQBN/环境,能证明源码与依赖可编译,不能证明上传或运行行为。
- 目标层:例如串口、万用表、示波器、照片,能证明观察到的硬件行为,除非加载否则不能证明现场可靠性。
- 系统层:例如集成负载/故障用例,能证明场景下的需求,不能证明未来部署安全。
使用方式与验证约定
技能包含“反合理化”条目,用于回应常见捷径,例如“单元测试通过了”“Wokwi 与板卡一致”“草图编译通过了”“照片证明它能工作”“先标记完成以后再测”。它要求物理与系统阶段保持打开,列出模型省略的内容并在硬件上验证,分别要求上传身份与目标观测,要求照片附带板卡身份、测量背景与观察结果,并在证据存在前将循环项保持阻塞或 needs-review。
验证要求包括:每个需求映射到测试、证明阶段与产物路径;主机/仿真/构建/目标/系统结果分别标注;仅物理步骤按 embedded-project-loop 的 Physical gate 格式输出;失败与未验证用例保留在报告中。
共享输出契约
该技能使用共享 Arduino 技能契约,要求说明假设、所需工具与版本、实现步骤、按证明阶段划分的测试/证据、已知限制以及恢复/安全说明。
限制
资料未提供该技能的具体安装命令、价格、支持的平台版本或独立运行方式。