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. Exercises are done on a customized cyber-dojo.org cloud based server. James can see every line of code you write.

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