Course 339:
Implementing Test-Driven Development

(2 days)


Course Description

Test-Driven Development (TDD) is an evolutionary approach to development where you must first write a test that fails before you write new functional code. It was developed by Kent Beck and Ward Cunningham. It is primarily an agile approach to software development and is one of the principles of Extreme Programming. This course provides an introduction to test-driven development and test-first design.

Learning Objectives

  • Introduce the concept of development agility and the Agile Manifesto
  • Review each of the major Agile development methods underscoring their strengths and weaknesses
  • Understand how to manage an agile environment even within a structured organizational approach
  • Learn how to introduce agility into a development organization

Who Should Attend

Managers, programmers, developers, executives, and anyone interested in learning the benefits of agile development.

Course Outline

Unit 1: General Approach to Software Development

  • The Software Development Process
    • Mandatory Elements
    • Transitions
  • The SDLC Timeline
    • Problem
    • Requirements
    • Analysis and Design
    • Build
    • Test
  • The Sophisticated Standard (IEEE)
  • The Problem with Late Testing
  • General Approaches to Quality Assurance

Unit 2: Basis for Test-Driven Development

  • Rationale for Test-Driven Development
    • Timeboxing
    • Accommodating Change
  • Test First Development
  • Test-Driven Development
    • Specification Not Validation
  • Benefits of TDD Approaches
  • Limitations of TDD
  • TDD Pragmatics: Project Size, Team Size, Languages
  • TDD and Traditional Testing Practices

Unit 3: Application of TDD

  • Rules of TDD
  • Write the Test
  • Write the Code
  • Refactor
  • Automation of TDD
  • Framework for an Integrated Test (FIT)
  • Using JUNIT
  • Unit and Integration Testing with TDD
  • White Box and Black Box Testing with TDD
  • Agile Acceptance Testing
    • Individuals and Interactions
    • Customer Collaboration
    • Working Software
    • Response to Change
  • The Safety Net Effect

Unit 4: Incorporating TDD into Agile Methods

  • Extreme Programming
  • Working in Pairs
  • Testing and Coding Trade-off
  • Scrum
  • Working in Teams
  • Incorporating a Quality Control Role
  • Agile Modeling
  • TDD as a Modeling Approach
  • Other Agile Approaches
  • Applying TDD to Structured Approaches?

Unit 5: The Bottom Line

  • Ideas to Use
  • Where to Go for More Information

Please Contact Your ROI Representative to Discuss Course Tailoring!