网站首页 > 教程文章 正文
一、MIL测试的概念
MIL测试就是模型在环测试,通过纯软件仿真的形式,主要是验证模型功能的正确性,是否满足设计的功能需求,尽早发现问题。同时,只有保证了MBD阶段建模的正确性,才能保证在此基础上生成的代码的正确,为后续的代码质量提供基础。MIL测试,指定输入和期望结果,将仿真结果和期望结果进行比对,根据判定标准验证模型是否正确。除此之外还需要做模型覆盖率度量,在MIL单元测试,需要满足100%的覆盖率:Statement Coverage(语句覆盖)、Branch Coverage(分支覆盖)、Modified Condition/Decision Coverage(修正判定条件覆盖)。
二、MIL测试的优势
1、 能够脱离硬件载体进行测试,无需等待硬件变更、开发完成。
2、 各工程师针对自己的模块进行测试,无需等待所有的模块开发完成进行测试,满足尽早测试的测试要求。
3、 在测试层级上主要是针对代码层级的测试,测试接口以及功能,以及代码的规范性等等,能够发现更多的细节问题。
4、 方便评价控制模型的整体测试的测试覆盖度。
5、 方便开发及测试团队对于模型的评审。
6、 降低了测试成本,越早发现问题,修复问题的成本越低,同时也提高了测试效率,让更多的问题在尽可能早的开发过程中发现。
三、MIL测试的类型
MIL单元测试
主要针对功能模块中子模块进行测试,单元测试的层级是最小不可划分的颗粒度。单元测试主要是针对输入的边界值进行测试,观察输出的结果,并设计测试用例,满足100%的测试覆盖率。
单元测试通过设定输入并给出期望的输出,测试时将模型输入设定的输入值,观测模型的输出值是否和期望值保持一致,判定模型是否有效。
具体测试过程如下:
- 软件测试需求分析
- 根据需求/经验/错误推导等方法设计测试用例:测试用例规范应包括以下内容:保证软件需求与测试用例的内容一致性与追溯性;根据软件需求确定输入和输出,并确定其取值范围;通过测试用例设计方法确定输入值;清晰的测试步骤,满足可重复测试;明确测试结果及评价方法;
- 执行测试将设定的输入值输入模型,记录模型执行结果。
- 测试结果判定结合判定标准,将执行结果和期望结果进行对比,满足判定标准则认为通过,不满足则未通过。根据测试结果,形成测试报告。
MIL集成测试
主要针对软件的需求进行测试,并测试接口的功能,同时还有考虑模块时间上的调度。
集成测试一般为子功能模型集成后的模型,实现具体的需求功能。直接与被控对象进行联合测试,在给定输入条件的情况下,监控输出信号,判定输出结果的正确性。测试系统需要在整车环境下测试控制模型的输出特性,因此需要建立被控对象,被控对象可以自己建立也可以通过第三方软件集成到测试环境中来。
- 测试需求解析
- 设计测试用例设计
- 建立测试环境
- 执行测试将设定的输入值和时间输入模型(考虑不同模块之间的时间调度问题),记录模型执行结果。
- 测试结果判定结合判定标准,将执行结果和期望结果进行对比,满足判定标准则认为通过,不满足则未通过。根据测试结果,形成测试报告。
四、功能安全ISO26262针对MIL测试的要求
如果开发的项目有功能安全要求,针对MIL测试,可以依据ISO26262的标准进行,根据功能安全目标的等级ASIL,选择软件单元测试方法、单元测试用例导出方法、结构覆盖度度量方法。
- 软件单元测试方法:基于需求的测试、接口测试、故障注入测试、背靠背测试;
- 软件单元测试用例的导出方法:需求分析、等价类、边界值、错误推导;
- 软件单元层面的结构覆盖度度量:语句覆盖率、分支覆盖率、修正判定条件覆盖;
- 软件集成测试方法:基于需求的测试、接口测试、故障注入测试、背靠背测试;
- 软件集成测试用例的导出方法:需求分析、等价类、边界值、错误推导;
- 软件架构层的结构覆盖度度量:函数覆盖率、调用覆盖率;
五、MIL测试工具
MIL测试工具一般个人推荐采用MBD的开发环境作为测试环境即可,如果需要进行自动化测试,可以考虑第三方的自动化测试软件。
六、MIL测试工程师的基本要求
通过网上随机寻找一个MIL测试工程师的招聘要求,谈谈MIL测试工程师所需要具备的基本技能。
- 岗位职责1:制定测试计划和测试策略,主导整个测试的进程,并且能够协调需求、开发、测试资源,这个岗位对工程师有一定的团队管理要求。
- 岗位职责2:需求管理与变更,主要侧重对于开发及测试的流程掌握的很好,能够与整个开发部分进行协调沟通。
- 岗位职责3:掌握驱动模型的搭建,测试环境的集成,该点主要是要求测试工程师有建模能力。这个是测试工程师基本要求。
- 岗位职责4:也是测试工程师的基本要求
- 岗位职责5:测试覆盖率提升和测试用例补充,这个是最难的,测试覆盖率评价方法是什么,如何评价,还有用例的补充,常规的用例都会写,主要是一些经验分析出的用例,错误推导导出的用例,对项目经验有一定的要求。
结合岗位要求,谈谈对MIL测试工程师的一些看法,MIL测试是代码层级的,一般是由MBD工程师自己完成的,软件团队leader以及相关软件需求工程师进行审核的,专门做MIL的工程师相对HIL来说是比较少的,个人感觉能做MIL的测试,也差不多可以直接去开发模型了;该岗位要求了一些额外的技能,比如CAN总线的分析能力、HIL测试能力等等,因此MIL测试是一个比较尴尬的存在,上有控制器开发团队所必须配备的HIL测试工程师,下有MBD软件开发工程师(以上仅为个人观点)。
猜你喜欢
- 2025-01-24 代码覆盖率VS测试覆盖率(代码覆盖率检查)
- 2025-01-24 嵌入式开发:ARM Cortex-M微控制器的5种调试技巧
- 2025-01-24 从0到1构建基于自身业务的前端工具库
- 2025-01-24 提升代码质量的利器——代码覆盖率(技术必读)
- 2025-01-24 Java关于代码质量度量和分析的一些总结
- 2025-01-24 白盒测试怎么做(白盒测试的基本步骤)
- 2025-01-24 代码的圈复杂度(代码圈复杂度指什么)
- 2025-01-24 软件外包项目的功能测试(软件测试外包都是短期的吗)
- 2025-01-24 Python 标准库中鲜为人知的宝藏 | Node.js 22.8.0 发布
- 2025-01-24 1次订单系统迁移,头发都快掉完了...
- 05-11阿里开源MySQL中间件Canal快速入门
- 05-11MyBatis插件开发实战:手写一个分页插件
- 05-11Flask数据库——SQLAlchemy
- 05-11MySQL 到 Hazelcast Cloud 实时数据同步实操分享
- 05-11sqlmap 详解
- 05-11一篇文章让你学会Elasticsearch中的查询
- 05-11Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!
- 05-11Spring Boot 实现 MySQL 读写分离技术
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)