Test-Driven Development (TDD) is a powerful technique for building reliable software. This hands-on course teaches the best practices of TDD with a focus on the challenges unique to testing embedded software, such as concurrent hardware and software development, long download/reflashing times, and restricted visibility. The course shows how TDD can be used to reign in unpredictable schedules as well as reduce bugs.

Course Length

  • 2 days (hands-on)


  • Embedded software developers
  • Technical leaders and managers


The following outline is provided as a summary of the major course topics and should not be taken as literally the section-by-subsection lecture breakdown.

  • 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
    • Run-time 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
    • TDD and Bug Fixes
    • Exercise
  • Wrap-up Discussion


Attendees should be experienced with the C programming language and have a general familiarity with embedded software development.

Find out More

Please Contact Us to find out about bringing this course to your company.

Related Courses