【软件测试】MIL/HIL/PIL/SIL测试
V字型开发流程
引用文章:汽车行业V模型开发详解
V模型开发(V-Model Development)是一种广泛应用于汽车行业的系统开发方法。它以字母“V”形状的图表形式展示了开发过程中不同阶段之间的关系,从需求分析到系统整合和验证,再到产品发布。V模型强调需求与测试之间的关系,以确保各阶段的输出能满足客户需求。

V模型开发主要包括以下几个阶段:
需求阶段:在这个阶段,项目团队收集、分析和定义客户需求。需求文档通常以规格说明书的形式出现,包括功能需求、性能需求、接口需求等。需求阶段的产物将直接影响后续开发过程。
系统设计阶段:在这个阶段,项目团队根据需求规格说明书,对整个系统进行高层次的架构设计。设计师在此阶段确定系统的主要组成部分、功能划分和交互方式。此阶段产生的文档主要为系统架构设计文档。
子系统设计阶段:在这个阶段,项目团队将系统分解为若干子系统,并为每个子系统创建详细设计文档。这些文档描述了子系统的内部结构、功能、接口等。同时,软件和硬件设计师开始进行相应的设计工作。
模块设计与实现阶段:在这个阶段,项目团队进一步将子系统分解为模块,并编写模块级别的设计文档。软件工程师根据设计文档编写源代码,硬件工程师则进行硬件电路设计。
单元测试阶段:在完成模块设计与实现后,项目团队针对每个模块进行单元测试,以验证模块是否满足其设计要求。这个阶段产出的主要文档是单元测试计划和单元测试报告。
集成测试阶段:在这个阶段,项目团队将各个模块组合成子系统,并进行集成测试。测试人员通过执行集成测试用例检查子系统之间的接口是否正确,以及子系统的整体功能是否符合预期。此阶段产生的文档主要为集成测试计划和集成测试报告。
系统测试阶段:在这个阶段,项目团队对整个系统进行综合性能、功能、兼容性等方面的测试。测试人员需要确保系统满足客户需求,并达到规定的质量标准。此阶段产生的文档主要为系统测试计划和系统测试报告。
验证与验收阶段:在这个阶段,客户或第三方机构对整个系统进行验证和验收。根据验证和验收的结果,项目团队可能需要对产品进行相应的调整和优化。完成验证和验收后,项目团队将正式交付产品。
作为嵌入式软件工程师,在V模型开发过程中,需要关注以下阶段:
子系统设计阶段:嵌入式软件工程师需要理解子系统的功能需求和接口要求,参与子系统设计并为其创建详细设计文档。
模块设计与实现阶段:在此阶段,嵌入式软件工程师需要根据设计文档编写源代码,并确保代码符合规范、健壮、可靠和可维护。
单元测试阶段:在完成模块设计与实现后,嵌入式软件工程师需要对每个模块进行单元测试,以验证其功能正确性和性能。
集成测试阶段:在此阶段,需要确保软件与硬件之间的接口正确,并进行集成测试,以检验整个子系统的功能和性能。
系统测试阶段:在整个系统的测试过程中,嵌入式软件工程师需要密切关注软件方面的问题,快速定位和解决软件缺陷。
MBD
引用文章:https://blog.csdn.net/weixin_44182878/article/details/88721259
代码生成最大的好处是,算法的早期验证,之前NASA有研究表明,开发初期引入的bug,如果到了晚期才发现出来,那么修复这一的bug,会产生非常大的费用。所以,我们期望能够尽早的发现开发过程中引入的bug。
说一下MBD开发过程中都有哪些验证工作(verification)要做。
模型出来并且可以编译之后,首先要做建模标准检查,这个过程使用工具(比如MathWorks公司的Simulink Verification & Validation提供的model advisor)自动化的完成,检查过后,修改模型中不符合公司建模规则的项目。
接下来,就可以进行模型评审了,也就是说,评审的模型有两个前提,一是可以编译的,二是符合公司建模规则的。这两个前提可以帮助我们消除模型中的一些低级错误,避免在评审过程中有太多的时间花费在这些错误上。因为评审是建模的工程师和其他同事共同参与的活动,做到上述两个前提,也是对其他同事工作时间的一种尊重。
评审之后,建模的工程师会修改评审中发现的问题,问题多的话,一般会要求修改之后再进行“再评审”,直到在评审中不会发现大量问题。
接下来,我们可以使用Simulink Design Verifier进行模型的结构分析,借助于Simulink Design Verifier自动生成测试用例的功能,去检查结构上是否存在问题,比如是否有不合理的逻辑设计,是否有运行不到的分支等。
再往后,就可以进行模型单元级别的功能测试了。软件开发过程中,对单元测试的要求是很高的,一般会根据应用的安全性、可靠性要求,给出测试的覆盖率要求。
这个过程中工作量最大的应该是测试用例设计以及测试向量的生成。测试用例设计,我们一般会根据需求去设计测试用例,当然,也会结合模型结构设计测试用例,这样说来,这里的测试,已经包含了黑盒测试和白盒测试。有了测试用例,如何把测试用例转换为测试向量,这也是非常重要的环节。我们知道,在MBD开发过程中,代码都可以自动生成,其他环节,我们要努力做到自动化实现。我们可以使用MATLAB脚本开发一些转换工具用于将测试用例转换为测试向量,我们还可以通过脚本实现测试过程的自动化。
MIL/HIL/PIL/SIL测试
MIL、SIL、PIL、HIL是个啥,你搞懂了吗?
MIL,Model in the Loop:模型在环测试;
SIL,Software in the Loop:软件在环测试;
PIL,Processor in the Loop:处理器在环测试;
HIL,Hardware in the Loop:硬件在环测试。
MIL (Model-in-the-Loop):模型在环路中。在 MIL 测试中,系统模型(通常是软件模型)被用于测试系统的功能。这种测试方法通常在开发的早期阶段进行,以验证系统的基本功能和逻辑。
SIL (Software-in-the-Loop):软件在环路中。在 SIL 测试中,软件模型被嵌入到仿真环境中,以便测试软件的功能和性能。SIL 测试可以帮助开发人员验证软件在实际硬件上运行之前的行为。
PIL (Processor-in-the-Loop):处理器在环路中。在 PIL 测试中,处理器被嵌入到仿真环境中,以便测试处理器的功能和性能。这种测试方法可以帮助开发人员验证处理器在实际应用程序中的行为,特别是在嵌入式系统开发中常常使用。因此,PIL 测试通常涉及将处理器与仿真模型相结合,以评估处理器在特定环境下的行为和性能。这种测试方法有助于确保处理器在实际应用中能够按预期工作,并且能够与其他系统组件有效地交互。
HIL (Hardware-in-the-Loop):硬件在环路中。HIL 测试涉及将实际硬件与仿真模型相结合,以评估硬件和软件之间的交互作用。这种测试方法可以提供更接近于实际操作条件的测试环境,帮助验证系统在实际硬件上的运行情况。

