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

谈思汽车 2024-06-05 11:51

 智能汽车安全新媒体 

基于目前的汽车电气架构主要是分布式的电器架构,汽车的功能分解到了各个相应的功能模块,因此嵌入式汽车软件的复杂度,相比于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)。
③静态度量(代码量,调用次数等)
④测试覆盖度
⑤软件质量水平

内容来源:

https://blog.csdn.net/weixin_42447823/article/details/133912247

-  THE END  -



 专业社群 


精品活动推荐

因文章部分文字及图片涉及到引用,如有侵权,请及时联系17316577586,我们将删除内容以保证您的权益。

谈思汽车 智能汽车安全新媒体
评论
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 65浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 86浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 41浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 66浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 51浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 98浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 102浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 106浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 70浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 37浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 70浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 83浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