重庆网站建设要点,WordPress做漫画网站,室内设计说明,三五互联网站管理登录网址本文描述单元测试的概念#xff0c;以及Test Harness建立的方法和简单的单元测试过程。 文章目录1 单元测试1.1 场景举例1.2 简单的测试方法2 Test Harness建立2.1 模型配置2.2 创建Test Harness3 总结1 单元测试
单元测试#xff0c;简单来说就是在Simulink模型中只测试一小…本文描述单元测试的概念以及Test Harness建立的方法和简单的单元测试过程。
文章目录1 单元测试1.1 场景举例1.2 简单的测试方法2 Test Harness建立2.1 模型配置2.2 创建Test Harness3 总结1 单元测试
单元测试简单来说就是在Simulink模型中只测试一小部分单元的功能。关于单元测试的概念网上有很多资料了这里不再赘述。博主从实际工作经验的角度来谈谈单元测试的价值。
1.1 场景举例
举个简单的例子某个工程师需要设计一个逻辑当毫米波雷达跟踪的目标的置信度大于等于90时认为该目标是有效目标。于是该工程师设计模型如下 工程师不小心把判断条件写成大于号而不是大于等于号。这就导致了置信度为90的目标全部被视为Invalid从而影响了后面一大片的算法丢失了重要的输入信息。如果没有单元测试这个问题就会被带到开发流程的后期。例如该模型生成代码、编译集成、刷到车上以后实车测试的时候发现后面的功能状态机一直不激活或者控制信号一直不激活。然后再回头一点点往前撸信号查找半天才定位到模型中的这个小bug。
这种情况在工作中时常发生而且并不能因此责怪工程师的水平不行因为人总会犯错误避免不了“写bug”这种情况。因此需要从流程体系的角度来尽可能提早发现设计问题。单元测试就可以做到这样的保障譬如给上图这一小部分单元输入一个数值为90的Confidence信号通过模型仿真发现输出竟然是False就可以快速地定位这个缺陷尽早地修复他。
1.2 简单的测试方法
既然知道了要在模型中先测试一下不了解Test Harness的人可能会这么做。把已有的模型改造一下把inport和outport端口去掉给他几个输入再用Scope或者disp模块看看输出对不对。模型改造成如下所示。 仿真后可以看到disp中的结果。这么做确实看到了输出的结果发现了输入的置信度为90时输出的是0。但是这样操作模型会有很多问题
为了仿真改掉了原有的模型测完了还得改回去测试用例不方便保留下来以后复测的时候还得手动操作一番如果想要多个不同的测试输入得把输入改来改去不好切换
针对这些问题可以直接使用Simulink Test工具箱里的Test Harness为设计专属的单元测试环境引用原来模型的某个子系统或者整个模型的算法。后文会用一个例子来说明搭建Test Harness的过程然后直观地看到他的好处。
2 Test Harness建立
这一节用以前的一篇博客搭建的模型来演示一下Test Harness的建立过程并且通过简单的输入进行仿真。
2.1 模型配置
1首先打开需要测试的模型这里用以前博主做的一个模型来演示《Simulink建模LKA系统功能状态机建模》。 2在模型设置里需要设置为离散并且仿真步长设置为和实际控制器中的调度周期一致 这样的话模型就配置完毕了。
2.2 创建Test Harness
创建Test Harness有两种做法为整个slx模型创建或者为模型中的某个子系统创建。
博主比较倾向于后者因为单元更小一点可以聚焦于这部分的功能进行测试。即使是想测试整个模型也可以将整个模型的最上层打包成一个大型的子系统进行测试。后文就以顶层的子系统LKA_StateMachine为例来创建TestHarness。
1右键点击这个子系统选中Create for XXX 2在界面中定一个名字企鹅定好输入输出的形式 这里博主选择了输入为Signal Builder因为用的比较顺手也可以选择From Workspace导入外部数据或者Test Sequence等等。Signal Builder的用法参照《仿真与测试通过Signal Builder模块生成输入信号》。
另外如果勾选了Save test harness extern选项后会生成一个用来保存harness模型的外部文件否则生成的harness会依附于当前的模型。博主习惯后者减少一些文件的管理。
3点击OK后生成了一个Harness模型按照之前的选择配置了输入为Signal Builder引用了原模型的子系统作为中间算法 这样的话就不需要对原来的模型进行改造也能进行单元测试。
4打开Signal Builder设计一个简单的测试用例输入 测试用例输入表示3s时开关打开1-5s时车速从0加到80。然后通过信号log可以看到输出的LKA_Status是否符合该输入的预期。 这样就完成了一个Test Harness的创建及一个简单的单元测试。这个测试环境可以和
3 总结
本文描述单元测试的概念以及Test Harness建立的方法和简单的单元测试过程。本文只是一个简单的单元测试还没有发挥出Test Harness的更多功能。Test Harness配合Test Manager和Design Verify可以搭建一套成体系的测试方法。
返回个人博客总目录