这些测试方法通常在软件开发和系统集成的不同阶段使用,以确保系统能够按预期工作并达到所需的性能指标。每种测试方法都有其优势和适用的场景,开发团队可以根据具体需求选择最合适的测试方法来确保系统的质量和稳定性。
以上四中测试,其中MIL、SIL、PIL三种测试都是和MBD开发模式下特有的,而HIL不同,无论你是否使用MBD开发,都可能需要做HIL。不是所有的应用都需要,但是以下两种情况建议做HIL:
1.在控制器软硬件不成熟的条件下,运行出错可能会导致人身伤害或者重大财产损失的情况;
2.在开发过程中,被控对象开发滞后于控制器开发的情况。另外,HIL测试通常比实物测试更节省成本,比如,做汽油机台架测试,需要有大量的汽油消耗,而通过HIL测试汽油机控制器,就没有汽油消耗。但这并不是说HIL可以替代实物测试,HIL测试之后,通常会跟着做实物测试。
相关文章:
【软件测试】MIL/HIL/PIL/SIL测试
V字型开发流程 引用文章:汽车行业V模型开发详解 V模型开发(V-Model Development)是一种广泛应用于汽车行业的系统开发方法。它以字母“V”形状的图表形式展示了开发过程中不同阶段之间的关系,从需求分析到系统整合和验证&#x…...
WebKit结构深度解析:打造高效与安全的浏览器引擎
WebKit结构深度解析:打造高效与安全的浏览器引擎 在现代网络世界中,浏览器作为连接用户与互联网信息的桥梁,其背后的技术架构至关重要。WebKit,作为当今最流行的开源浏览器引擎之一,其结构设计和功能实现对于提升浏览…...
SQLSERVER对等发布问题处理
问题1: 无法对 数据库Sast_Business 执行 删除,因为它正用于复制。 (.Net SqlClient Data Provider) 处理: USE [master]; GO EXEC sp_replicationdboption dbname NSast_Business, optname Npublish, value Nfalse; EXEC sp_replica…...
CentOS 7 中时间快了 8 小时
1.查看系统时间 1.1 timeZone显示时区 [adminlocalhost ~]$ timedatectlLocal time: Mon 2024-04-15 18:09:19 PDTUniversal time: Tue 2024-04-16 01:09:19 UTCRTC time: Tue 2024-04-16 01:09:19Time zone: America/Los_Angeles (PDT, -0700)NTP enabled: yes NTP synchro…...
itext7 pdf转图片
https://github.com/thombrink/itext7.pdfimage 新建asp.net core8项目,安装itext7和system.drawing.common 引入itext.pdfimage核心代码 imageListener下有一段不安全的代码 unsafe{for (int y 0; y < image.Height; y){byte* ptrMask (byte*)bitsMask.Scan…...
搜维尔科技:Manus Xsens Metagloves新一代手指捕捉
Manus Xsens Metagloves新一代手指捕捉 搜维尔科技:Manus Xsens Metagloves新一代手指捕捉...
Python与Redis:提升性能,确保可靠性,掌握最佳实践
在 Python 中,有多个库可用于与 Redis 数据库进行交互,其中最受欢迎的是 redis-py。这是一个 Python 客户端库,提供了与 Redis 数据库进行通信的丰富功能。 Python操作Redis操作步骤 安装 redis-py 使用 pip 安装 redis-py: p…...
GPT国内能用吗
2022年11月,Open AI发布ChatGPT,ChatGPT展现了大型语模型在自然语言处理方面的惊人进步,其生成文本的流畅度和连贯性令人印象深刻,为AI应用打开了新的可能性。 ChatGPT的出现推动了AI技术在各个领域的应用,例如&#x…...
中科亿海微-CL1656功能验证开发板
I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放,由核心互联公司研发制造,CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC,吞吐速率高达 250 kSPS,并且内置低噪声、宽 带宽采样保持放大器。…...
学习STM32第十五天
SPI外设 一、简介 STM32F4XX内部集成硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担,可配置8位/16位数据帧,高位(最常用)/低位先行,三组SPI接口,支持DMA…...
【面试题】MySQL 事务的四大特性说一下?
事务是一个或多个 SQL 语句组成的一个执行单元,这些 SQL 语句要么全部执行成功,要么全部不执行,不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务的主要作用是保证数…...
案例实践 | InterMat:基于长安链的材料数据发现与共享系统
案例名称:InterMat-基于区块链的材料数据发现与共享系统 ■ 建设单位 北京钢研新材科技有限公司 ■ 用户群体 材料数据上下游单位 ■ 应用成效 已建设10共识节点、50轻节点,1万注册用户 案例背景 材料是构成各种装备和工程的物质载体,…...
【数据挖掘】实验8:分类与预测建模
实验8:分类与预测建模 一:实验目的与要求 1:学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2:了解其他分类与预测算法函数。 3:学习和掌握分类与预测算法的评…...
go语言并发实战——日志收集系统(三) 利用sarama包连接KafKa实现消息的生产与消费
环境的搭建 Kafka以及相关组件的下载 我们要实现今天的内容,不可避免的要进行对开发环境的配置,Kafka环境的配置比较繁琐,需要配置JDK,Scala,ZoopKeeper和Kafka,这里我们不做赘述,如果大家不知道如何配置环境&#x…...
Go 单元测试之Mysql数据库集成测试
文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试…...
Prometheus + Grafana 搭建监控仪表盘
目标要求 1、需要展现的仪表盘: SpringBoot或JVM仪表盘 Centos物理机服务器(实际为物理分割的虚拟服务器)仪表盘 2、展现要求: 探索Prometheus Grafana搭建起来的展示效果,尽可能展示能展示的部分。 一、下载软件包 监控系统核心…...
机器人管理系统的增删查改(Python)
#交互模式 robot ["机器人1","机器人2","机器人3","机器人4"] name input("请输入您的姓名:") print("%s您好欢迎使用机器人管理系统"%(name))while True:print("您可以进行 1.查找 2.修改 3.增…...
【.Net动态Web API】背景与实现原理
🚀前言 本文是《.Net Core进阶编程课程》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:通过源码实例来讲解Asp.Net Core进阶知识点,让大家完全掌握每一…...
JS-43-Node.js02-安装Node.js和npm
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让JavaScript实现后端开发,所以,首先在本机安装Node.js环境。 一、安装Node.js 官网:下载 Node.js 默认两个版本的下载: 64位windows系统的LTS(Long Tim…...
设计模式(分类)
目录 设计模式(分类) 设计模式(六大原则) 设计模式是软件工程中一种经过验证的、用于解决特定设计问题的通用解决方案。它们是面向对象编程(Object-Oriented Programming, OOP)实践中提炼出的最佳实…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
