ASPICE实操中的那点事儿-底层软件的单元测试该如何做

先来说下ASPICE项目实操中遇到的问题:

底层软件在做单元测试时,从ASPICE角度看,该如何做?要不要在目标控制器或开发板中去测?尤其是复杂驱动,如果不在将程序下载到硬件中,该如何测试?如果带着硬件一起做,那和集成测试又有什么区别?后续的集成测试和功能测试还有必要做吗?

我们的思路:

1)在ASPICE过程域"SWE.4 Software Unit Testing"中,单元测试(Unit Testing)是对软件单元进行隔离测试的过程,目的是验证软件单元的功能和性能是否符合设计要求,以及检查代码中的错误和缺陷。其中并没有规定单元测试的测试环境。

2)当ASPICE中定义的软件单元包含与芯片相关的代码时,单元测试通常会覆盖这部分代码。这意味着在进行单元测试时,已经对与芯片相关的代码进行了部分集成测试。然而,需要注意的是,单元测试主要关注软件单元的内部逻辑和功能,而不是与其他软件单元或硬件组件的集成。

3)单元测试的验证内容主要包括:单元功能逻辑、接口、性能、覆盖率等。

4)软件集成测试主要测试的是组件之间或子系统之间的接口(信号传递)是否正确,集成后的子系统或整个系统的表现是否符合策略定义。

5)通过实施单元测试活动,可以尽早发现软件开发过程中的错误和缺陷,促进代码质量的提升,降低后期阶段发现和修复问题的成本,从而提高软件产品的质量和可靠性。实践过程中,开发前期,硬件往往滞后于软件开发,且硬件有专门的开发质量标准。

综上,结论:①单元测试不需要过多关注硬件,应更多精力放在软件本身上。与硬件相关的交互可以在软件集成测试中开展。这样整个的效率和价值,以及开发过程的顺畅性会更高。②单元测试的测试环境为纯软的放着环境,对于复杂驱动这类与硬件相关的驱动单元,进行单元测试时需要模拟硬件环境。这可以通过使用模拟器(仿真器,指模拟的软件仿真环境)或桩函数(Stub Functions)来实现。模拟器可以模拟硬件的行为,而桩函数则用于替代那些与硬件交互的函数,以便在测试环境中模拟其行为。

你们在实际项目中是如何实施的呢?欢迎在评论区留言。

相关推荐
测试修炼手册3 天前
[测试技术] TestNG 入门与实战:分组、数据驱动与并行执行
junit·单元测试·log4j
川石课堂软件测试4 天前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
在水一缸4 天前
深入浅出 Catch2:现代 C++ 测试框架的优雅实践
开发语言·c++·单元测试·log4j·测试框架·catch2
花椒技术5 天前
AI Coding 后半程:6 类 QA Skills 如何接住测试与发布?
单元测试·ai编程·测试
疯狂打码的少年5 天前
【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)
笔记·单元测试·集成测试·软件工程
●VON5 天前
鸿蒙 PC Markdown 编辑器查找系统:大小写、整词与循环定位
华为·单元测试·编辑器·harmonyos·鸿蒙
川石课堂软件测试6 天前
安全测试|服务器安全加固方法
服务器·功能测试·测试工具·jmeter·mysql·web安全·单元测试
测试修炼手册7 天前
[测试技术] GoogleTest 入门与实战:单元测试、参数化与 Mock
单元测试
不平衡的叉叉树7 天前
Springboot+Mockito简单使用单元测试
java·spring boot·单元测试
大师兄66688 天前
HarmonyOS7 单元测试:从 @Test 到覆盖率
单元测试·覆盖率·harmonyos7