汽车嵌入式软件单元测试、集成测试、系统测试介绍

关键词

嵌入式、单元测试、集成测试、系统测试

概述

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

软件测试标准 ISO-IEC-IEEE-29119
在这里插入图片描述

一、单元测试

1.1黑盒测试

黑盒测试是软件测试中的一种测试方法,它是指在不了解系统内部结构或工作原理的情况下,通过输入数据并观察输出结果来判断系统的正确性、完整性和可靠性的测试方法。
黑盒测试的重点在于测试对象的功能和性能是否符合需求规格说明书的要求。黑盒测试适用于所有软件类型,无论是桌面应用程序、服务器端软件还是嵌入式控制系统等。
黑盒测试分为等价类划分、边界值分析、决策表测试、场景测试等多种方式。

1.1.1等价类划分

等价类划分是最为常用的一种测试方法之一,它将所有可能的输入数据划分成若干个等价类,每个等价类的数据被认为具有相同的影响,从而提高测试效率和测试覆盖率。
例如一个温度采集复杂驱动,不同电压的输入表示不同温度,我们需要在传感器允许范围内输入对应的电压值来观察是否输出了对应的温度。

1.1.2边界值分析

通过测试极限数据来检测软件中可能存在的错误。
例如一个温度采集复杂驱动,温敏传感器测量温度范围为-40℃——150℃,对应电压为0.2V——4.5V,我们可以在边界处出入0.19V或者4.6V的情况。

1.1.3决策表测试

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

1.1.4场景测试

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

1.2白盒测试

1.2.1白盒测试简介

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

在ISO/IEC/IEEE 29119系列软件测试标准中,第四部分基于结构的测试技术用于白盒测试中,我们将着重关注右图中红色方框选中的部分
在这里插入图片描述
白盒测试相较于软件单元测试是一种更为详细的测试方法,测试人员需要了解被测试软件的内部结构和逻辑。它测试软件中的程序代码的每一条路径是否能按预期执行,以检测程序中可能存在的逻辑错误和漏洞,提高软件的质量和安全性。

1.2.2白盒测试优点

白盒测试有如下优点:
白盒测试可测试出隐藏的错误,优化代码;
白盒测试的测试用例可实现自动化;
白盒测试比其他测试方法更全面,因为它能测试代码的所有路径

1.2.3语句覆盖

若要使语句覆盖度达到100%,则要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。语句覆盖的测试用例是依据源代码中显性的存在的语句进行编写的,所以无法测试出隐藏的分支或条件,如悬空的else;再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只关注语句是否执行一次,而不考虑其他情况。但是,通过语句覆盖,可以找到程序中的Dead Code,即未执行的代码(如函数中return后面的语句);未执行的分支 (如分支判断条件总是为true或false)。
在这里插入图片描述

1.2.4分支覆盖

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

验证代码中的所有分支;
检测由于隐藏分支导致程序操作异常;
消除语句测试无法覆盖的问题。
但是,如右图所示,条件A、B和C构造一个了布尔表达式,分支覆盖和决策覆盖只关心决策的路径,会忽略决策条件中布尔表达式内部的分支。
在这里插入图片描述

1.2.5数据流测试

数据流测试源代码中定义的变量是否被使用。其中,变量的定义表示为为变量指定了类型和名字,如“char variable;”,变量的使用表示为变量参与了判断(Predicate-use,简称 p-use),如“if (variable > 10)”,或计算(Computation-use,简称 c-use),如“variable=3;”。数据流测试的测试条件为变量的定义-使用对(Definition-use pair), 即变量定义的位置到使用的位置,通常,这里的位置表示行号。数据流测试的测试覆盖项分为两类,一是用于计算的变量,一个变量只需要一个测试覆盖项,实现其中一个定义-使用对应即可;二是用于判断的变量,一个变量需要的测试覆盖项等同于定义-使用对数量,一个测试覆盖项实现变量的一个定义-使用对应。
在这里插入图片描述

详情: 单元测试——白盒测试

二、集成测试

2.1灰盒测试

灰盒测试是界于黑盒测试和白盒测试之间的一种测试。之所以存在灰盒测试,是因为按测试阶段来划分,整个测试的流程包括单元测试、集成测试、系统测试,而白盒测试对应单元测试,黑盒测试对应系统测试,那么在正确的测试过程中,应该是先测试单元模块,单元模块测试完成之后,并没有立即进入系统测试,而是集成测试,这个时候其使用的方法就是灰盒测试,即我们测试完成单个模块后,虽然单个模块没有问题,但并不代表这些模块组合在一块时就一定没有问题。那么要验证这些功能模块组合在一起有没有问题,这就是我们说的集成测试,其使用方法就是灰盒测试。

