关于 testing-simulink-models
面向工程师和 Agent 的 Simulink 模型测试技能,涵盖快速 Gherkin 检查和持久化、关联需求的测试,并提供覆盖率与执行流程。
主要功能
- 01快速 Gherkin 验证
- 02持久化 Simulink Test 用例
- 03关联需求编写测试
- 04决策覆盖率工作流
- 05测试执行审批流程
适用场景
- 01按预期行为检查缺陷修复
- 02为模型创建回归测试
- 03根据需求或规格编写测试
- 04测量决策覆盖率
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ matlab/ simulink-agentic-toolkit --skill testing-simulink-models安装后在 Claude Code 中输入/testing-simulink-models确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.yamlassets/test-config-template.mdtest-structure-template.mdreferences/assessment-format.mdgherkin-based-fast-testing.mdsimulink-test-authoring.mdscripts/+vnv/+internal/+agentic/test_create.ptest_edit.ptest_read.ptest_run.pscripts/+vnv/+internal/+agentic/+common/+format/formatError.pformatMetadata.pformatTestCase.pformatTestFile.pformatTestSuite.pscripts/+vnv/+internal/+agentic/+common/+requirements/linkRequirements.preadRequirements.pscripts/+vnv/+internal/+agentic/+helpers/AssessmentBuilder.preadResults.presolveComponent.psanitizeDescription.psetParameterOverrides.psetSimConfig.pwidenToHarnessOwner.p详细介绍
测试 Simulink 模型
需要 Simulink Test 和 R2023a 或更高版本。基于需求的入口还需要 Requirements Toolbox。覆盖率工作流还需要 Simulink Coverage。如果无法使用 Simulink Test,请使用 simulating-simulink-models 并进行手动断言。
适用场景
- 为 Simulink 模型或子系统编写通过/失败测试
- 根据需求或验收标准验证预期行为
- 创建回归测试,以发现未来可能出现的问题
- 使用结构化断言复现并验证错误修复
- 收集判定覆盖率指标
- 根据关联需求或行为规范编写持久化测试
不适用场景
- 构建或编辑模型结构 → 使用
building-simulink-models - 运行仿真以探索数据、执行扫描或进行自定义分析 → 使用
simulating-simulink-models - 查询或解析参数值 → 使用
model_query_params/model_resolve_params - 创建或编辑需求 → 使用
generate-requirement-drafts - 不编写测试而向模型信号注入故障 → 使用
inject-faults - FMEA、FHA、FTA 或其他安全分析文档 → 使用
manage-safety-analysis - 未安装 Simulink Test → 改用
simulating-simulink-models并进行手动断言
测试方法
此技能提供两种测试方法。请根据任务上下文进行选择:
Gherkin(model_test) | Simulink Test API(test_create 系列) | |
|---|---|---|
| 持久性 | 临时 — 会话结束后丢弃测试框架 | 持久 — .mldatx 文件保留在项目中 |
| 速度 | 约 3 秒(草稿模式) | 约 60 秒(完整的 Simulink Test 基础设施) |
| 可追溯性 | 无 | 完整的需求关联(通过 .slreqx) |
| 使用场景 | 错误修复、快速验证、Agent 循环 | 认证、系统化测试、正式的 V&V;也可采用行为规范 |
| 是否需要审批 | 否 | 是 — 工程师在执行前审查测试计划 |
| 覆盖率 | coverage 参数('none' 或 'decision') | 通过 test_run 选项设置 |
| 工具箱 | Simulink Test | Simulink Test(需求路径还需要 Requirements Toolbox) |
→ 进行 Gherkin 测试,请阅读 references/gherkin-based-fast-testing.md
→ 使用 Simulink Test API 编写测试(基于需求/行为规范),请阅读 references/simulink-test-authoring.md
工作流 — Gherkin(快速验证)
- 了解组件: 对目标子系统使用
model_overview和model_read,以确定输入、输出和预期行为。 - 编写
.feature文件: 按照references/gherkin-based-fast-testing.md中的语法编写 Gherkin 测试。从覆盖主要正常情况的一个场景开始。 - 运行前设置 StopTime 上限: 使用
model_query_params检查模型的 StopTime。如果它是inf(或未设置/为auto),则必须向model_test传入有限的停止时间 — 无限仿真永远不会返回,并会导致 MATLAB 挂起。选择一个足以让行为稳定下来的有限值(阶跃响应为 2–30 秒)。 - 以草稿模式运行: 使用
draft_mode='true'调用model_test,以便快速迭代(约 3 秒)。修复语法或信号错误。 - 运行完整编译: 草稿测试通过后,使用
draft_mode='false'重新运行,以针对实际编译后的模型进行验证(可发现类型/维度不匹配)。 - 扩展覆盖率: 为边界情况、故障条件和边界行为添加场景。使用
coverage='decision'找出尚未测试的分支。
工作流 — Simulink Test API(持久)
- 了解组件: 对目标子系统使用
model_overview和model_read,以识别输入、输出和预期行为。 - 提出测试计划 → 等待批准: 说明要测试什么、测试范围以及原因。工程师批准前,不要调用
test_create。 - 创建测试用例: 使用适当的入口调用
test_create——仅针对组件/模型,或基于需求(RequirementID+ReqSetPath)。将TestFile设置为工作文件夹下的绝对路径(切勿只提供文件名——由于project_path指向技能的scripts/目录,文件会被放到该目录中)。调用格式请参阅references/simulink-test-authoring.md。 - 提出测试配置 → 等待批准: 说明每个测试用例的停止时间、仿真配置、信号日志记录、评估项和参数覆盖值。工程师批准前,不要调用
test_edit。始终通过test_edit设置有限的StopTime——如果模型的 StopTime 为inf(或未设置),测试运行将永远无法返回,导致 MATLAB 挂起。选择一个足以让行为稳定下来的有限值(阶跃响应为 2–30 秒)。 - 运行并报告: 调用
test_run,并提供包含评估详情的通过/失败摘要。后续步骤由工程师决定。
防护措施
始终执行
- 编写测试前检查模型(
model_overview/model_read)——否则测试可能针对错误的输入/输出 - 报告失败时提供评估项名称、条件和信号摘要——缺少这些细节,用户无法诊断问题
- 切勿使用
StopTime=inf运行仿真或测试。 在调用任何model_test/test_run前检查 StopTime;如果为inf或未设置,先将其覆盖为有限值。无限仿真永远不会返回,会导致 MATLAB 会话挂起(在共享会话中,还会影响后续所有任务)。
切勿执行
- 猜测通过/失败标准——如果不明确,请询问用户
- 模型打开时更改 MATLAB 工作目录——这会破坏测试框架缓存
参考资料
references/gherkin-based-fast-testing.md— Gherkin 语法、草稿模式、覆盖率和 Simscape 约束references/simulink-test-authoring.md— API 手册:设置、约束、test_create入口格式、编辑/读取/运行函数签名references/assessment-format.md— LoggedSignals 和 Assessments 结构体格式assets/test-structure-template.md— 测试结构提案模板(基于需求的路径)assets/test-config-template.md— 测试配置提案模板(基于需求的路径)
版权所有 2026 The MathWorks, Inc.
评论
支持 Markdown