汽车软件单元测试、集成测试、系统测试的区别详解


关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯

基于目前的汽车电气架构主要是分布式的电器架构,汽车的功能分解到了各个相应的功能模块,因此嵌入式汽车软件的复杂度,相比于IT软件,并没有那么大,但质量要求相对非常高。为了解决软件开发过程中的各种问题,先后引入了瀑布模型、V模型、敏捷等。

这里以V模型引入汽车嵌入式软件开发中的单元测试、集成测试和系统测试。

01

单元测试

黑盒测试

黑盒测试是软件测试中的一种测试方法,它是指在不了解系统内部结构或工作原理的情况下,通过输入数据并观察输出结果来判断系统的正确性、完整性和可靠性的测试方法。

黑盒测试的重点在于测试对象的功能和性能是否符合需求规格说明书的要求。黑盒测试适用于所有软件类型,无论是桌面应用程序、服务器端软件还是嵌入式控制系统等。

黑盒测试分为等价类划分、边界值分析、决策表测试、场景测试等多种方式。

①等价类划分

等价类划分是最为常用的一种测试方法之一,它将所有可能的输入数据划分成若干个等价类,每个等价类的数据被认为具有相同的影响,从而提高测试效率和测试覆盖率。

例如一个温度采集复杂驱动,不同电压的输入表示不同温度,我们需要在传感器允许范围内输入对应的电压值来观察是否输出了对应的温度。

②边界值分析

通过测试极限数据来检测软件中可能存在的错误。

例如一个温度采集复杂驱动,温敏传感器测量温度范围为-40℃——150℃,对应电压为0.2V——4.5V,我们可以在边界处出入0.19V或者4.6V的情况。

③决策表测试

适用于复杂的业务逻辑的测试。决策表是一种规范化的表格,通过列出所有可能的输入组合和输出结果来描述一个系统的决策逻辑。通过决策表测试,可以发现许多在其他测试方法中难以发现的问题。

④场景测试

场景测试是一种基于用户使用场景的测试方法,它可以发现软件在不同场景下的异常行为和错误。例如LCC(车道保持辅助)功能在不同路况下的运行情况。

白盒测试

①白盒测试简介

白盒测试是一种在知道程序内部结构的情况下采用的测试技术或策略,选取足够的测试用例,对源代码实现比较充分的覆盖,以便尽可能多地发现程序中的错误.它包括逻辑覆盖、路径测试、控制流测试和数据流测试等方法。

在ISO/IEC/IEEE 29119系列软件测试标准中,第四部分基于结构的测试技术用于白盒测试中,我们将着重关注右图中红色方框选中的部分

白盒测试相较于软件单元测试是一种更为详细的测试方法,测试人员需要了解被测试软件的内部结构和逻辑。它测试软件中的程序代码的每一条路径是否能按预期执行,以检测程序中可能存在的逻辑错误和漏洞,提高软件的质量和安全性。

②白盒测试优点

白盒测试可测试出隐藏的错误,优化代码;

白盒测试的测试用例可实现自动化;

白盒测试比其他测试方法更全面,因为它能测试代码的所有路径。

③语句覆盖

若要使语句覆盖度达到100%,则要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。语句覆盖的测试用例是依据源代码中显性的存在的语句进行编写的,所以无法测试出隐藏的分支或条件,如悬空的else;再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。

显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只关注语句是否执行一次,而不考虑其他情况。但是,通过语句覆盖,可以找到程序中的Dead Code,即未执行的代码(如函数中return后面的语句);未执行的分支 (如分支判断条件总是为true或false)。

④分支覆盖

语句覆盖测试程序中每条语句至少执行一次的情况,但是它无法检测程序中隐藏的分支或循环运算。分支/决策覆盖是白盒测试中测试执行路径覆盖度大于语句覆盖的方法,它们可用来:

  • 验证代码中的所有分支;

  • 检测由于隐藏分支导致程序操作异常;

  • 消除语句测试无法覆盖的问题。

