Files
qianbian/docs/field-test-plan.md
T

4.9 KiB
Raw Blame History

软硬件全链路测试计划(设备到场后执行)

目的:验证三线逆向结论在真机上的正确性,完成 G3/G4 的实机门禁。 前置:设备充电开机;本机蓝牙可用;tools/check_env.py 通过。 执行方式:.venv/bin/python tools/field_test.py [--mac AA:BB:..](引导式,自动+目视确认)。 危险操作仅 --ota 分支,默认跳过。

阶段 0 · 预检(自动)

# 检查 通过标准
0.1 check_env.py 全 OK
0.2 蓝牙适配器 ppclock scan 返回 ≥0 设备不报错
0.3 固件样本 ppclock ota app/firmware-PP_da14585_4.2_CH.img 预检 ok(不烧录)

阶段 1 · 发现与识别(自动)

# 检查 通过标准
1.1 scan 发现 NRF-XXXXXX 设备,记录 MAC
1.2 activate --show-id 收到 14 hex 设备 ID;本地反解 MAC 与 1.1 的 MAC 对比(字节序验证 → 回填 DECISIONS.md)
1.3 断线重连 CLI 连续两次命令均成功

阶段 2 · 激活(自动+目视)

# 检查 通过标准
2.1 activate --auto ok=true,code 与 keygen 一致;屏上激活提示(若有)消失
2.2 错误码激活 发 6 字节全 0 码:无惩罚、后续命令仍可用(验证固件不门禁结论 §4.3)

阶段 3 · 时钟/模式族(目视)

# 命令 屏显预期
3.1 time 屏显时间与手机/电脑一致
3.2 mode clock1/2/3 三种时钟版式切换
3.3 mode calendar1/2/3 三种日历版式切换
3.4 toggle hour_format 12/24h 切换
3.5 toggle clock_color 时钟颜色变化
3.6 toggle invert 反色
3.7 toggle font 字体变化
3.8 toggle rotate180 旋转 180°(恢复再按一次)
3.9 mode tricolor / mode mono 三色/黑白切换
3.10 clear 全屏刷新

阶段 4 · 图像(目视)

# 命令 屏显预期
4.1 image <棋盘+红块测试图> --slot 0 → mode image0 棋盘清晰、红块为红
4.2 六算法各传一张 抖动风格差异可见(Floyd/Atkinson/Bayer/Stucki/Jarvis/none)
4.3 image --mono 无红色通道
4.4 image --size 400x180(小图 cod=04 路径) 小图正常
4.5 亮度/对比度/饱和度/旋转参数 效果可见
4.6 image --slot 1..3 + mode image1..3 多槽位(注意:固件 EA0x 为 no-op 风险 → 记录实际行为)

阶段 5 · 模板(目视)

6 模板(schedule/businesscard/memo/course/qrcode/custom)各传一次:版式正确、中文无方块、【…】 字段为红。

阶段 6 · 倒计时(目视)

# 命令 预期
6.1 countdown 2026-12-31 --prefix 目标 时钟界面显示前缀+天数
6.2 countdown --mode calendar 2026-12-31 --prefix 中考 日历界面
6.3 countdown --show-calendar --prefix test upload_rili 序列
6.4 countdown --off 倒计时关闭

阶段 7 · 其他命令(含固件 no-op 验证)

# 命令 预期
7.1 sleep --on --start 23 --end 7 时段内不刷新(次晨验证);sleep --off 恢复
7.2 parking 13800138000 停车牌显示
7.3 lut 0x05 / lut 0x15 红/黑深度变化
7.4 rotation --count 4、rotation --interval 5 验证固件 no-op 结论:预期无效果(firmware-analysis §3.3)
7.5 wifi SSID PASS 验证 no-op:预期无效果
7.6 raw e2 / raw 01 --channel epd 提交/刷新

阶段 8 · 异常与契约(自动)

# 检查 通过标准
8.1 错误参数 --json 输出 {"ok":false,...},退出码 1
8.2 设备关机中途执行 退出码 2,error 含连接失败
8.3 batch examples/field_test.jsonl 单连接全序执行,results 逐行 ok

阶段 9 · 固件可控(高危,默认跳过,--ota 才执行)

# 步骤 预案
9.1 field_test.py 自动制作仅改版本串镜像(V:PP_da14585_4.2→V:PP_da14585_TST,等长),fw_pack 重打包,CRC 验证 本地完成,不触机
9.2 ppclock --mac X ota /tmp/fw_tst.img --yes 观察块进度 302 块全 ok
9.3 设备重启后 scan + time 设备复活且可用
9.4 回滚 ota 原镜像 --yes 刷回
9.5 若 9.2 失败/变砖 记录 SERV_STATUS 错误码;设备有备 bank(0x38000 产品头机制,firmware-analysis §5),断电重连试刷原镜像

结果回填

  • 每步实际结果记于本文件"实测"列(执行时生成 field-test-result.md)
  • 与协议不符处 → 改 docs/protocol.md + 测试向量 + DECISIONS.md
  • 全过 → PROGRESS.md 将 G3/G4 从"协议级/工具级"升级为"实机验证",Plan Task 9 勾掉