5.6 KiB
5.6 KiB
自然语言转 CAN 控制指令测试报告
1. 测试结论
| 项目 | 结果 |
|---|---|
| 测试日期 | 2026-08-25 |
| pytest 测试入口 | 2 |
| 生成式组合用例 | 1133 |
| 定向 CAN0/CAN1 组合用例 | 6 |
| 实际执行子用例 | 1139 |
| 通过 | 1139 |
| 失败 | 0 |
| 跳过 | 0 |
| 通过率 | 100% |
| 执行耗时 | 35.42 s |
**结论:**当前本地规则能够将本次覆盖的自然语言控制指令正确解析为 CAN0/CAN1 语义控制指令;跨通道组合中,副驾座椅指令保持在 CAN0,主驾座椅、空调、灯光、车窗、门锁和遮阳帘等指令保持在 CAN1。白名单外指令未生成 CAN 控制流。
2. 测试方式
- 解析器:本地规则(
provider=local) - 执行模式:
dry_run - 硬件执行:关闭
- 真实 CAN 报文下发:未进行
- 测试入口:
tests/integration/test_natural_can_command_combinations.py - 机器可执行用例:
tests/fixtures/natural_can_command_combination_suite.json - 完整逐条用例:
docs/testing/自然语言转CAN组合测试用例.csv
执行命令:
PYTHONPATH=src:domains/seat/src .venv/bin/python -m pytest -q tests/integration/test_natural_can_command_combinations.py
原始结果:
2 passed, 2 warnings, 1139 subtests passed in 35.42s
2 个警告均为 jsonschema.RefResolver 弃用提示,不影响本次解析结果。
3. 1133 条生成式用例分布
3.1 按组合类型
| 用例类型 | 数量 | 说明 |
|---|---|---|
| atomic | 177 | 单条原子指令 |
| pairwise | 300 | 两两组合 |
| pairwise_separator_variant | 300 | 两两组合的不同分隔方式 |
| three_command | 84 | 三指令组合 |
| four_command | 126 | 四指令组合 |
| cross_can0_can1 | 120 | CAN0/CAN1 跨通道组合 |
| multi_command_scene | 10 | 常用多指令场景 |
| safety_rejection | 16 | 白名单外和不安全输入拒绝 |
| 合计 | 1133 |
3.2 按 CAN 通道
| 预期通道 | 数量 | 说明 |
|---|---|---|
| CAN0 | 13 | 副驾座椅单通道控制 |
| CAN1 | 899 | 车身、空调、主驾座椅、灯光等控制 |
| CAN0 + CAN1 | 205 | 副驾座椅与车身功能组合控制 |
| none | 16 | 安全拒绝,不应生成控制指令 |
| 合计 | 1133 |
4. 代表性解析结果
| 自然语言输入 | 通道 | 预期 CAN 语义控制指令/操作 | 结果 |
|---|---|---|---|
| 后排车门上锁 | CAN1 | door rear lock |
通过 |
| 打开左前车窗 | CAN1 | window front-left open |
通过 |
| 副驾驶座椅加热开到2档 | CAN0 | seat.set_heating(state=on, level=2) |
通过 |
| 后排车门上锁,打开左前车窗,副驾驶座椅加热开到2档 | CAN0 + CAN1 | CAN1: door rear lock; CAN1: window front-left open; CAN0: seat.set_heating(state=on, level=2) |
通过 |
| 开启木马模式并打开氛围灯 | CAN0 + CAN1 | CAN0: seat.start_dynamic_mode(mode_id=1); CAN1: light ambient on |
通过 |
| 开启动态摇篮模式,空调24度,打开遮阳帘 | CAN0 + CAN1 | CAN0: seat.start_dynamic_mode(mode_id=2); CAN1: ac temp driver 24; CAN1: shade open |
通过 |
| 副驾座椅前后调到20%、坐盆调到30%、靠背调到40%、腿托调到50%,空调风量3档,关闭全部车窗 | CAN0 + CAN1 | CAN0: 四轴绝对位置 20/30/40/50; CAN1: ac fan 3; CAN1: window all close |
通过 |
| 副驾靠背向后移动15%,主驾温度设为25度,遮阳帘打开 | CAN0 + CAN1 | CAN0: 靠背相对后移 15%; CAN1: ac temp driver 25; CAN1: shade open |
通过 |
| 主驾座椅通风4档 | none | 白名单外,不生成 CAN 指令 | 通过 |
| 主驾进入零重力模式 | none | 未验证能力,不生成 CAN 指令 | 通过 |
5. 6 条新增定向 CAN0/CAN1 用例
| # | 自然语言 | CAN0 结果 | CAN1 结果 |
|---|---|---|---|
| 1 | 把副驾座椅水平位置调到35%,空调温度设置为24度,打开氛围灯 | 水平绝对位置 35% | ac temp driver 24; light ambient on |
| 2 | 副驾坐盆向上调整10%,关闭后排车窗,空调风量2档 | 坐盆相对上调 10% | window rear close; ac fan 2 |
| 3 | 开启木马模式并打开氛围灯 | 木马模式 | light ambient on |
| 4 | 开启动态摇篮模式,空调24度,打开遮阳帘 | 摇篮模式 | ac temp driver 24; shade open |
| 5 | 副驾座椅前后调到20%、坐盆调到30%、靠背调到40%、腿托调到50%,空调风量3档,关闭全部车窗 | 四轴绝对位置 | ac fan 3; window all close |
| 6 | 副驾靠背向后移动15%,主驾温度设为25度,遮阳帘打开 | 靠背相对后移 15% | ac temp driver 25; shade open |
以上 6 条用例全部通过。
6. 覆盖能力
- CAN0:副驾座椅加热、通风、绝对位置、相对位置、木马模式和摇篮模式。
- CAN1:门锁、车窗、空调、风口、主驾座椅、室内灯、阅读灯、氛围灯和遮阳帘。
- 组合解析:两指令、三指令、四指令、场景化多指令以及 CAN0/CAN1 跨通道组合。
- 位置语义:主驾、副驾、左前、右前、左后、右后、前排、后排。
- 安全约束:越界档位、未验证能力和白名单外目标不生成 CAN 控制流。
7. 范围和限制
- 本报告验证的是“自然语言 → CAN 语义控制指令/操作”解析层。
- 本次使用
dry_run,未向真实 CAN0/CAN1 总线或 MQTT Broker 下发报文。 - 通过本报告不等于实车执行器、USB-CAN 适配器、MQTT 转发和 ECU 物理动作已完成端到端验证。
- 如需验证真实执行,应单独进行有线 CAN 和无线 MQTT 台架测试,并记录原始报文、状态回馈和物理动作。