103: Tentacles Of the Kraken

Embedded.fm · 3 Jun 2015 · 1h 09m

What this episode covers

Mark VanderVoord, lead maintainer of the open source testing frameworks Unity and CMock, explains how test-driven development (TDD) and mocking help embedded engineers design better code without needing full hardware simulators. He details the workflow of using CMock to generate fake interfaces for hardware drivers like I2C, allowing developers to test logic in a native host environment. VanderVoord also discusses the challenges of maintaining these tools, his new online course on ThrowTheSwitch.org, and the business model of supporting free open source projects through books and classes.

Mentioned

Companies
ThrowTheSwitch.org
Tools
Unity, CMock, CppUTest, SeedLink

Other shows on the same ground, closest first.

  • The Pragmatic Embedded Podcast · 47m

    Ceedling

    Mark VanderVoord and Michael Karlesky, creators of the open-source testing tools Unity, CMock, and Ceedling, discuss the evolution of embedded software testing. They explain that while their tools lower the barrier to unit testing, the primary challenge for embedded developers is conceptual: understanding what to test and how to mock hardware dependencies. The conversation highlights the lack of standardized system and integration testing frameworks, the mixed utility of simulators like QEMU, and the growing influence of the Arduino community on embedded development practices. They conclude by announcing the upcoming Ceedling 1.0 release and the launch of Ceedling Pro for commercial support.

  • The Pragmatic Embedded Podcast · 36m

    Writing Firmware without Hardware (featuring Matt Chernosky)

    Matt Chernosky, author of 'A Field Manual for Ceedling', explains how to write and test embedded C firmware on a host PC using Ceedling, Unity, and CMock to enable rapid Test-Driven Development (TDD). He argues that removing hardware dependencies allows for instant feedback loops, better architecture through hardware abstraction layers, and easier continuous integration. The discussion covers strategies for introducing TDD to legacy codebases, the role of automated unit tests in medical device compliance, and the importance of testing high-risk, changing code rather than aiming for 100% coverage.

  • The Pragmatic Embedded Podcast · 36m

    Development is Better when it's Test-Driven

    Jeff Gable, an embedded software consultant, explains his practice of Test-Driven Development (TDD) to host Luca Ingianni, arguing that writing failing unit tests before application code forces good architecture and high coverage. Gable details how this discipline decouples embedded application logic from hardware-specific drivers, allowing tests to run on the host machine for rapid feedback rather than slow target flashing. He addresses the common industry resistance to TDD in embedded systems, citing the initial learning curve and the need for coaching, while recommending resources like the 'Throw the Switch' video courses and tools such as Unity, CMock, and Ceedling. The conversation concludes by framing TDD as an artistic craft of storytelling through code, emphasizing that the practice builds confidence and prevents regressions in production-quality software.

  • OnTrack · 56m

    Embedded Systems Engineer Discusses AI-Driven Testing Revolution

    Ari Mahpour, an Embedded Systems Engineer at Rivian with prior experience at NASA JPL and Virgin Hyperloop, discusses the integration of AI and DevOps into embedded hardware development. He demonstrates 'vibe coding' with an Arduino using voice commands and LLMs, explaining how AI agents can autonomously write, compile, and test firmware. Mahpour also covers the challenges of managing hardware revisions, the importance of Model Context Protocol (MCP) for tool guardrails, and the future of AI in automated PCB design and testing.

  • The Pragmatic Embedded Podcast · 42m

    TDD for UI

    Jeff Gable and Luca discuss how to apply Test Driven Development (TDD) to user interfaces for embedded systems, specifically addressing a listener's struggle with the GTKmm framework in a medical device context. They argue that UI frameworks should be treated like hardware—abstracted away via thin shim layers—so that business logic remains unit-testable. The hosts advise against automating UI tests due to brittleness, recommending instead a combination of rigorous unit testing for logic, automated integration tests via serial interfaces, and periodic manual exploratory testing for the UI.

The summary, chapters and topics are generated from the episode’s audio by this directory, not written by Embedded.fm. The episode itself belongs to its publisher.