场景三 · 测试用例自动生成
业务背景
ASPICE SWE.4 要求:每条软件需求都有对应的测试用例,且测试方法(等价类划分、边界值分析、错误猜测、故障注入等)需符合标准。
实际项目中的问题:
- 从需求到 CAPL 测试脚本的转化高度依赖资深测试工程师的经验
- 每条需求平均耗费 0.5–1 人天
- 不同工程师的写法风格不一致,给后续维护带来困难
演示能力
平台从软件需求规格中抽取需求条目,再从 CAN 通信矩阵(DBC 文件)和架构文档中抽取信号定义:
- 自动建立"需求 ↔ 信号"映射,匹配不上的需求显式标记为
NO_SIGNAL(暴露上游接口缺口) - 按照 ASPICE SWE.4 规范,用
automotive-process-analyzerskill 挑选合适的派生技术(等价类 EP / 边界值 BVA / 状态转换 / 结构性覆盖) - 输出可在 Vector CANoe 仿真环境中直接运行的 CAPL 脚本:
- 测试模块(Test Module) — 组织 testcase,人工手写 + skill 模板
- 仿真节点(Simulation Node) —
canoe-test-automation自动产出,模拟物理 ECU 的信号响应
实际发给 Agent 的提示词
演示账号 testcasegenerator 在 Session DEMO-C CAPL 测试用例 里真实发出的指令。这条提示词最关键的是:明确区分"仿真节点 CAPL(工具自动产出)"和"Test Module CAPL(Agent 按模板手写)",避免 Agent 误用 skill:
这条提示词里最关键的约束是"DBC 中真实存在的信号名才能写进 CAPL"——这是防止大模型对着需求虚构信号名(典型幻觉)。演示 session 最终只产出了 6 条 testcase(而不是 8 条),就是因为 DBC 里真实存在的灯控信号只有 HeadLight / LightSwitch 两个。
实测数据
| 维度 | 数值 |
|---|---|
| 灯控域软件需求 | 49 条(ELS-1 ~ ELS-49) |
| DBC 真实灯控信号 | 2 个(HeadLight LightCtrl 0x268 / LightSwitch LightSwitch 0x210) |
| 完成"需求 → 信号"映射 | 3 条 MAPPED(ELS-14 / ELS-16 / ELS-18)+ 46 条 NO_SIGNAL(暴露上游接口缺口) |
| 生成的 CAPL 文件 | 2 份(ABZLightControl_TestModule.can 13.5 KB / simulation_node.can 8.3 KB) |
| 派生的测试用例 | 6 个 testcase(TC-1 ~ TC-6,全部有源需求 ID 可追溯) |
| 覆盖的派生技术 | 4 种:等价类划分 (EP) · 边界值分析 (BVA) · 状态转换 · 结构性覆盖 |
Agent 产出的自包含 HTML 看板(C-test-coverage.html):信号匹配率、每需求平均 testcase 数、DBC 信号使用率三个 KPI,下面是"需求 × 信号覆盖率热力图"——深蓝表示有 testcase 覆盖,灰色表示 NO_SIGNAL。

需求 × 信号覆盖率热力图(放大视图):ELS-14/16/18 三条需求完美映射到 DBC 里真实存在的 HeadLight / LightSwitch 两个信号;其余 17 条代表性需求(ELS-29 灯光亮度 100%、ELS-42 欠压调光、ELS-39 刹车灯…)因为 DBC 里没有对应信号全部标成 NO_SIGNAL。

自动生成的 CAPL 测试脚本(ABZLightControl_TestModule.can 首 110 行):包含注释头、6 条 testcase 清单、全局变量定义、MainTest 入口、TC-1 完整实现(Setup / Stimulus / Check / Assert / Log 五段式)。

6 条 testcase ↔ SWE.4 派生技术映射表:每条 testcase 都能溯源到 ELS 需求 ID、DBC 信号名和对应的 ASPICE SWE.4 派生技术。一张表就把"为什么写了这 6 条、每条覆盖什么场景"说清楚。

客户价值
对测试团队的直接收益:
- 每条 testcase 从 0.5–1 人天压缩到 10 分钟级
- 输出格式统一、命名规范一致(
testcase_<req_id>_<场景>),工程师只需 review 而无需从零编写 - 把"哪些需求当前没有信号可测试"这种隐藏的接口缺口显式呈现(46 条 NO_SIGNAL),反向驱动需求和架构补全
- 强约束:DBC 里不存在的信号名不会被虚构,避免了大模型写 CAPL 的典型幻觉
交付物
| 类别 | 文件 |
|---|---|
| 报告文档 | C-test-cases-overview.docx(40 KB) |
| 可视化看板 | C-test-coverage.html(20 KB) |
| 过程工件 | swe4-test-specification.md / requirement-signal-mapping.md / architecture-signal-definitions.md / dbc-signal-list.md / abz-requirements-extraction.md |
| CAPL 脚本 | 2 份(ABZLightControl_TestModule.can 测试模块 + simulation_node.can 仿真节点) |