Test-Driven Development for C or C++ Training | Remotely Delivered via Web-meeting

This training course helps you build knowledge, understanding and skill in the engineering practices needed to build great C or C++ code. You learn how to build flexible and modular software with very few defects, software that can have a long useful life. We teach you how to prevent defects and how to keep code clean over years of evolving needs.

This course is a good option for individuals trying to sharpen skills, or small teams where an on-site class is not a good fit. It is also a good way for your team to get started and to know us better.

Dates, Times and Cost

We currently do not have any courses scheduled. We usually have one or two per quarter. Please contact us. and let us know your needs, or keep an eye on this page. We may be able to schedule a course that works for you. You can join our mailing list to be notified of coming public courses and new articles.

How is this delivered?

This course is delivered over the web, with James Grenning teaching live. The meeting will be hosted by WebEx or a similar service. You do not need an account. Here is the Wingman Software Command Center for remote course delivery

During our three five-hour days together we will go through three cycles of

Present - Demonstrate - Exercise - Debrief

In this course you'll learn why you should care about TDD. Engineers like to solve problems. What problem does TDD help you solve? Actually there are several, we'll start with the most obvious problem: defects in code.

TDD helps prevent defects! You'll discover that with TDD you can detect your mistakes and fix mistakes moments after you make them. The payback is in the initial release, as you waste less time chasing bugs, and you check something in that actually works! You'll later see other benefits you get from test-driving.

You'll get first hand experience doing the small verified steps of TDD. You will really know what TDD is and what it is not when you finish this course.
You'll interact with James as you go.
Exercises are done on Wingman Software's customized cyber-dojo.org cloud-based server. You (or your team) is given an identity and an icon.

James monitors your progress on the cyber-dojo dashboard. He can tell when you get in trouble. The traffic signals tell the story. A green traffic signal means tests are passing, red means they are failing and yellow means you have broken the build.

Strings of red or yellow traffic signals mean you may have dug yourself into a hole and could use a hand up.

With a click on the dashboard, James can see your progress and help you make progress on your journey to learn TDD. As an added bonus, you may learn the first law of holes (when you find yourself in a hole, stop digging!).

Our web-delivered and live on-site training follow the same approach, although James can also use the look over the shoulder technique in live courses.

Course Details

  • Three 5 hour Sessions over three consecutive days - Hands-on exercises
  • Languages C or C++


  • Embedded Software Developers
  • Software Developers
  • Technical team leaders
  • Managers that want to know the technology they manage


  • C or embedded C programming experience

Setup and Facilities Requirements

  • High speed internet for Web meeting
  • Web browser
  • No computer setup required
  • Exercises hosted on a private cyber-dojo.org server.

Course Outline

  • Test Driven Development
    • Why Test Driven Development?
    • What is Test Driven Development?
    • The Microcycle
    • Exercise
  • Adapting TDD to Embedded Software Development
    • Leveraging the Development System
    • Risks of Development System Unit Testing
    • Embedded TDD Cycle
    • Hardware/Platform Independence
  • TDD and Collaborating Modules
    • Separation of Responsibilities
    • Keeping Tests Clean
    • Tests as Detailed Documentation
    • Exercise
  • Test Fakes, Stubs, Doubles, Mocks
    • Spying on the Hardware
    • Faking the Time
    • Link-time Fake
    • Runtime Fake
  • Test-Driving Next to the Silicon With Mocks
    • The Problem Solved by Mock Objects
    • TDD One Instruction Away from the Hardware
    • Exercise
  • Refactoring
    • Critical Skills
    • Code Smells
    • Envisioning
    • Transforming
  • Working with Legacy C
    • Legacy Code Mindset
    • Boy Scout Rule
    • Crash to Pass Algorithm
    • Learning Tests
    • TDD and Bug Fixes; Exercise
  • Wrap up Discussion