☰
测试序列编辑器
2026/10/30 2:43:50 网站建设 项目流程

测试序列编辑器

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)定义一个测试序列的基本步骤:

  1. 按"管理测试步骤"的方法添加测试步骤。

  2. 在 Step 单元格中定义输出与评估动作。

  3. 为步骤添加转移:指向 Transition 单元格并单击Add transition,在 Transition 单元格写出退出该步骤的条件,在 Next Step 下拉列表中选择目标步骤。

  4. 若需要 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(或快捷键 Ctrl+C / Ctrl+X);粘贴时右键选择Paste step,可进一步选Paste before step、Paste after step或Paste sub-step(快捷键 Ctrl+V)。

  • 重排:指向步骤,其名称左侧出现拖拽图标,按住上下拖动即可;只能在同一层次内重排,移动父步骤时其子步骤跟随移动。转移编号也可拖动重排,对应的 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++修正为a=a+1;

  • 复合赋值:a+=expr、a-=expr、a*=expr、a/=expr分别修正为a=a+expr等;

  • 求值运算符:a!=expr修正为a~=expr,!a修正为~a;

  • 字面量显式强转:例如y被定义为 single 类型时,y=1自动修正为y=single(1)。

(6)输出并查看活动步骤数据:

运行测试时,序列中当前正在执行的步骤称为活动步骤(Active Step)。开启活动步骤数据后,Test Sequence 模块会新增一个输出端口,把"当前在哪个步骤"作为信号输出。它的用途包括:在仿真数据检查器(Simulation Data Inspector)中观察步骤随时间的切换;把该信号接入 Test Assessment 模块作为触发信号;或在测试框架中作为其他块的输入。

开启方法:

  1. 从 Test Sequence 编辑器打开 Model Explorer,或从包含该模块的测试框架/模型打开 Property Inspector。

  2. 勾选Create data to monitor the active step。

  3. 把Data Type设为String或Enum(默认 String):

    1. String:输出为字符串,格式为<scenario>.<step>.<substep>,同时表明哪个场景处于活动状态。当不同场景存在同名步骤、或同一场景不同步骤存在同名子步骤时应选此项;某时间步没有活动步骤(例如步骤启用了未被激活的 Enabled Subsystem)时输出空串。

    2. Enum:输出为枚举值,格式为<Enum name>.<step name>,不含场景名;选择 Enum 后会出现Enum name参数。序列中若有重复步骤名或子步骤名,则不能使用 Enum。

  4. 单击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。

  • 活动步骤结果图可以像其他测试结果一样加入测试结果报告.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询