Courses > Practical Test-Driven Development

Practical Test-Driven Development
A Revolutionary Approach to Software Design and Programming

In Practical Test-Driven Development training you will:

  • Practice using test-first design development methods
  • Experience writing unit tests before writing production code
  • Automate all unit testing with xUnit
  • Gain experience developing programs in small verifiable steps for better designs
  • Use test-driven development to add new functionality to applications without adding bugs
  • Learn how to refactor (re-design) existing applications to make them more maintainable
  • Improve design by developing programs in small steps
  • Learn how to incrementally add new unit tests to legacy code while preserving existing behavior

    This hands-on course shows you how to use automated unit tests to drive your program design and deliver code with fewer bugs. You will practice development using the xUnit tool for unit testing. With extensive practice sessions, experience the revolutionary approach of letting tests drive your development. Learn how to keep new designs clean and simple through refactoring and how to transform unreadable code into well-structured, modular programs.

    Approach design from the outside in by writing running code to satisfy automated tests to incrementally grow well-formed, easily maintainable systems.

    Hands-on Exercises to Improve Test-Driven Development Skills
    This course contains a series of hands-on exercises to improve your refactoring skills in areas such as: recognizing poor code constructs, learning to improve design in small safe steps, using the xUnit framework (JUnit, NUnit, or C++ Unit Lite), driving object interface design with intentions, test-first programming, using Mock objects, and understanding the role of acceptance tests.

    Who Should Attend
    This is a technical course for software developers who have experience working with an object-oriented language and want to learn a new, test-driven approach to object programming. Working in pairs is encouraged—bring a friend!


    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.  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.

    3-Day Topical Outline

    Typical vs. Iterative/Evolutionary Development Cycles

    Refactoring
    What is refactoring?
    Identifying refactoring opportunities: code smells
    Working effectively with legacy code
    Principles and patterns of dependency management

    Test-Driven Development
    Test-driven development overview
    Testing frameworks: using xUnit (JUnit, CppUnit, NUnit)
    Building test classes
    Driving design of a single class
    Testing patterns, mock object, dependency injection, ect.
    Putting old code under pinning tests
    Test-driven development in your group

    The Definitions of “Legacy Code”
    Evaluating costs/benefits of maintaining legacy code
    Techniques for maintaining legacy code
    TDD Immersion Exercise

    About the Speaker: 
    A fellow consultant with Net Objectives, Ken Pugh has more than two-fifths of a century of experience in software development—from gathering requirements for stock market analysis to testing real-time radar systems. Ken consults, trains, testifies, and mentors from London to Sydney on lean/agile processes and technology topics ranging from object-oriented design and test-driven development to Linux/Unix. He has written several programming books, including the Jolt Award winner Prefactoring and Interface Oriented Design. He is currently writing Lean-Agile Acceptance Test-Driven Development. When not computing, Ken enjoys snowboarding, windsurfing, biking, and hiking the Appalachian Trail. Ken can be reached at ken.pugh@netobjectives.com.