STM32的单元测试

STM32的单元测试,stm32,nucleo,stm32f7,Stm32,Nucleo,Stm32f7,我正在寻找关于如何在我的STM32F7平台上进行单元测试的建议。过去人们都做了些什么?你有什么恐怖故事?你会有什么不同的做法?我目前的计划有什么问题 我的设置 STM32 Nucleo-144带有定制载体PCB >代码> ARABLI EABI GCC < /Cuth>编译器(现在没有C++) 使用Atolic TrueStudio作为IDE 从Ubuntu 16.04完成的开发 在板上运行FreeRTOS 我的测试计划 有不同级别的测试;我特别谈论的是对不依赖于外部硬件的库/功能集进行单

我正在寻找关于如何在我的STM32F7平台上进行单元测试的建议。过去人们都做了些什么?你有什么恐怖故事?你会有什么不同的做法?我目前的计划有什么问题

我的设置
  • STM32 Nucleo-144带有定制载体PCB
  • >代码> ARABLI EABI GCC < /Cuth>编译器(现在没有C++)
  • 使用Atolic TrueStudio作为IDE
  • 从Ubuntu 16.04完成的开发
  • 在板上运行FreeRTOS
我的测试计划 有不同级别的测试;我特别谈论的是对不依赖于外部硬件的库/功能集进行单元测试。类似于“我的环形缓冲区实现是否正确地处理了无内存泄漏的翻滚”和“此位移位操作是否会在结果变量中产生正确的endianness”?所以我专注于这些类型的测试

  • 用C++将项目转换为编译(以及所有关联的<代码>外部C < /代码>要求)
  • 将代码重构为“库”部分和“应用程序”部分
  • 构建
    googletest
    (这是我们用于系统其他部分的内容),并将我的库链接到其中进行测试
  • 在设备上运行单元测试,同时通过Atolic运行调试会话

如果您真的必须在嵌入式目标上进行单元测试,那么您应该重新考虑这个问题,因为您写道,单元测试是计划好的(通常是为了进行测试)

  • 一组不依赖于外部硬件的功能

  • 类似于“我的环形缓冲区实现是否正确地处理了无内存泄漏的滚动?”和“此位移位操作是否会在结果变量中产生正确的endianness?”

这些(潜在)错误将以几乎与STM32相同的方式发生在PC体系结构(x86,…)上

同时,你应该问问自己,当你工作时,有多少错误会意外发生

  • 转换项目用C++编译(以及所有关联的<代码>外部C需要< /COD>)
  • 将代码重构为“库”部分和“应用程序”部分
不要误解我的意思——如果做得好(并且在项目的理想阶段),后一点可能会大大提高软件的质量

多年来,我一直在开发具有功能安全相关性(IEC61508,SIL3)的软件,虽然在某些特殊情况下,您无法将所有单元测试转移到不同的硬件平台(您的PC),但我自己从未遇到过这样的例子。 相反,我们可以在某些PC上执行单元测试,并通过在原始硬件上进行某种集成测试来补充这些单元测试。
请注意,在此类(补充性)集成测试中,您不必再关注库内部逻辑错误,而主要关注硬件/软件集成和系统集成。

您的方法似乎不错,但我认为最后一部分不起作用。因为它需要您修改googletest以完成调试会话。我会(正如你所说)将非硬件接口层拆分成库,并在外部测试它们。@TarickWelling啊,好的,我没有考虑到这一部分。