作者:极氪软件及电子中心 Tao,Huabin
01.
MIL 测试介绍
如果你是一名嵌入式软件工程师,且正在从事,或有意向从事基于模型的软件开发工作,那么本文也许能在模型验证方面为你提供一些思路。MIL测试,即模型在环测试,依托于系统需求,在模型层面完成软件逻辑验证。一个可靠的、高效的、标准化的MIL测试,在模型仿真中可以解决大量潜在的软件问题,缩短开发周期,保证软件质量。在实际应用中,也许你并不缺乏MIL测试的能力,但要系统、高效地推进MIL测试,可能会是一个困扰你多时的问题。现在,本文将为你提供一种思路,一步步带着你走进MIL测试,解密MIL测试,让我们考虑以下五种场景。
02.
场景一:最简单的MIL测试
假设你接收到了这样一条需求:只要条件1满足,输出真,直到条件2满足,输出假。我想你可以快速的建出如图1中的模型,但是要怎么确定你的逻辑已经满足要求了呢?大多数情况下,可以选择将模型中的Port用Source中的模块作为输入,Sink中的模块作为观测来实现,但这要求你修改原模型或者新建一个简单的测试模型。一般情况下,类似这样的需求仅作为你软件组件的一部分,被封装在Subsystem中。因此当整个组件中任意一处不能满足运行要求时,该Subsystem也不能运行,修改模型的同时也会造成不必要的模型变更,而新建简单的模型在有数据绑定参数后也显得没那么“简单“。那么是否存在一种环境,使待测的逻辑部分在测试中独立于组件,且修改输入输出端口不会引起模型变更呢?
图1 模型设计示例
03.
场景二:TestHarness
细心的你可能会发现,Simulink提供了这样一个环境——TestHarness,无论你怎么修改外部的模型,都不会影响到模型原本逻辑且独立于组件,如图2。在该环境下只要不修改Example内的逻辑,模型原本逻辑就不会产生任何变更。因此可以定制任意形式的输入和输出,如场景一中提及Source和Sink中的模块,或设计更复杂的输入逻辑。通过TestHarness测试验证减少了对原模型逻辑的影响,也避免了组件对待测对象的影响,但搭建大量的输入输出逻辑,仍使你的测试难以推进。
图2 搭建TestHarness测试
04.
场景三:TestManager
解决了模型测试环境,但测试管理的不便以及更友好的测试结果分析都促使你寻找这样一种方法——输入可以通过外部文件导入,测试结果可保存以及输入输出可视化。在不断的探索中,也许你会发现这样一种方法,采用TestManager工具。在一般的仿真测试中,你可能会更关注测试对象在给定测试输入下输出结果是否满足设计要求。在TestManager中你可以通过SYSTEM UNDER TEST指定测试对象;INPUTS提供测试输入;SIMULATION OUTPUTS配置输出结果。由EXCEL导入数据后运行仿真,并在Results and Artifacts中通过可视化工具进行结果分析,如图3。你已经可以运用Simulink提供的工具进行测试了,但很多重复性的工作,或越来越复杂的测试流程所带来的庞大的配置项,仍使你的测试过程不尽如人意。
图3 TestManager结果分析
05.
场景四:定制化测试
你开始回顾整个测试流程,并希望能找到一种更便捷、更高效的方法。测试流程大致包括明确测试对象,创建TestHarness,创建TestManager,在TestManager中指定测试对象、指定测试输入,运行测试,获得测试结果。也许你也发现,通过“sltest.harness“下的方法可实现TestHarness的创建和属性配置;通过“sltest.testmanager“下的方法可实现TestManager的管理、运行并获得测试结果。调用COM.Excel_Application服务定制测试用例,并将测试结果回写到Excel中,如图4。在充分使用脚本的情况下,你测试的中心终于又回到了用例的设计中。
图4 脚本定制化测试
06.
场景五:UI定制化测试
随着工作的累积,你使用的脚本也逐渐多起来。有时为完成一个工作需要按流程运行多个脚本,你时常忘记什么时候该运行哪个脚本。不同工程师在脚本管理上的差异,也导致其他工程师可能会不时向你索要某个脚本或解释某个脚本的用法。为改善使用者体验,加速在团队内推广,也许你会认为一个友好的操作界面是个不错的选择。Matlab GUIDE或APP DESIGNER 均可进行界面设计,如图5。根据测试流程,UI测试界面包括搭建测试、定制测试、用例选择和其他辅助板块。搭建测试主要负责搭建测试环境,将测试环境中的输入输出写入EXCEL中进行用例设计。定制测试由使用者根据需要确定结果形式及是否覆盖模型中标定参数。用例选择则根据测试环境关键参数,获取EXCEL中对应用例导入Simulink。现在你摒弃了复杂的测试操作流程,可以像其他友好的Application那样使用MIL测试工具了。
图5 UI定制化MIL测试工具
结语
本文对如何高效、定制化满足团队需求的MIL测试方法给出了一种方案,即根据系统需求设计测试用例,导入测试用例并通过仿真获得模型输出结果,最后进行结果分析判断是否满足需求。看到这儿你一定已经大致了解了什么是MIL测试,或许也已经有了不少自己的想法,此时也许你有不同的MIL测试方案,或者也计划或正在开发MIL测试工具,不管怎样,都期待你能将其付诸实践,让我们一起助力敏捷开发,打造高质量软件。