Testing 目前在测试固件时使用了哪些可用的软件工具?

Testing 目前在测试固件时使用了哪些可用的软件工具?,testing,embedded,microcontroller,firmware,Testing,Embedded,Microcontroller,Firmware,我是一名软件工程师,将/可能被聘为固件测试工程师。我只是想了解一下市场上用于测试固件的一些软件工具。您能否陈述它们并解释一下它们为固件提供的测试类型?提前感谢。以下是一些我发现很有用的固件测试技术 在PC机上进行单元测试;i、 例如,从固件中提取一个函数,并在更快的平台上编译和测试它。例如,这将使您能够彻底地测试一个函数,而这将在现场耗费大量时间 使用自由运行的硬件计时器对固件中断处理程序进行测试:进入和退出时的滴答声,以及中断计数。跟踪每个中断处理程序的最小和最大频率及周期。该数据可用于进行利

我是一名软件工程师,将/可能被聘为固件测试工程师。我只是想了解一下市场上用于测试固件的一些软件工具。您能否陈述它们并解释一下它们为固件提供的测试类型?提前感谢。

以下是一些我发现很有用的固件测试技术

  • 在PC机上进行单元测试;i、 例如,从固件中提取一个函数,并在更快的平台上编译和测试它。例如,这将使您能够彻底地测试一个函数,而这将在现场耗费大量时间

  • 使用自由运行的硬件计时器对固件中断处理程序进行测试:进入和退出时的滴答声,以及中断计数。跟踪每个中断处理程序的最小和最大频率及周期。该数据可用于进行利率单调分析或期限单调分析

  • 使用标准协议,如Modbus RTU,按需提供一系列状态数据。这可用于配置和验证数据

  • 使用自动构建过程(例如,通过从源代码存储库获取版本信息)将固件版本号构建到代码中。使用#3提供版本号

  • 使用lint或其他静态分析工具。要求lint和带-Wall的编译器发出零警告

  • 通过将固件的CRC嵌入到代码中并在运行时进行检查来扩充构建工具


  • 测试有多种形式,可以在不同阶段进行。除了在编写代码之前进行设计验证外,代码测试还可以分为单元测试、集成测试、系统测试和验收测试(尽管确切的条款和阶段数量可能非常有限)。在V模型中,这些将与需求和设计开发的阶段水平对应。此外,在开发和维护中,您可能会执行回归测试,以确保在应用其他更改时,已修复的错误保持不变

    就工具而言,可分为静态分析和动态分析。静态工具在不执行的情况下分析源代码,而动态分析则关注代码在执行期间的行为。一些(昂贵的)工具执行“抽象执行”,这是一种静态分析技术,用于确定代码在执行过程中如何失败,而无需实际执行。这种方法的计算成本很高,但可以处理比传统动态分析多得多的执行路径和可变状态

    静态分析的最简单形式是代码审查;让一个人来读你的代码。即使表面上是手动操作,也有一些工具可以提供帮助,例如。同样,动态分析的最简单形式是在调试器中单步执行代码,甚至只是在各种测试场景中运行代码。第一种方法可以由程序员在单元开发和调试期间完成,而后者更适合于验收或集成测试

    虽然代码审查做得好可以消除大量错误,特别是设计错误,但它在查找由编程语言的微妙或神秘语义引起的某些类型的错误方面可能效率不高。这类错误有助于使用静态分析工具(例如,或)进行自动检测,尽管成本较低的方法(例如,将编译器的警告级别设置为高,并使用多个编译器编译)也很有用

    动态分析工具有多种形式,如代码覆盖率分析、代码性能评测、内存管理分析和边界检查


    高端工具/供应商包括,(抽象分析工具)和。在低端(在价格上,不一定有效)是诸如PC Lint和甚至是开源(仅C)之类的工具,我发现大量压力测试非常有用。这通常意味着在短时间内为系统提供大量输入,并查看它如何处理。输入可以是

    • 有大量数据要处理的文件。例如,我需要一个文件,其中包含需要由报警设备分析的波形数据
    • 在另一台计算机上运行的应用程序接收的数据。例如,生成随机触摸屏按下/释放数据并将其发送到调试端口的设备的程序

    这些类型的测试可以消除很多bug(特别是在性能既关键又有限的系统中)。一个好的日志系统也很好,因为它必须跟踪压力测试引起的错误的原因

    我看到很多关于嵌入式风格工作的招聘信息,他们希望熟悉调试。@sarnold:JTAG本身不是一个“测试工具”;它只是指开发主机调试器和包含片上调试硬件的处理器之间的物理连接和通信,避免了对昂贵的外部电路内仿真器硬件或基于不太健壮的软件的远程调试监视器的需要。任何把它作为一个特定的工作需求的人可能都不太了解它到底是什么,实际上只是想获得硬件调试器/ICE的总体经验。不管怎样,我认为这与手头的问题没有多大关系。重要的是要强调的是,极其昂贵的静态分析仪并不比价格为10%的分析仪好多少。我自己也在使用LDRA,它花费了很多钱,但它的性能并不比其他工具好。区别在于LDRA非常容易触发,即使删除了大量检查,它也会为每个真实问题提供大约100个错误。使用几个不同的分析器检查代码是一个好主意,因为它们都有自己的缺陷。@Lundin:当然。我确实提到过,图格