Containers and, specifically, the testcontainers framework have become one of the most popular tools for software integration testing, including embedded systems. If you can put your system under test in a container, a Docker Compose cluster, or a pod, that's likely what you'll use. If your target isn't ready, cannot be containerized, or is too heavy for testing as it is, you can always use mock testing frameworks like WireMock or MockServer in the JVM ecosystem.
Can you combine both approaches and use testcontainers to mock your systems? Absolutely! The embedded world is no exception when it comes to containers; many new projects leverage them for integration testing, or even run containers or entire Kubernetes clusters "on the edge". In such cases, reproducing target environments is costly, and various types of mocking and virtualization come to the rescue. If your system uses standard interfaces like REST, ASN.1, or gRPC, classic software testing tools like testcontainers and WireMock can work well for you.
In this talk, we will discuss how to use testcontainers and mock testing for embedded systems, and how to apply them in embedded software testing. We will focus on examples of embedded systems using Rust or C++ as programming languages, and some standard services like OpenSCADA. Similar approaches can be used in any technology stack for which the testcontainers SDK is available.
Oleg Nenashev
Oleg is an open source community builder and open hardware advocate. He is a core maintainer and board member in the Jenkins project where he writes code, mentors contributors and organizes community events. He is a technical oversight committee member in the Continuous Delivery Foundation. Oleg has a PhD degree in electronics design and volunteers in the Free and Open Source Silicon Foundation.

|