2.2集成测试内容

集成测试是在单元测试之后进行的,以确保所有单元相互协调运行。通常,一个单元将被视为具有独立功能,但在与其他单元交互时可能会引起问题。这就是软件测试如此重要的原因,尤其是作为一个整体的测试单元。
集成测试主要验证是否满足软件架构和需求,大多数情况下采用灰盒测试。例如各个单元之间的数据接口测试,软件性能测试(cpuload,cycletime,runtime等)

三 系统测试

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

四 静态测试

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

五 测试工具

5.1Tessy

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

在这里插入图片描述

5.2 Gtest

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

5.3 VectorCAST

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

5.4 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等研发标准对工具鉴定和认证的要求。

5.5 Polyspace

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

  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 嵌入式软件测试指的是对嵌入式系统中的软件进行测试的一种方法。嵌入式系统是指集成了软件、硬件和电子元器件等功能于一体的系统,例如汽车电子控制系统、智能家居系统和医疗设备等。而嵌入式软件是运行在这些系统中的软件。 嵌入式软件测试的目的是确保嵌入式系统的正确性、可靠性、安全性和稳定性,以满足用户的需求和用户界面的预期。在测试过程中,需要针对不同的应用场景、环境和操作模式进行测试,并且考虑到系统的可靠性、安全性和易用性等方面。 Bart是一种嵌入式软件测试框架,它提供了一系列自动化测试工具,能够帮助测试人员开展针对嵌入式系统测试工作。Bart支持常用的嵌入式操作系统,并且可以与不同的测试工具和测试平台集成,例如黑盒测试、白盒测试系统集成测试等。 Bart的主要特点包括易于使用、高可靠性、高效性和高扩展性。测试人员可以基于Bart进行各种类型的测试,例如单元测试、模块测试系统测试等,并且可以创建自定义的测试套件和测试用例。Bart还提供了测试报告和测试记录功能,以便测试人员记录测试结果和分析测试数据。 总之,嵌入式软件测试是确保嵌入式系统正常运行的重要环节,并且可以提高系统的可靠性和安全性等方面的质量。Bart作为一种嵌入式软件测试框架,可以帮助测试人员开展各种类型的测试工作,极大地便利了测试人员的工作。 ### 回答2: 嵌入式软件测试是针对嵌入式系统开发的一个测试过程,旨在确保该系统安全、可靠、稳定、高效地运行。嵌入式软件测试要求测试人员具备深入理解和掌握嵌入式系统开发和运行的技术知识,同时需要考虑测试数据、测试工具、测试环境和测试过程中的问题。其中,BART是一种常用的测试工具。 BART(Basic Automatic Regression Tester)是一款自动化回归测试工具,专门用于嵌入式系统测试,能够自动化地识别软件缺陷,快速、准确地检测软件性能,降低了测试成本和测试时间。BART的工作原理是对程序进行人工或自动的测试,捕获运行时的错误和异常,并生成详细的测试报告。BART不仅具有较高的测试速度和测试覆盖率,还支持自适应测试,能够根据被测程序的不同情况和变化自动调整测试策略和方法。 在嵌入式软件测试中,BART非常重要,因为它能够提高测试效率、减少测试成本,从而加快软件的上线速度。此外,BART还可以帮助测试团队解决问题,提高学习能力、提高测试质量和效率。 ### 回答3: 嵌入式软件测试BART是一种用于测试嵌入式系统测试工具,它有助于确保嵌入式系统的可靠性、稳定性和安全性。BART主要包括三个模块:测试用例生成器、测试执行机和测试报告生成器。测试用例生成器可根据系统需求和设计文档生成针对系统各个功能模块的测试用例,测试执行机则按照生成的测试用例对系统进行测试测试报告生成器则可生成详细的测试报告和测试覆盖率报告,从而帮助开发人员确定哪些功能需要进一步改进和优化。 嵌入式软件测试BART具有很好的灵活性和可扩展性,它可以支持多种编程语言和开发平台,例如C、C++、Java和Python等,可以在多种操作系统上运行,包括Linux、Windows和嵌入式操作系统等。此外,BART还可以实现测试用例重复执行、破坏性测试、边界测试等多种测试方式,以及测试用例版本控制和管理功能,可以帮助开发团队更好地进行软件开发、测试和维护。 总之,嵌入式软件测试BART是一种广泛应用于嵌入式系统测试领域的测试工具,它可以提高嵌入式软件开发的质量和效率,为用户提供更加稳定和安全的嵌入式系统服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老灰╮(╯-╰)╭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值