Essential Test-Driven Development Course | Agile + DevOps East

Conference archive

Essential Test-Driven Development

A Revolutionary Approach to Software Design and Programming

Providing hands-on experience with the techniques of Test-Driven Development (TDD), this three-day course for developers covers the techniques of test-first, refactoring, mock objects, and more. This set of practices for developers is at the heart of low-defect agile software development.

Upcoming Classes

Contact us for more information 904.278.0524 or 888.268.8770

Select a learning mode button (Public, Live Virtual, etc.) for pricing, details, and a downloadable fact sheet.
  • Learn the history and value of Test-Driven Development
  • Explore the five practices that comprise TDD
  • Understand the test-first mindset and use it as Just-in-Time problem analysis
  • Learn refactoring as Just-in-Time design
  • Practice adding characterization tests to legacy code
  • Learn about emergent design and simple design
  • Use mock objects to decouple difficult dependencies

Essential Test-Driven Development is a 3-day course for developers, providing hands-on experience with the techniques of Test-Driven Development (TDD).  This course is designed for experienced developers who are comfortable with their programming language and the basics of object-oriented design.  Attendees learn the techniques of test-first, refactoring, mock objects, and others.  They learn how these techniques provide and maintain a very low defect-count, plus why TDD helps developers work fearlessly, swiftly, and comfortably on new features and bug-fixes.  Attendees will also learn how to work on legacy code:  building test-coverage for critical areas, and protecting areas of the legacy system that do not yet require any alteration.

This set of practices for developers is at the heart of low-defect agile software development.  These techniques allow incremental development and Emergent Design to flourish, without degrading quality.  This course also contains a significant section on the not-so-pleasant task of adding unit tests to legacy code.  The course is currently offered in Java, JavaScript, C#,, or C++.

Who Should Attend/Prerequisites?
This is an intermediate to experienced level course intended for software developers. Attendees should have competence with either the Java, Javascript,, C++, or C# programming languages, a familiarity with basic object-oriented principles of design and a basic familiarity with an Agile framework such as Scrum or Kanban.
This course involves hands-on programming. Please bring a laptop with your IDE loaded. If you have any difficulty bringing a laptop, please let us know immediately.

Questions? 929.777.8102 [email protected]
Course Outline

Introductions and Logistics

High-Level Overview, Basics, and Getting Started
Basic syntax for the xUnit family of unit-testing frameworks
Group TDD exercise/lab
Review the basic steps
Parsing "unit test"
The big picture exercise
Discipline: A user-friendly definition

Tested-trek exercise

Refactoring and Design
Brief review of "simple design" rules, emergent design and others

Refactoring to OCP
Map of Mars: Demonstrating the Open-Closed Principle (OCP), refactoring, and emergent design

Just-in-Time problem analysis
The computer-science perspective
Password checker exercise
The broken set exercise

Test Doubles
Mock historian exercise
Painful dependencies
Two simple approaches to building mocks
The LunEx exercise

Legacy Code
Definitions of "legacy"
What code to deal with today
The testing/refactoring, chicken/egg problem
The Mess-Trek exercise

The battleship game exercise

Other Topics (Time Permitting)
TDD and agile
BDD overview

Course Retrospective


On-Site Training

Let us bring the training directly to you! Choose from over 60 courses.

Combine World-Class Training and

Certification with a Conference

Maximize Your Learning Potential

STAR Conference logo

Agile + DevOps Conference logo

Agile Testing Days Conference logo