但是,如右图所示,条件A、B和C构造一个了布尔表达式,分支覆盖和决策覆盖只关心决策的路径,会忽略决策条件中布尔表达式内部的分支。

⑤数据流测试

数据流测试源代码中定义的变量是否被使用。其中,变量的定义表示为为变量指定了类型和名字,如“char variable;”,变量的使用表示为变量参与了判断(Predicate-use,简称 p-use),如“if (variable > 10)”,或计算(Computation-use,简称 c-use),如“variable=3;”。数据流测试的测试条件为变量的定义-使用对(Definition-use pair), 即变量定义的位置到使用的位置,通常,这里的位置表示行号。

数据流测试的测试覆盖项分为两类,一是用于计算的变量,一个变量只需要一个测试覆盖项,实现其中一个定义-使用对应即可;二是用于判断的变量,一个变量需要的测试覆盖项等同于定义-使用对数量,一个测试覆盖项实现变量的一个定义-使用对应。

02

集成测试

灰盒测试

灰盒测试是界于黑盒测试和白盒测试之间的一种测试。之所以存在灰盒测试,是因为按测试阶段来划分,整个测试的流程包括单元测试、集成测试、系统测试,而白盒测试对应单元测试,黑盒测试对应系统测试。

在正确的测试过程中,应该是先测试单元模块,单元模块测试完成之后,并没有立即进入系统测试,而是集成测试,这个时候其使用的方法就是灰盒测试,即我们测试完成单个模块后,虽然单个模块没有问题,但并不代表这些模块组合在一块时就一定没有问题。

要验证这些功能模块组合在一起有没有问题,就是我们说的集成测试,其使用方法就是灰盒测试。

集成测试内容

集成测试是在单元测试之后进行的,以确保所有单元相互协调运行。通常,一个单元将被视为具有独立功能,但在与其他单元交互时可能会引起问题。这就是软件测试如此重要的原因,尤其是作为一个整体的测试单元。

集成测试主要验证是否满足软件架构和需求,大多数情况下采用灰盒测试。例如各个单元之间的数据接口测试,软件性能测试(cpuload,cycletime,runtime等)

03

系统测试

系统测试通常在集成测试之后,将所有模块集成到完整的硬件系统上,验证是否满足系统架构需求。通常采用黑盒测试。系统测试需要在尽可能遍历所有工况,考虑尽可能多的、极限的运行环境。

在实践中,具体的测试责任分配可能因组织和项目而异。然而,一般情况下,可能有以下分配:

单元测试通常由开发人员自己完成,开发人员编写测试用例,并在开发过程中使用自动化测试工具或框架来执行这些测试;集成测试通常由测试团队或质量保证团队完成,测试团队负责编写集成测试用例,测试组件之间的接口和协作。开发人员可能参与修复集成测试中发现的问题。

系统测试通常由专门的测试团队或质量保证团队负责。他们负责编写系统测试用例,并测试整个系统的功能、性能、可靠性和用户体验。用户代表或业务部门可能参与系统测试,以验证系统是否满足用户需求。

这些测试阶段之间的责任分配并不是绝对的,可能会根据组织的规模、项目的复杂性和团队的组织结构而有所不同。在某些情况下,开发人员可能会参与集成测试和系统测试,而测试团队可能会参与单元测试。关键是确保每个测试阶段都得到适当的关注和执行,以确保产品的质量和稳定性。

04

静态测试

静态代码测试是一种分析源代码的过程,用于查找潜在的编码错误、代码缺陷和安全漏洞。静态代码测试并不直接运行程序,而是检查代码的结构、语法、命名规范、代码复杂度等方面的问题。静态代码检测可以在软件开发早去提供安全问题反馈,帮助开发人员在编译和运行代码之前发现潜在的问题。

05

测试工具

Tessy

