Skip to content

Curated list of tools and resources for testing Embedded and Low-level software

Notifications You must be signed in to change notification settings

onmcu/awesome-embedded-testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Embedded Testing

Awesome Check Links

Curated list of tools and resources for testing Embedded and Low-level software

Table of Contents

Books, blogs and training materials

Test Frameworks

Rust Test Frameworks

  • embedded-test Rust test harness and runner for embedded devices Lang: Rust

General Embedded Testing Frameworks

  • Ceedling/Unity – Popular C-based unit testing and build framework, great for small to medium-sized embedded projects. Lang: C
  • GoogleTest (gtest) – Widely used and highly customizable C++ testing framework, commonly adopted in embedded C++ projects. Lang: C++
  • CppUTest – Flexible testing framework tailored specifically to embedded software, emphasizing memory safety and simplicity. Lang: C++
  • Catch2 – Modern C++ testing framework known for ease of use and expressive assertions, lightweight enough for embedded targets. Lang: C++

Mocking and Hardware Simulation

  • CMock – Generates mock objects automatically for C, ideal for testing interactions with hardware-dependent code. Lang: C
  • Fake Function Framework (FFF) – Lightweight, simple mocking framework for C-based embedded software. Lang: C
  • Renode – Powerful framework for hardware simulation and testing, allowing execution and debugging of embedded binaries without actual hardware. Lang: Multi
  • QEMU – Widely adopted open-source emulator, very useful for full-system simulation of embedded platforms during testing. Lang: Multi
  • embedded-hal-mock – Mocks for testing embedded-hal based drivers without hardware access. Lang: Rust

Embedded Integration & Continuous Integration (CI)

  • PlatformIO – Cross-platform build tool and package manager, ideal for automating builds and tests for embedded projects. Lang: Multi
  • Embench – Open-source benchmarking suite specifically targeting IoT-class embedded systems. Lang: Multi
  • Robot Framework – Generic acceptance-test automation framework, commonly used for higher-level integration and system tests. Lang: Python

Static & Dynamic Analysis

  • Cppcheck – Popular static analysis tool specifically tailored for C and C++ codebases. Lang: C/C++
  • Valgrind – Dynamic analysis tool useful for memory leak detection and error tracking. Lang: Multi
  • Clang Sanitizers – Effective runtime debugging tools for detecting memory safety errors in embedded C/C++ applications. Lang: C/C++

Embedded-Specific Testing Techniques & Tools

Test Automation & Hardware-in-the-Loop (HIL)

  • Labgrid – Automation framework for hardware-in-the-loop testing, integrates smoothly with continuous integration. Lang: Python
  • OpenHTF – Hardware testing framework from Google designed for automated manufacturing tests and HIL testing. Lang: Python

Examples & Reference Projects

  • Nasa JPL's F Prime – NASA's open-source flight software framework, extensively tested and validated. Lang: C++
  • LittlevGL – Embedded GUI library extensively using unit tests and automated integration testing. Lang: C