测试序列编辑器
测试序列编辑器1. 概念讲解测试序列编辑器Test Sequence Editor是编写 Test Sequence 模块与 Test Assessment 模块内容的图形界面。要打开它只需双击模型中的 Test Sequence 或 Test Assessment 模块。编辑器以表格化方式组织内容左侧是 Symbols 侧栏与 Scenarios 页右侧主区按行组织测试步骤每行有 Step动作、Transition转移条件、Next Step下一步、Description描述四列。一个测试序列Test Sequence由按层次排列的测试步骤Test Steps组成。步骤可以携带转移Transition定义仿真如何根据被测系统的信号在步骤之间推进步骤也可以带When 分解When decomposition其逻辑类似 if-elseif-else。指南给出了两个默认行为新建的 Test Sequence 模块默认包含两个标准转移测试步骤新建的 Test Assessment 模块默认包含一个带两个子步骤的 When 分解步骤。为什么需要这样的层次结构因为一个真实测试往往是多阶段的初始化、激励、等待、验证、收尾。把它们组织成父子步骤可以把一个长测试拆成可命名、可复用、可单独挂接需求的片段。当你需要在同一个 Test Sequence 模块里放多套测试序列时使用场景Scenario在编辑器左侧面板切换到 Scenarios 页单击Use Scenarios原有步骤与转移会被移入一个名为Scenario_1的场景页签再新增场景即可定义更多序列。场景的完整用法见第 16 讲。2. 操作步骤 / 工作流1定义一个测试序列的基本步骤按管理测试步骤的方法添加测试步骤。在 Step 单元格中定义输出与评估动作。为步骤添加转移指向 Transition 单元格并单击Add transition在 Transition 单元格写出退出该步骤的条件在 Next Step 下拉列表中选择目标步骤。若需要 When 分解步骤右键该步骤选择When decomposition步骤上会出现对应图标添加子步骤在每个子步骤的 Step 单元格中先写when运算符再写条件最后一个子步骤不要写条件充当 else 分支。2管理测试步骤添加右键已有步骤选择Add step before前插或Add step after后插要在更低层次添加子步骤右键父步骤选择Add sub-step。删除右键步骤选择Delete step。若序列只剩一个步骤则不能删除但可选择Erase last step content清空其内容。复制/剪切/粘贴右键步骤名称左侧区域选择Copy step/Cut step或快捷键 CtrlC / CtrlX粘贴时右键选择Paste step可进一步选Paste before step、Paste after step或Paste sub-step快捷键 CtrlV。重排指向步骤其名称左侧出现拖拽图标按住上下拖动即可只能在同一层次内重排移动父步骤时其子步骤跟随移动。转移编号也可拖动重排对应的 Next Step 跟随移动。改变层次右键步骤选Indent step降级为子步骤——仅当前面的步骤处于同一层次时可缩进序列第一个步骤与某个层次组的第一个步骤不能缩进右键选Outdent step升级——只有层次组的最后一个步骤可以升级。3管理输入、输出与数据对象Symbols 侧栏单击工具条上的Symbols Sidebar按钮可显示或隐藏 Symbols 侧栏。侧栏按节点组织六类符号在任意层次的测试步骤中都可访问。各类符号的添加方式如下表符号类型含义添加与设置方法Input输入数据或消息指向 Input 节点单击Add data或Add message输入名称后回车Output输出数据、消息、函数调用或触发指向 Output 节点单击Add data/Add message/Add function call/Add trigger输入名称后回车Local局部数据仅在本 Test Sequence 模块内可用指向 Local 节点单击Add data输入名称必须在第一个测试步骤中初始化Constant只读常量仅在本模块内可用指向 Constant 节点单击Add data再指向该常量名单击Edit在对话框的Constant Value栏填写值Parameter参数模块内外均可用先用 Model Explorer 在模型工作区添加参数再在侧栏 Parameter 节点单击Add data并输入同名Data Store Memory数据存储模块内外均可用先用 Model Explorer 在模型工作区添加Simulink.Signal对象或在模型中放 Data Store Memory 块再在侧栏对应节点单击Add data并输入同名要编辑或删除已有符号指向该符号名后单击Edit或Delete即可。4查找与替换编辑器工具条上的Find Replace图标可在动作、转移和描述文本中查找替换。打开后在Find what输入待查文本在Replace with输入新文本用Find Next/Find Previous定位单击Replace执行替换。注意只有在 Description 列处于展开状态时搜索才会覆盖描述文本。5自动语法修正编辑器会自动把若干 C 风格写法修正为 MATLAB 写法无需手动改写自增自减a修正为aa1复合赋值aexpr、a-expr、a*expr、a/expr分别修正为aaexpr等求值运算符a!expr修正为a~expr!a修正为~a字面量显式强转例如y被定义为 single 类型时y1自动修正为ysingle(1)。6输出并查看活动步骤数据运行测试时序列中当前正在执行的步骤称为活动步骤Active Step。开启活动步骤数据后Test Sequence 模块会新增一个输出端口把当前在哪个步骤作为信号输出。它的用途包括在仿真数据检查器Simulation Data Inspector中观察步骤随时间的切换把该信号接入 Test Assessment 模块作为触发信号或在测试框架中作为其他块的输入。开启方法从 Test Sequence 编辑器打开 Model Explorer或从包含该模块的测试框架/模型打开 Property Inspector。勾选Create data to monitor the active step。把Data Type设为String或Enum默认 StringString输出为字符串格式为scenario.step.substep同时表明哪个场景处于活动状态。当不同场景存在同名步骤、或同一场景不同步骤存在同名子步骤时应选此项某时间步没有活动步骤例如步骤启用了未被激活的 Enabled Subsystem时输出空串。Enum输出为枚举值格式为Enum name.step name不含场景名选择 Enum 后会出现Enum name参数。序列中若有重复步骤名或子步骤名则不能使用 Enum。单击Apply。查看方法运行前在测试框架中右键该活动数据输出信号选择Log Selected Signal只想画曲线时无需把信号接到任何组件。运行后在 Simulation Data Inspector 或测试管理器 Results 窗格查看枚举类型横轴为时间、纵轴为步骤字符串类型中步骤以时间块形式出现名称过长时仿真数据检查器会截断开头部分以显示步骤名空间不足时只显示能放下的步骤。若要把活动步骤输出作为其他块如 Test Assessment 模块的输入用信号线把该输出端口接到目标块输入端口即可依据活动步骤触发动作与评估。3. 示例本讲以界面与符号管理为主。下面给出打开官方示例并观察活动步骤信号的命令骨架% 打开包含 Test Sequence 模块的模型示例模型 open_system(TestSeqOutputFunctions); % 双击 Test Sequence 模块即打开测试序列编辑器 open_system(TestSeqOutputFunctions/Sine and rand); % 运行仿真随后在仿真数据检查器中观察活动步骤信号 sim(TestSeqOutputFunctions); Simulink.sdi.view;% 打开包含 Test Sequence 模块的模型示例模型 open_system(TestSeqOutputFunctions); % 双击 Test Sequence 模块即打开测试序列编辑器 open_system(TestSeqOutputFunctions/Sine and rand); % 运行仿真随后在仿真数据检查器中观察活动步骤信号 sim(TestSeqOutputFunctions); Simulink.sdi.view;4. 要点与注意事项新建 Test Sequence 与 Test Assessment 模块的默认内容不同前者是两个转移步骤后者是一个带两个子步骤的 When 分解步骤不要混用。Local 变量必须在第一个测试步骤中初始化否则运行时取值不确定Constant 必须通过编辑对话框赋值不能在步骤动作里赋值只读。Parameter 与 Data Store Memory 必须先在模型工作区Model Explorer中建好同名对象再在 Symbols 侧栏引用直接在侧栏新建是不会自动落到模型工作区的。自动语法修正只覆盖固定几类写法它替你把 C 风格转成 MATLAB 风格但不会替你检查语义错误。活动步骤输出选 String 还是 Enum 的关键判据是是否存在重名步骤有重名只能用 String无重名时 Enum 更适合后续做枚举比较。时间点没有活动步骤时输出空串这是正常现象而非错误常见于步骤内引用了未使能的 Enabled Subsystem。活动步骤结果图可以像其他测试结果一样加入测试结果报告.