用于单元测试和集成测试。Tessy是一个针对嵌入式软件的C/C++代码进行单元、集成测试的工具,它可以自动化地执行测试、评估测试结果并生成测试报告。Tessy的目标就是:通过自动化整个测试周期,完美支持针对C语言的单元测试/集成测试,同时,Tessy也同样关注测试组织和测试管理。

Gtest

用于单元测试和集成测试。

Gtest是Google的一个开源框架,它主要用于写单元测试,检查真自己的程序是否符合预期行为。可在多个平台上使用(包括Linux, Mac OS X, Windows, Cygwin和Symbian)。它提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死亡测试”。

VectorCAST

VectorCAST是领先的专门用于高可靠性和高安全性软件的自动化动态测试工具链,覆盖软件的单元测试、模块测试、集成测试、系统功能测试、回归测试和覆盖率分析等软件全生命周期SDLC的主要测试环节。VectorCAST支持对C, C++和Ada语言的测试,尤其适用于对嵌入式软件应用的测试。

QAC

用于静态代码测试。Helix QAC是权威的C/C++代码合规性静态分析工具,适用于对代码的规范性和可靠性有较高要求的软件系统。Helix QAC提供编码规则检查、数据流分析和代码度量分析等全面的代码静态分析功能,可以自动检测软件中不规范的、不安全的、不明确的、不可移植的有关编码风格、命名惯例、程序逻辑、语法和结构的代码。

Helix QAC现已广泛支持MISRA C/C++, AutoSAR C++14, CERT C/C++, CWE C/C++, HiCPP, JSF等常用编码规则集,并完全符合ISO 26262, ISO/SAE 21434, ASPICE, EN 50128, IEC 61508, IEC 60880, IEC 62304, DO-178B/C等研发标准对工具鉴定和认证的要求。

Polyspace

用于静态代码测试。Polyspace :软件运行时错误检测工具。

用途:

①解决代码鲁棒性问题,提高软件安全性,可靠性,排查编码错误
②检查编码规则一致(MISRA/JSF)。
③静态度量(代码量,调用次数等)
④测试覆盖度
⑤软件质量水平


来源:汽车测试网


-END-

关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯

