8.2 KiB
8.2 KiB
| 1 | id | category | priority | precondition | steps | expected | pass_criteria | evidence | tools | est_minutes |
|---|---|---|---|---|---|---|---|---|---|---|
| 2 | N-01 | 正常 | P0 | 健康板;新模板;工具版本锁定 | 分段写 Bootloader/分区表/App;逐段 verify;复位;串口与 UDP 验收 | 3 段 verify OK;启动日志正常;15 s 内收到完整帧 | verify 全通过;无 panic/brownout;perf 帧率>=15 fps 且丢帧<=5% | verify 日志;serial.log;perf.json | esptool;perf_probe;serial_soak | 20 |
| 3 | N-02 | 正常 | P0 | 健康板;已 provision;同布局 | 只写新 App;verify;复位;检查 config 保留 | App 版本更新;原 SSID 配置仍生效 | App hash 与 manifest 一致;config seq 不变;联网正常 | verify;serial;perf | esptool;perf_probe | 15 |
| 4 | N-03 | 正常 | P0 | 健康板;已 provision;模板支持 config | 只 patch config(换 SSID);不写 App;复位 | 新 SSID 生效;App SHA-256 不变 | app-readback SHA-256 与 manifest 一致;serial 显示 config source=partition;联网正常 | app hash;serial;perf | esptool;provision.py;perf_probe | 10 |
| 5 | N-04 | 正常 | P1 | 健康板 | 连续 provisioning 3 次(相同输入) | 幂等;无 brick;报告一致 | 3/3 通过;设备身份一致;无重复写入错误 | 3 份 result.json | provision.py | 20 |
| 6 | N-05 | 正常 | P1 | 健康板;归档镜像 | 写 merged image 并 verify(对照) | 记录是否通过;不用于坏板 | 结果记录;不改变坏板策略 | verify 日志 | esptool | 10 |
| 7 | B-01 | 坏板 | P0 | 故障板;E1 备份已验证 | 牺牲板 E2 写读表征;生产板定向读 0xFADE7/0x10863 + 扫描模板写入区 | E2 复现缺陷;生产板地图正确;恢复 verify | 至少识别两个已知地址;恢复后关键区 verify OK | scan.json;verify;backup hash | esptool;provision.py | 30 |
| 8 | B-02 | 坏板 | P0 | 故障板;新布局;模板镜像 | 分段写新 App/表;verify;复位 | 写入区不含坏地址;App 实际镜像 verify OK;启动 | 3 段 verify OK;serial live;UDP 有帧 | verify;serial;perf | esptool;perf_probe | 25 |
| 9 | B-03 | 坏板 | P0 | 故障板;强制 App 槽包含坏字节 | 写实际镜像;读回比较 | 若镜像字节不可写则 verify 失败;工具换槽或拒绝;不 brick | 失败可定位到地址;设备仍可进下载模式;报告不报成功 | verify;scan;report | esptool;provision.py | 25 |
| 10 | B-04 | 坏板 | P0 | 故障板;config 一个槽含坏扇区 | 写 config 多副本;复位 | 跳过坏槽;至少一个副本有效;联网 | serial 显示有效 seq;报告记录 skipped 槽;App hash 不变 | scan;serial;report | esptool;provision.py | 20 |
| 11 | B-05 | 坏板 | P1 | 故障板;merged 镜像 | 写 merged image(对照) | 预期失败或高风险;工具默认禁止 | 记录失败地址/错误;后续流程仍走分段 | verify 日志;report | esptool | 15 |
| 12 | B-06 | 坏板 | P1 | 故障板;疑似间歇坏字节 | 同一扇区扫描 3 次;不同温度/供电 | 标记 SUSPECT;隔离;不用于 App | 3 次结果一致或明确记录间歇;SUSPECT 不进 App 槽 | scan.json | esptool;provision.py | 30 |
| 13 | B-07 | 坏板 | P2 | 故障板;全片备份 | 全片扫描 + 恢复 | 得到全片地图;恢复关键区;不丢数据 | 恢复后关键区 verify OK;时间记录 | scan.json;backup hash | esptool | 60 |
| 14 | O-01 | OTA | P1 | OTA-ready;Bootloader rollback | 写 ota_0;切换;复位 | 新版本启动;分区日志正确 | serial 显示 ota_0;版本正确;联网 | serial;otatool | otatool.py;perf_probe | 30 |
| 15 | O-02 | OTA | P1 | OTA-ready;当前槽有效 | 写损坏镜像/错误 SHA;复位 | Bootloader 拒绝;旧槽仍启动 | 旧版本启动;无 brick;serial 有拒绝原因 | serial | otatool.py;esptool | 20 |
| 16 | O-03 | OTA | P1 | OTA-ready;USB 继电器 | OTA 写入 25/50/75% 时断电;恢复 | 至少一个槽可启动;无需整片擦 | 3 个断点均能启动;版本/分区符合预期 | serial;relay log | otatool.py;relay | 45 |
| 17 | O-04 | OTA | P1 | OTA-ready;目标槽含坏区 | OTA 到坏槽;复位 | 安全失败;旧槽不受影响 | 旧版本启动;无 brick;报告记录坏槽 | serial;scan | otatool.py;esptool | 25 |
| 18 | O-05 | OTA | P2 | 启用 anti-rollback | OTA 降级;复位 | 按策略拒绝或接受;不 brick | 策略与日志一致;设备可启动 | serial | otatool.py | 20 |
| 19 | H-01 | 热插拔 | P0 | 1 块板;驱动已装 | 插拔 20 次;记录发现时间 | 20/20 发现;P95<=2 s | 无漏检;无端口残留;无错板 | discovery.json | serialport;provision.py | 20 |
| 20 | H-02 | 热插拔 | P0 | 2 块板同时插入 | 按 MAC 选择;执行 patch/verify | 0 次错板;端口/MAC 正确 | 两块设备报告 MAC 与操作一致 | report | serialport;provision.py | 20 |
| 21 | H-03 | 热插拔 | P1 | 写入进行中 | 拔掉 USB | 报错;设备可恢复;不报成功 | 错误码明确;重插后可进下载模式 | log;report | provision.py | 15 |
| 22 | H-04 | 热插拔 | P1 | 扫描进行中 | 拔掉 USB | 报错;备份可恢复;不半写成功 | 重插后恢复;关键区 verify OK | log;backup | provision.py | 20 |
| 23 | H-05 | 热插拔 | P1 | 串口监视器占用端口 | 执行 provisioning | 明确端口占用;不挂死 | 错误码/提示;进程退出 | log | provision.py;espflash monitor | 10 |
| 24 | H-06 | 热插拔 | P0 | 错固件/错芯片 | 选择不兼容 manifest | 写入前拒绝;设备不变 | App hash 前后一致;错误码 3 | report | provision.py | 10 |
| 25 | P-01 | 断电 | P0 | 健康板/坏板;可恢复 | App 写入 50% 断电;上电;重刷 | 可进下载模式;重刷后启动;不 brick | BOOT 恢复;verify OK;serial live | serial;verify | esptool;relay | 20 |
| 26 | P-02 | 断电 | P0 | config 已有一个有效副本 | config 写入时断电;上电 | 旧副本有效;启动 | serial 显示旧 seq;联网正常 | serial | esptool;relay | 15 |
| 27 | P-03 | 断电 | P1 | 分区表迁移中 | 分区表写入时断电;上电;重刷 | BOOT 恢复;重刷表/App;不 brick | 可进下载模式;重刷后启动 | serial;verify | esptool;relay | 25 |
| 28 | P-04 | 断电 | P2 | Bootloader 更新中(最高风险) | Bootloader 写入时断电;上电;BOOT 恢复 | 可恢复;不 permanent brick | BOOT 可进下载;重刷后启动 | serial;verify | esptool;relay | 30 |
| 29 | P-05 | 断电 | P2 | 扫描/恢复中 | 拔 USB/断电;恢复 | 备份可用;关键区不丢 | 关键区 verify OK;无半写成功 | backup hash | esptool | 30 |
| 30 | S-01 | 安全 | P0 | 正常 provision | 检查日志、报告、命令行历史 | 无密码明文;只有 SSID/hash/seq | grep 不到密码;报告字段合规 | grep;report | provision.py | 10 |
| 31 | S-02 | 安全 | P1 | Secure Boot/加密板(如有) | espefuse summary;尝试未签名 patch | 检测 eFuse;拒绝未签名/未加密 patch | 工具退出码 10;设备不变 | espefuse 输出;report | espefuse;espsecure | 20 |
| 32 | S-03 | 安全 | P1 | 篡改 manifest/App | 校验 SHA-256 后烧录 | 拒绝烧录 | 错误码 3;设备不变 | report | provision.py | 10 |
| 33 | S-04 | 安全 | P2 | 伪造 VID/PID 设备 | 主动探测 chip/MAC/Flash | 识别不匹配;拒绝 | 不写入;报告记录 | report | serialport;esptool | 20 |
| 34 | R-01 | 回归 | P0 | host 环境 | pytest 全部 host tests | 100% 通过 | 0 failed;覆盖 config/分区/manifest/选择逻辑 | JUnit/HTML | pytest | 10 |
| 35 | R-02 | 回归 | P1 | 硬件在环 | 20 次循环(N/B/H 子集) | 首次通过率>=95%;0 brick;0 错板 | 统计达标;失败可定位 | summary.json | pytest;provision.py | 120 |
| 36 | R-03 | 回归 | P0 | 锁定工具版本 | 重复执行同一命令 3 次 | 同输入同命令/同结果 | 版本/哈希/输出一致 | versions.txt;report | all | 15 |
| 37 | R-04 | 回归 | P1 | 报告 schema | 用 jsonschema 校验 result/scan/manifest | 全部通过 | 0 schema error | schema 校验日志 | pytest;jsonschema | 10 |
| 38 | M-01 | 迁移 | P1 | 旧布局 0x70000 板 | 备份;写新 App→新表→可选 Bootloader;保留 NVS/PHY;复位 | 新布局启动;NVS/PHY 保留;config 可用 | serial live;MAC 不变;Wi-Fi 校准未丢 | serial;report | esptool;provision.py | 30 |
| 39 | M-02 | 迁移 | P0 | 旧布局板 | 尝试只 patch config | 工具拒绝并提示迁移 | 错误码 3/提示明确;设备不变 | report | provision.py | 10 |