什么是软件测试中的嵌入式测试?

⚡ 智能摘要

嵌入式测试同时检查软件和硬件的功能性和非功能性行为,因为在嵌入式系统中,软件和硬件紧密耦合,任何一方都无法单独进行适当的验证。

  • 🔘 紧耦合: 硬件与软件同步开发,因此真正的测试环境往往来得晚。
  • ☑️ 五个级别: 软件单元测试、集成测试、系统单元测试、系统集成测试和系统验证测试分别针对不同的模块边界。
  • 安全桩: 医疗、铁路、航空和汽车产品在获得认证之前,都需要经过严格的书面测试。
  • 🧪 灰色框偏好: 系统单元测试会观察内部资源和 RTOS 消息,因此灰盒测试方法最适合它。
  • 🛠️ 主要障碍: 硬件访问受限、开源组件、软硬件混合缺陷以及难以重现的缺陷。

嵌入式系统中软件和硬件的嵌入式测试

什么是嵌入式系统?

嵌入式系统 嵌入式系统是软件和硬件紧密耦合的电子控制设备。嵌入式系统可能包含各种计算设备,例如集成到其他设备中以运行特定应用程序功能的个人电脑。最终用户通常甚至不会意识到它们的存在。

嵌入式测试

嵌入式测试 是检查功能和性能的测试过程 非功能性 嵌入式测试旨在评估嵌入式系统中软件和硬件的各项属性,并确保最终产品无缺陷。其主要目的是验证和确认嵌入式硬件和软件的最终产品是否满足客户的要求。

嵌入式软件测试旨在检查并确保相关软件质量良好,并符合所有应满足的要求。嵌入式软件测试是保障医疗设备、铁路、航空、汽车等关键应用领域安全性的有效方法。严格细致的测试是授予软件认证的关键。

如何进行嵌入式软件测试

一般来说,进行测试有四个原因:

  • 查找软件中的错误
  • 有助于降低用户和公司的风险
  • 降低开发和维护成本
  • 为了提高性能

在嵌入式测试中,会执行以下活动:

  1. 该软件需要一些输入参数。
  2. 执行一段软件代码。
  3. 对软件状态进行观察,并检查输出是否符合预期属性,例如输出是否与预期结果相符、是否符合要求以及是否存在系统崩溃。

嵌入式软件测试类型

从根本上讲,嵌入式软件可以应用五个级别的测试。

软件单元测试

单元模块可以是函数或类。单元测试由开发团队(主要是开发人员)执行,通常采用同行评审模式。测试用例根据模块规范编写。

整合测试

整合测试 可以分为两类:

  • 软件集成测试
  • 软件/硬件集成测试

最后,需要测试硬件域和软件组件之间的交互。这可能包括检查内置外围设备与软件之间的交互。

嵌入式软件开发具有一个独特的特点:软件实际运行的环境通常与软件本身并行创建。这给测试带来了不便,因为无法在模拟环境下进行全面的测试。

系统单元测试

现在待测模块是一个完整的框架,它包含完整的软件代码以及所有…… 实时操作系统 实时操作系统 (RTOS) 和平台相关组件,例如中断、任务机制、通信等等。控制点协议不再是对函数的调用或方法的调用,而是使用 RTOS 消息队列发送或接收的消息。

观察系统资源来评估系统支持嵌入式系统执行的能力。在这方面, 灰盒测试 是首选的测试方法。根据组织的不同,系统单元测试可能是开发人员的职责,也可能是专门的系统集成团队的职责。

系统集成测试

待测模块由单个节点内的一组组件构成。控制点和观测点 (PCO) 包含网络相关的通信协议和实时操作系统 (RTOS) 事件,例如网络消息。除了组件之外,虚拟测试仪也可以扮演节点的角色。

系统验证测试

待测模块可以是已完整实现的子系统,也可以是完整的嵌入式系统。本次最终测试的目标是满足外部实体的功能需求。请注意,外部实体可以是人,也可以是电信网络中的设备,或者两者兼而有之。

区别:嵌入式测试和软件测试

下表对比了嵌入式测试与传统测试。 软件测试.

软件测试 嵌入式测试
软件测试仅与软件有关。 嵌入式测试与软件和硬件都相关。
全世界平均90%的测试都是纯手工完成的。 黑盒测试. 嵌入式测试是对嵌入式系统或芯片进行的测试,可以是黑盒测试,也可以是开盒测试。 白盒测试.
测试的主要领域是 GUI 检查、功能、验证和某种程度的数据库测试。 测试的主要方面是硬件对不同输入数量的响应情况。
软件测试主要在客户端-服务器、网络和移动应用程序上进行。 嵌入式测试通常在硬件上进行。
例如, Google Mail雅虎 Mail, Android 领域广泛应用,提供了卓越的解决方案。 例如,医疗保健领域的机器,计算机中使用的微控制器。

挑战:嵌入式软件测试

嵌入式软件测试过程中可能面临的一些挑战:

硬件依赖性

由于硬件访问受限,硬件依赖性是嵌入式软件测试面临的主要难题之一。然而,仿真器和模拟器可能无法精确地模拟实际设备的行为,从而导致对系统性能和应用程序可用性的错误判断。

开源软件

大多数嵌入式软件组件本质上都是开源的,并非内部开发,也没有完整的测试套件可供使用。测试组合和由此产生的场景多种多样。

软件与硬件缺陷

另一方面,当为新开发的硬件开发软件时,也会出现这种情况。在此过程中,很容易发现大量的硬件缺陷。这些缺陷不仅限于软件,也可能与硬件本身有关。

可重现的缺陷

嵌入式系统的缺陷更难复现或重现。这就迫使嵌入式测试流程对每次缺陷的重视程度远高于标准测试,并收集尽可能多的数据以找出缺陷的根本原因。

持续的软件更新

嵌入式系统需要定期进行软件更新,例如内核升级、安全修复、更新设备驱动程序等等。软件更新带来的种种限制使得错误识别变得困难。此外,这也凸显了构建和部署流程的重要性。

常见问题

典型的堆栈结合了静态分析、C 和 的单元测试框架 C++总线分析仪 trac具备电子调试功能的调试器和硬件在环测试装置,以及 测试自动化 因此,回归测试套件可以无人值守运行。

硬件在环 (HIL) 在真实的控制器上运行真实的固件,同时模拟器提供周围环境产生的信号,从而模拟物理上不安全的故障情况。

模拟器模拟行为并运行主机构建版本;仿真器则重现目标指令集,从而使实际二进制文件能够执行。两者都无法精确地重现模拟和时序效应。

IEC 61508 是通用功能安全标准。行业版本包括:道路车辆的 ISO 26262、机载软件的 DO-178C、医疗设备的 IEC 62304 和铁路控制的 EN 50128。

AI模型对大量日志进行分类和处理 trac它会统计测试设备的运行量,对重复出现的故障进行聚类分析,并对稀缺硬件上的回归测试进行优先级排序。安全判断仍由工程师负责。

GitHub 副驾驶 为 C 或 C++ 模块化设计加快了重复性模拟的速度。注册行为和时间约束(即使从未见过)仍然需要检查。

通过最坏情况执行时间分析,对仪器进行检测 trac在目标平台上进行测试,并在峰值负载下进行压力测试。截止时间错过和中断延迟是在真实硬件上测量的,主机构建无法重现这些问题。

阅读C和 C++熟练掌握电路图和逻辑分析仪的使用,熟悉实时操作系统(RTOS)概念和总线协议,并具备脚本编写能力。相关工作包括: IoT 测试 以同一基础为基础。

总结一下这篇文章: