|
1 | 1 | # Embedded Testing |
2 | 2 | [](https://awesome.re) |
| 3 | +[](https://github.com/org/repo/actions/workflows/links.yml) |
3 | 4 |
|
4 | 5 | Curated list of tools and resources for testing Embedded and Low-level software |
| 6 | + |
| 7 | +## Table of Contents |
| 8 | +- [Embedded Testing](#embedded-testing) |
| 9 | + - [Table of Contents](#table-of-contents) |
| 10 | + - [Books, blogs and training materials](#books-blogs-and-training-materials) |
| 11 | + - [Test Frameworks](#test-frameworks) |
| 12 | + - [Rust Test Frameworks](#rust-test-frameworks) |
| 13 | + - [General Embedded Testing Frameworks](#general-embedded-testing-frameworks) |
| 14 | + - [Mocking and Hardware Simulation](#mocking-and-hardware-simulation) |
| 15 | + - [Embedded Integration & Continuous Integration (CI)](#embedded-integration--continuous-integration-ci) |
| 16 | + - [Static & Dynamic Analysis](#static--dynamic-analysis) |
| 17 | + - [Embedded-Specific Testing Techniques & Tools](#embedded-specific-testing-techniques--tools) |
| 18 | + - [Test Automation & Hardware-in-the-Loop (HIL)](#test-automation--hardware-in-the-loop-hil) |
| 19 | + - [Examples & Reference Projects](#examples--reference-projects) |
| 20 | + |
| 21 | +## Books, blogs and training materials |
| 22 | + |
| 23 | +## Test Frameworks |
| 24 | +### Rust Test Frameworks |
| 25 | +- **[embedded-test](https://crates.io/crates/embedded-test)** Rust test harness and runner for embedded devices  |
| 26 | + |
| 27 | +### General Embedded Testing Frameworks |
| 28 | +- **[Ceedling/Unity](https://github.com/ThrowTheSwitch/Ceedling)** – Popular C-based unit testing and build framework, great for small to medium-sized embedded projects.  |
| 29 | +- **[GoogleTest (gtest)](https://github.com/google/googletest)** – Widely used and highly customizable C++ testing framework, commonly adopted in embedded C++ projects.  |
| 30 | +- **[CppUTest](https://github.com/cpputest/cpputest)** – Flexible testing framework tailored specifically to embedded software, emphasizing memory safety and simplicity.  |
| 31 | +- **[Catch2](https://github.com/catchorg/Catch2)** – Modern C++ testing framework known for ease of use and expressive assertions, lightweight enough for embedded targets.  |
| 32 | + |
| 33 | +### Mocking and Hardware Simulation |
| 34 | +- **[CMock](https://github.com/ThrowTheSwitch/CMock)** – Generates mock objects automatically for C, ideal for testing interactions with hardware-dependent code.  |
| 35 | +- **[Fake Function Framework (FFF)](https://github.com/meekrosoft/fff)** – Lightweight, simple mocking framework for C-based embedded software.  |
| 36 | +- **[Renode](https://github.com/renode/renode)** – Powerful framework for hardware simulation and testing, allowing execution and debugging of embedded binaries without actual hardware.  |
| 37 | +- **[QEMU](https://github.com/qemu/qemu)** – Widely adopted open-source emulator, very useful for full-system simulation of embedded platforms during testing.  |
| 38 | +- **[embedded-hal-mock](https://github.com/dbrgn/embedded-hal-mock)** – Mocks for testing embedded-hal based drivers without hardware access.  |
| 39 | + |
| 40 | +### Embedded Integration & Continuous Integration (CI) |
| 41 | +- **[PlatformIO](https://github.com/platformio/platformio-core)** – Cross-platform build tool and package manager, ideal for automating builds and tests for embedded projects.  |
| 42 | +- **[Embench](https://github.com/embench/embench-iot)** – Open-source benchmarking suite specifically targeting IoT-class embedded systems.  |
| 43 | +- **[Robot Framework](https://github.com/robotframework/robotframework)** – Generic acceptance-test automation framework, commonly used for higher-level integration and system tests.  |
| 44 | + |
| 45 | +### Static & Dynamic Analysis |
| 46 | +- **[Cppcheck](https://github.com/danmar/cppcheck)** – Popular static analysis tool specifically tailored for C and C++ codebases.  |
| 47 | +- **[Valgrind](https://github.com/paulfloyd/freebsd_valgrind)** – Dynamic analysis tool useful for memory leak detection and error tracking.  |
| 48 | +- **[Clang Sanitizers](https://github.com/google/sanitizers)** – Effective runtime debugging tools for detecting memory safety errors in embedded C/C++ applications.  |
| 49 | + |
| 50 | +### Embedded-Specific Testing Techniques & Tools |
| 51 | +- **[Embedded Artistry's Embedded Testing Guides](https://github.com/embeddedartistry/embedded-resources)** – Curated resources and examples for best practices in embedded software testing.  |
| 52 | +- **[Tracealyzer](https://github.com/Percepio)** *(Commercial with free tiers)* – Real-time trace visualization for debugging and performance analysis of embedded systems.  |
| 53 | + |
| 54 | +### Test Automation & Hardware-in-the-Loop (HIL) |
| 55 | +- **[Labgrid](https://github.com/labgrid-project/labgrid)** – Automation framework for hardware-in-the-loop testing, integrates smoothly with continuous integration.  |
| 56 | +- **[OpenHTF](https://github.com/google/openhtf)** – Hardware testing framework from Google designed for automated manufacturing tests and HIL testing.  |
| 57 | + |
| 58 | +### Examples & Reference Projects |
| 59 | +- **[Nasa JPL's F Prime](https://github.com/nasa/fprime)** – NASA's open-source flight software framework, extensively tested and validated.  |
| 60 | +- **[LittlevGL](https://github.com/lvgl/lvgl)** – Embedded GUI library extensively using unit tests and automated integration testing.  |
0 commit comments