Still chasing bugs and watching your code deteriorate? Think TDD is only for desktop or web apps? It’s not: TDD is for you, the embedded C programmer. TDD helps you prevent defects and build software with a long useful life. This is the first book to teach the hows and whys of TDD for C programmers.

Buy Now

Select a DRM-free Format:

In Stock
In Stock
In Stock
Buy the eBook and get these DRM-free formats delivered immediately:
  • epub (for iPhone/iPad, Android, eReaders)
  • mobi (for Kindle)
  • PDF
We can automatically send them to your Dropbox. (You'll need to log in to enable these options.)

About this Book

  • 352 pages
  • Published:
  • Release: P3.0 (2014-09-09)
  • ISBN: 978-1-93435-662-3

TDD is a modern programming practice that all C developers need to know. It’s a different way to program—unit tests are written in a tight feedback loop with the production code. You get valuable feedback every few minutes. You find mistakes before they become bugs. You get early warning of design problems. You get immediate notification of side-effect defects. You get to spend more time adding valuable features to your product.

James is one of the few experts in applying TDD to embedded C. With his years of training, coaching, and practicing TDD in C, C++, Java, and C# he will lead you from being a novice in TDD to using the techniques that few have mastered.

This book is full of code written for embedded C programmers. You don’t just see the end product, you see how code and tests evolve. James leads you through the thought process and decisions made each step of the way. You’ll learn techniques for test-driving code right next to the hardware, and you’ll learn design principles and how to apply them to C to keep your code clean and flexible.

To run the examples in this book, you will need a C/C++ development environment on your machine, and the GNU GCC tool chain or Microsoft Visual Studio for C++.

Contents and Extracts

Full Table of Contents

  • Test Driven Development
  • Getting Started
    • Test Driving Tools and Conventions
    • Starting a C Module
    • Testing Your Way to Done
    • Embedded TDD Strategy excerpt
    • Yeah but…
  • Testing Modules with Collaborators
    • Introducing Test Doubles
    • Spying on the Production Code excerpt
    • Runtime-Bound Test Doubles
    • The Mock Object
  • Design and Continuous Improvement
    • SOLID, Flexible, and Testable Designs
    • Refactoring
    • Adding Tests to Legacy Code
    • Test Patterns and Antipatterns
    • Closing Thoughts
  • Appendixes
    • Development System Test Environment
    • Unity Quick Reference
    • CppUTest Quick Reference
    • LedDriver After Getting Started
    • Example OS Isolation Layer

About the Author

James Grenning trains, coaches, and consults worldwide. He started developing software in the late 1970s and has worn many hats, including embedded systems engineer, technical lead, and engineering manager. James invented Planning Poker, an Agile estimation technique, and is one of the original authors of the Manifesto for Agile Software Development.

Comments and Reviews

  • This book is targeting the embedded-programmer-on-the-street and hits its target. It is neither spoon-fed baby talk nor useless theory-spin. In clear and simple prose, James shows working geeks each of the TDD concepts and their C implementations. Any C programmer can benefit from working through this book.

    —Michael “GeePaw” Hill Senior TDD coach Anarchy Creek Software
  • “Test-Driven Development for Embedded C” is the first book I would recommend to both C and C++ developers wanting to learn TDD, whether or not their target is an embedded platform. It’s just that good.

    —C. Keith Ray Agile coach/trainer Industrial Logic, Inc.
  • This book is a practical guide that sheds light on how to apply Agile development practices in the world of embedded software…I can heartily recommend reading this book; it’s a great way to learn how you can apply Test-Driven Development for embedded C.

    —Rachel Davies Author of "Agile Coaching," Agile Experience Limited
  • I have been preaching and teaching TDD in C for years, and finally there is a book I can recommend to fellow C programmers who want to learn more about modern programming techniques.

    —Olve Maudal C programmer Cisco Systems
  • James is a true pioneer in applying Agile development techniques to embedded product development…this book was worth waiting for. This is a good and useful book that every embedded developer should read.

    —Bas Vodde Author of "Scaling Lean and Agile Development" and "Practices for Scaling Lean and Agile Development," Odd-e, Singapore
  • In this much-needed book, Agile methods expert James Grenning concisely demonstrates why and how to apply Test-Driven Development in embedded software development…with this book by my side, I’m ready to plunge right in and certain I can apply TDD even to device drivers and other challenging low-level code.

    —Michael Barr Author of "Programming Embedded Systems: With C and GNU Development Tools" and "Embedded C Coding Standard," Netrino, Inc.