首先,嵌入式软件是一种比较特殊的软件。它经过分析、设计、编码后,只有烧入硬件环境中才能看到效果。比如说,洗衣机自动控制软件,只有在洗衣机里运行才能知道它是不是好用。嵌入式软件测试,也叫交叉测试(cross-test),目的和普通软件测试一样,都是为了发现软件缺陷并修正它们,以提高软件的可靠性。毕竟,嵌入式系统安全性的失效可能会导致灾难性的后果,即使是非安全性失效,由于其应用场合特殊也会导致重大经济损失。所以,嵌入式软件对可靠性的要求比普通软件高得多。
嵌入式开发:嵌入式软件单元测试的3个技巧
通常,嵌入式软件程序将由几十个模块组成,这些模块被放入一个程序文件夹中。今天,更常见的是看到一些文件夹组织,其中模块按应用程序、中间件和驱动程序组织。像这样的程序组织结构是可以的,但在考虑单元测试时,按组件管理程序会容易得多。
组件是封装了一组相关功能[2]、数据和测试用例的模块。例如,为 FIR 滤波器编写应用程序组件的开发人员可能会按如下方式组织它:
FIR Filter
– include
— fir.h
– source
— fir.c
– tests
— fir_test.c
构建这样的文件夹结构起初可能看起来有点痛苦。但是,它保留了组件执行其目的所需的所有软件模块和测试用例!此外,像这样组织组件使组件易于移植,或者更重要的是,更易于在其他软件项目中重用。
敏捷运动为嵌入式开发人员提供了许多流程和工具,旨在帮助他们更快地开发出高质量的软件。 敏捷产生的一种方法是测试驱动开发,通常称为 TDD。 TDD“是一个软件开发过程,依赖于在软件完全开发之前将软件需求转换为测试用例,并通过针对所有测试用例重复测试软件来跟踪所有软件开发”。
一般来说,TDD 通过专注于测试改变了开发人员编写软件的方式案例。开发人员创建一个测试用例,使其失败,然后编写通过测试用例所需的代码。通过这样做,他们正在构建测试用例,他们知道如果将错误引入软件中就会发现问题。
嵌入式开发人员可用于开发单元测试的工具在过去几年中发生了很大变化。当我**次开始使用自动化测试时,我发现设置工具是一个巨大的挑战,今天不再是这种情况。
团队可以通过多种方式设置单元测试。首先,他们可以将测试设置为持续集成和持续部署 (CI/CD) 系统的一部分。 CI/CD 允许团队在构建和部署过程中自动运行测试用例。接下来,开发人员可以选择一个测试工具并将其安装在他们的系统上。在这种情况下,测试工具在独立环境中运行。**后,开发人员可以构建他们的测试工具和开发流程,并在 Docker 环境中进行设置。 Docker 允许开发人员在可移植的映像中运行他们的开发环境,从而**限度地减少设置时间并提高开发人员之间的一致性。
可以在 Docker 中设置测试工具,然后轻松部署到多个开发人员,以便他们只需使用几条命令即可设置环境。一开始,为嵌入式软件创建和使用自动化测试似乎令人生畏。然而,鉴于当今系统变得如此复杂,手动进行测试几乎是不可能的。**真正的解决方案是开发可用于执行所有系统功能的自动化测试。单元测试是嵌入式开发人员**常用的工具,可以显着提高系统质量,同时减少开发软件的总时间。
嵌入式开发:自学秘籍

**阶段:嵌入式基础理论
首先,你需要了解互联网公司的各个岗位职责,特别是与嵌入式开发紧密相关的硬件工程师、软件工程师、产品经理等。同时,要熟悉嵌入式产品的开发流程,从需求分析到硬件选型、软件开发、测试与调试,再到产品发布的全过程。这个阶段虽然看似简单,但却是整个嵌入式开发的基础。

第二阶段:C语言与单片机
C语言是嵌入式开发的基础,你需要熟练掌握其语法、数据类型、控制结构、函数等基本概念。接下来,可以学习单片机的基础知识,如51单片机、STM32等,了解它们的架构、外设、中断、定时器等,并通过实际项目加深理解。这个阶段可能会有些困难,但只要坚持下去,你会发现自己的进步是显而易见的。
嵌入式开发流程
嵌入式应用领域