Skip to main content
QUICK REVIEW

[论文解读] Automated Driver Testing for Small Footprint Embedded Systems

Sara C.M. de Souza, Rogério Atem de Carvalho|arXiv (Cornell University)|May 4, 2021
Software Testing and Debugging Techniques参考文献 5被引用 4
一句话总结

本文提出了一种低成本、非侵入式的测试框架,用于在小型嵌入式系统中对驱动程序进行测试,采用被测设备(DUT)、双设备(Double)模拟外部外设,以及运行Python测试编排代码的主机计算机。该方法通过暴露实现缺陷(如BLE初始化不稳定)的方式,在ESP32上使用MicroPython通过可复现的实际测试用例,实现了对SPI、I2C、UART、CAN和BLE等多种通信协议的有效驱动程序测试。

ABSTRACT

Embedded systems represent a billionaire market and are present in most of the processors produced in the world.Embedded software interacts with external peripherals such as sensors and actuators through drivers. The strong interaction between drivers and external peripherals often hamper embedded software development, in special the testing task, giving that the physical environment may not be deterministic and difficult to be recreated during the tests, the hardware may not be available or its presence may not be desirable or costly. Aiming at addressing these problems, this paper introduces a solution to test drivers on microcontrollers, based on a method that uses three components: a Device Under Test (DUT), a Double device, and a computer. The computer runs a test orchestration code, while the DUT runs the test target code, and the Double plays the role of the real external peripherals that interact with the DUT. The proposed solution was successfully implemented and validated using different protocols.

研究动机与目标

  • 解决在小型嵌入式系统中测试设备驱动程序的挑战,尤其是在开发过程中无法获取、成本过高或使用物理硬件存在风险的情况下。
  • 降低嵌入式系统中的测试成本和复杂性,尤其是在安全关键应用中,测试可能消耗高达80%的项目资源。
  • 提供一种实用、可重用且透明的解决方案,用于测试驱动程序,而无需修改生产代码或启用特殊调试模式。
  • 通过自动化测试执行,识别并报告驱动库中的实现问题,例如BLE初始化不稳定。
  • 利用模拟外设(双设备)在多种通信协议上实现可复现、确定性的嵌入式驱动程序测试。

提出的方法

  • 该框架包含三个组件:运行驱动代码的被测设备(DUT)、模拟外部外设的双设备,以及运行基于Python的测试编排代码的主机计算机。
  • 主机上的测试代码通过串行通信向DUT和双设备发送命令,然后比较预期结果与实际结果以验证功能。
  • 双设备运行“双代码”——即使用MicroPython实现的模拟外设代码——以模拟真实硬件行为,如BLE广播或SPI通信。
  • 每个测试用例都是独立的,并遵循测试驱动开发(TDD)原则,测试代码在生产驱动代码之前编写。
  • 通过利用ESP32的协议多样性以及MicroPython的交互式终端,该系统支持多种协议(SPI、I2C、UART、CAN、BLE),实现实时反馈。
  • 该解决方案是非侵入式的:DUT上无需代码更改或特殊调试模式,测试在确定性、可重复的环境中进行。

实验结果

研究问题

  • RQ1当物理外设不可用或不切实际时,如何使小型嵌入式系统中的驱动程序测试变得实用且成本可控?
  • RQ2硬件双设备在多大程度上能够模拟真实外设,以实现对嵌入式驱动程序的可靠、可重复测试?
  • RQ3基于此架构的自动化测试框架能否检测出驱动库中的真实实现缺陷,例如BLE初始化中的时序问题?
  • RQ4该框架在单一、可重用的测试架构中,对多种通信协议(如SPI、I2C、BLE)的支持效果如何?
  • RQ5测试驱动开发在提升资源受限系统中嵌入式驱动程序的可靠性与可维护性方面发挥什么作用?

主要发现

  • 该框架成功检测到BLE驱动初始化的不稳定性,该问题后来被确认并报告给相关GitHub社区,证明其在发现真实实现问题方面的有效性。
  • SPI和BLE协议的测试用例揭示了由于目标平台库尚不成熟导致的不稳定性,凸显了该框架在早期发现缺陷方面的作用。
  • 通过用模拟的双设备替代非确定性的物理硬件,该解决方案实现了确定性的测试执行,从而支持可重复且可靠的测试。
  • 在ESP32上使用MicroPython支持了交互式测试执行和实时结果检查,提升了开发者的反馈速度和调试效率。
  • 该框架的非侵入特性使得无需修改生产代码或配置特殊调试模式即可进行测试,降低了集成开销。
  • 所有工件,包括库、模板和测试用例,均已发布在GitHub上,并配有清晰的文档,促进了社区采纳与协作。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。