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

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

01

单元测试

黑盒测试

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

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

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

①等价类划分

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

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

②边界值分析

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

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

③决策表测试

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

④场景测试

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

白盒测试

①白盒测试简介

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

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

②白盒测试优点

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

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

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

③语句覆盖

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

④分支覆盖

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

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

⑤数据流测试

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

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

02

集成测试

灰盒测试

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

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

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

集成测试内容

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

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

03

系统测试

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

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

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

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

04

静态测试

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

05

测试工具

Tessy

Gtest

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

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

VectorCAST

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

QAC

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

HelixQAC现已广泛支持MISRAC/C++,AutoSARC++14,CERTC/C++,CWEC/C++,HiCPP,JSF等常用编码规则集,并完全符合ISO26262,ISO/SAE21434,ASPICE,EN50128,IEC61508,IEC60880,IEC62304,DO-178B/C等研发标准对工具鉴定和认证的要求。

Polyspace

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

用途:

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

THE END
1.SAST及静态代码分析的工作原理BlackDuck静态应用安全测试 (SAST) 也称静态分析,是一种测试方法,通过分析源代码发现容易让组织的应用受到攻击的安全漏洞。SAST 在编译代码之前扫描应用。它也称为白盒测试。 SAST 解决哪些问题? SAST 在软件开发生命周期 (SDLC) 的早期阶段进行,因为测试时不需要应用运行,并且可以在不执行代码的情况下进行测试。它能帮助开发https://www.synopsys.com/zh-cn/glossary/what-is-sast.html
2.探讨代码质量管理体系建设:从静态分析到持续审查的全流程方案一、静态分析在代码质量管理中的重要性 静态分析是指在代码运行之前对代码进行的一种分析,通过检查代码本身的结构和语法,以发现潜在的问题和错误。静态分析可以帮助我们在代码实际运行https://www.jianshu.com/p/8f19accd1798
3.开源项目SDF常见问题解决方案运行示例代码以确认安装成功。 python examples/example.py 2. OpenVDB 安装问题 问题描述: 项目依赖于 OpenVDB 库,但 OpenVDB 的安装过程可能比较复杂,尤其是对于不熟悉 C++ 编译的用户。 解决步骤: 克隆OpenVDB 仓库: 从GitHub 克隆 OpenVDB 的源代码。 https://blog.csdn.net/gitblog_00673/article/details/144390928
4.虚拟现实开发语言与全面执行计划数据,静态版探索之旅摘要:,,本文探讨了虚拟现实开发语言与全面执行计划数据的关系,并介绍了静态版探索之旅。文章指出,虚拟现实开发语言是实现虚拟现实应用的关键,而全面执行计划数据则为开发过程提供了重要支持。通过静态版探索之旅,可以更好地理解虚拟现实技术的潜力和应用场景。文章强调了虚拟现实技术在当代社会的重要性,并展望了其未来的http://good.hnspacenet.com/post/53295.html
5.modifytextfieldlog·PullRequest!50344·OpenHarmony/此Pull Request 需要通过一些审核项 类型 指派人员 状态 审查 已完成 (1/1) 已完成 (3/3) 测试 已完成 (1/1) +12 -2 frameworks/core/components_ng/pattern/text_field/text_field_event_hub.h 100644 -> 100644 365 371 { 366 372 if (onWillDeleteEvent_https://gitee.com/openharmony/arkui_ace_engine/pulls/50344/files
6.如何利用AIGC完成项目的数据流分析AIGC是一种利用人工智能技术生成内容的技术,包括图像、文本、代码等。通过深度学习模型,AIGC能够自动进行内容生成与优化,提高工作效率和创造力。在数据流分析中,AIGC可以用于自动检测数据流中的异常、预测数据趋势和生成优化方案。 4. 利用AIGC进行数据流分析的方法 https://blog.51cto.com/u_16123429/12789031
7.PolySpace能够发现RunTimeError的静态分析工具PolySpace是一款静态分析测试工具,它能对被测代码进行静态扫描,查找出可能存在Run-Time Error的代码段。我觉得这个功能可以说是创新性的。传统的静态分析工具,比如Logiscope,只能帮助使用人员分析程序的流程结构,统计程序的复杂性,或者是审查代码的编码规范性;而传统的Run-Time Error工具,比如著名的BoundChecker,以及Purifyhttp://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html
8.PolyspacePolyspace 产品系列 Polyspace 产品通过在整个开发生命周期中测试和监控软件质量来保证关键代码的安全。 Polyspace Access 识别编码缺陷,查看静态分析结果,并监控软件质量指标。 Polyspace Code Prover Server 持续并详尽地验证 CI 管道中的关键 C 和 C++ 代码语句。 https://cn.mathworks.com/products/polyspace.html
9.静态代码分析静态代码分析也称静态分析,作为一种软件验证活动,它不要求执行代码,而是通过分析源代码实现质量、可靠性和安全性目的。使用静态分析,您可以识别可能危害您应用安全的缺陷和安全漏洞。静态分析不产生测试用例编写和代码检测配置的开销,因此可以较为经济地衡量和跟踪软件质量指标。 https://ww2.mathworks.cn/discovery/static-code-analysis.html
10.Polyspace静态程序代码分析高效遵循多重规范单是这项改变就为我们整体工作流程带来重大改善,因为它建立了一个闸门机制,确保开发人员只有在他们的程序代码完整通过合适的软件质量目标,并且解决或证明在静态分析找到的任何问题时,才能够成功完成收取要求。 在软件整合及测试期间,Polyspace产品被使用来执行以整合程序代码的软件质量目标为基础的静态分析。在此阶段, https://www.eepw.com.cn/article/202309/450902.htm
11.汽车软件单元测试集成测试系统测试的区别详解静态测试 静态代码测试是一种分析源代码的过程,用于查找潜在的编码错误、代码缺陷和安全漏洞。静态代码测试并不直接运行程序,而是检查代码的结构、语法、命名规范、代码复杂度等方面的问题。静态代码检测可以在软件开发早去提供安全问题反馈,帮助开发人员在编译和运行代码之前发现潜在的问题。 https://www.eet-china.com/mp/a343242.html
12.最新MATLABR2018a/Simulink软件破解版补丁工具爱在灵灵久博客·覆盖率组合功能,可以用来组合多次测试运行(文件的)的覆盖率结果 oPolyspace Code Prover ·用于AUTOSAR软件组件静态分析的AUTOSAR支持 二、软件下载: 登陆官网https://cn.mathworks.com拉至页面底部,用邮箱申请试用软件。 、三、安装教程: 图文教程:https://pan.baidu.com/s/1h0NbgcLV-iVEoLTrprIrSg密码: ctyhttp://blog.az009.com/13951.html
13.代码审计工具汇总linux应用程序windows学会利用自动化代码审计工具、是每一个代码审计人员必备的能力。Fortify SCA Java、JSP、ASP.NET、C#、VB.NET、C、C++、COBOL、ColdFusion https://www.fortify.com Windows、Mac OS X 、 Linux 是一个静态的、白盒的软件源代码安全测试工具Checkmarx CxSuite JAVA、ASP.NET(C#、VB.NET)、JavaScript、Jscript、Chttps://www.163.com/dy/article/G8U4M7BF05319Y7J.html