智能汽车电子与软件 专注于汽车电子领域的信息交融平台,涵盖汽车电子行业资讯、市场动态、技术干货、知识见解、行业趋势等资讯深度覆盖。
评论
  • 一、前言Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。本文将带你入门 Swing GUI 开发,并通过一个实战项目,构建一个简单但完整的 Java 桌面应用。二、Java GUI 技术体系概览Java 支持多种 GUI 开发方式,最常见有:技术特点AWT最早的 GUI,依赖本地组件,跨平台性差SwingAWT 的增强版,组件完
    小菜菜编程 2025-06-10 23:21 6038浏览
  • 在自动驾驶时代奔涌向前的路上,仿真测试早已不再是可选项,而是验证智能驾驶系统安全性、鲁棒性和泛化能力的刚需,如何提升仿真测试的保真度已成为无法避免的重要话题。这正是“数字孪生”出现的时代背景。本文为大家详细介绍如何用传统与前沿结合的数字孪生构建流程,再配合3DGS 的神经网络重建技术,为自动驾驶仿真测试注入真正的“现实之眼”。一、从点云到高精地图的重建依托独家的aiData工具链与aiSim仿真平台,本文建立了一套高精度数字孪生地图构建流程,已经广泛应用于布达佩斯 Kolosy广场、ZalaZo
    康谋 2025-06-11 14:13 225浏览
  • 七年前买了个远程控制开关,想想那个时候应该物联网才兴起的时候吧。如今因为控制麻烦且经常出现连接掉线问题,于是给淘汰了。这个设备我是拿来控制吊灯,特别麻烦的是,当晚上关灯后,会有一点灯点亮着,掉线的时候还会闪,想想睡梦中醒来往天花板一看,一个东西在那闪多吓人,关键还是绿色的。而且二次匹配需要打开灯罩,按那个黑色的按钮才能重新配网。种种原因,让我今天给他拆了,结构也简单,拆开外壳就只有一个主板正面正面电路看起来还是很简单的:220V经过整流桥(背面U1),通过变压器将市电转化低压直流电一个继电器,这
    二月半 2025-06-12 14:32 191浏览
  • 一、前言多线程是 Java 的强大特性之一,它允许程序并发执行多个任务,提高资源利用率和响应能力。无论是 Web 服务、高性能计算、文件下载、图像处理,还是后台任务调度,多线程都是提升效率的利器。本篇文章将深入介绍 Java 多线程编程,包括创建线程、同步控制、线程通信、线程池与实际案例。二、Java 创建线程的三种方式2.1 方式一:继承 Thread 类java复制编辑publicclassMyThreadextendsThread { publicvoidrun() {
    小菜菜编程 2025-06-10 22:35 5499浏览
  • 夸克发布首个高考志愿大模型,为考生提供了智能化、个性化的志愿填报服务,这一创新对考生群体和传统报考机构产生了截然不同的影响。对于考生而言,夸克高考志愿大模型无疑是一大利好。该模型整合了教育官网、省招生办官网等权威信息源,确保数据准确可信,同时将高校毕业生就业信息、产业趋势等纳入知识库,为考生提供更全面的参考。通过深度搜索、志愿工具和志愿报告三大服务,夸克能精准理解考生需求,提供从专业适配性、地域优势到就业前景的全方位分析,并生成专属志愿报告和多种填报策略。这种智能化、个性化的服务大大减轻了考生和
    curton 2025-06-12 17:24 4095浏览
  • 1.03" CVBS 驱动方案 Micro-OLED显示技术因其高分辨率、高亮度、低功耗和小体积的优势,已成为微显示领域的首选方案。针对Micro-OLED在光学瞄准、夜视成像、工业检测、安防监控及户外探索等终端应用,上海冠显光电(TDO)设计开发了1.03"CVBS驱动方案。这一方案能够实现CVBS信号向Micro-OLED显示屏的稳定转换和显示控制,与市面上大多数光学瞄准应用终端无缝对接,满足行业对高质量、高性能显示解决方案的迫切需求。方案组成型号:TV103F1CSFS02&nb
    冠显光电MicroOLED代理视涯 2025-06-11 16:48 4608浏览
  • 检测电磁铁性能需要系统性地考察多个关键指标。首先通过吸附测试评估磁力强度,可定量测量最大吸附重量或定性观察衔铁动作的灵敏性。电气参数检测包括测量线圈电阻值是否正常,以及通电后电流是否稳定在额定范围内。动态性能方面需测试响应时间和释放特性,记录通电吸合与断电分离的时效性。环境适应性验证要模拟电压波动和高温条件,观察磁力稳定性变化。安全检测环节必须检查绝缘状态和接线可靠性,运行中注意异常发热、异响等故障征兆。日常维护应保持磁极面清洁,定期复测线圈电阻。专业应用场合建议使用磁通计等仪器精确测量磁场参数
    锦正茂科技 2025-06-12 11:20 3821浏览
  • 磁学为啥神秘?1.磁学应用不直观。2.电感器使用量相对少。3.深度阐述书籍资料比较少。主要内容:第一章介绍磁学的基础概念,电磁感应,磁心损耗,气隙,趋肤效应,临近效应。第二章介绍磁性元件 电感原理与制造工艺,磁珠,变压器原理。第三章介绍应用电路 LC滤波器,谐振电路,射频中电感和变压器的应用,开关电源中变压器的应用。第四章介绍磁能的形态及转换,主要讲磁能存在哪里?转换过程,转换条件。第五章简介电感储能的相关问题,纠正常识性错误。第六章介绍变压器的常识性知识,如功率与初级匝数的关系。本书的阐述角度
    cow74562014 2025-06-10 22:41 264浏览
  • 电路图GPIO的中断类型相关API函数应用举例总结电路图在ESP32中内部有完整的控制电路,比如上下拉以及滤波器等,所以我们这里可以直接用一个微动开关连接到地。GPIO的中断类型GPIO_INTR_DISABLE不使能中断GPIO_INTR_POSEDGE上升沿触发GPIO_INTR_NEGEDGE下降沿触发GPIO_INTR_ANYEDGE上升沿和下降沿都触发GPIO_INTR_LOW_LEVEL低电平触发GPIO_INTR_HIGH_LEVEL高电平触发在GPIO中断应用中,一般使用上升沿或
    二月半 2025-06-12 10:11 165浏览
  • 一、引言:Java I/O 的重要性无论是桌面软件、服务器后台,还是移动应用,文件读写和数据传输都是核心功能。Java 提供了丰富的 I/O API,从传统的字节流、字符流到现代的 NIO(Non-blocking I/O)框架,都能满足不同场景的需求。本文将深入解析 Java I/O 的核心机制和实战技巧,涵盖:传统流体系(InputStream/OutputStream,Reader/Writer)文件操作示例NIO 基础与实战高效文件复制与缓冲机制二、Java 传统 I/O:字节流和字符流
    小菜菜编程 2025-06-10 21:57 5196浏览
  • Micro OLED作为下一代微显示技术的核心,广泛应用于AR/VR等HMD、汽车HUD、电子枪瞄、以及工业和医疗等高分辨率近眼显示领域。当前,Micro OLED的市场规模持续扩大,商业化进程不断加速,终端应用厂商急需加快产品验证步伐,抢占市场先机。为助力加速设计和开发,冠显光电推出了TV系列评估套件,帮助客户快速启动相关应用开发,提升验证效率,推动产品从概念到市场的快速落地。冠显0.39" Micro OLED显示解决方案主要包括0.39" 显示屏、FPC及驱动板,是TV系列中最小巧紧凑的一
    冠显光电MicroOLED代理视涯 2025-06-12 09:54 3925浏览
  • 一、前言文件处理是 Java 应用程序中最常见、最实用的功能之一,无论是读取配置文件、处理日志、批量处理 CSV,还是备份、压缩文件,都离不开对文件的高效操作。本篇文章将系统讲解 Java 文件操作的各个方面,包括文件读取、写入、复制、删除、压缩等,并提供实际代码示例。二、Java 文件与目录的基础操作2.1 使用 File 类检查文件属性java复制编辑import java.io.File; publicclassFileCheck { publicstaticvoidmai
    小菜菜编程 2025-06-10 22:34 5300浏览
  • 一、前言在当今互联网应用中,网络编程是 Java 开发者必须掌握的一项关键技能。无论是构建聊天系统、文件传输、物联网交互,还是服务端 API 通信,Java 的网络编程提供了强大的支持。本文将从基础的 Socket 通信开始,逐步深入到多线程服务器开发,并提供图文实例帮助理解。二、Java 网络通信的基础概念Java 网络编程主要依赖于以下核心类:类名用途Socket客户端通信套接字ServerSocket服务器监听套接字InetAddressIP 地址解析与封装DatagramSocketUD
    小菜菜编程 2025-06-10 23:20 5837浏览
  • 近年来,随着全球能源转型和清洁能源行业的快速发展,户用光伏系统的装机量正呈逐年上升态势。同时,为了应对居民用电价格的显著上涨以及峰谷电价差异的持续扩大,在户用储能单元可大幅降低用电成本的背景下,各国正在大力扶持光伏配储政策,户用光储系统已逐步成为普通家庭应对电价波动与电网停机的经济之选。据高工产研储能研究所(GGII)统计数据显示,2024年全球户用储能装机规模约14GWh,GGII预计2025年全球户用储能市场规模将以25%的增速发展,装机规模将达到17.5GWh,整体增长趋势显著。而这也从侧
    华普微HOPERF 2025-06-12 14:16 308浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