iDIA Computing, LLC

effective software development

Test Driven Development and Refactoring

Description

Of all the Agile engineering practices, Test Driven Development (TDD) seems to be the one that draws the most interest, but also the most misconceptions. Having unit tests is not a reliable indicator that TDD is being followed. Nor is a suite of unit tests the primary goal of TDD (though it's a great secondary goal).

TDD done right gives you code that doesn't paint your developers into a corner. You get reliable, modular code that does what the developer thinks it does, and can be easily extended and modified for new requirements in the future.

Your CFO will appreciate that TDD done right costs less than adding unit tests after writing the code. Instead of adding onto the development cycle, TDD done right piggy-backs on the time that developers already spend thinking about how to write the code. It just asks them to think in a little bit different way than they're accustomed.

The course was one of the most useful courses we've had to date.

Course Outline

  • Refactoring
    • What it is, and what it is not
    • Examples & practice
  • Why Refactor?
    • Design principles
    • Simple Design
    • Code smells
    • Design Patterns
    • Testability
  • What is Test Driven Development?
    • Installing and running xUnit
    • Choice of syntax; TDD vs BDD
    • TDD Patterns & Concepts
    • Red . Green . Refactor, Baby steps
  • TDD Situations
    • A first test, when there is no code
    • Test-driving a class
    • Test-driving object clusters
    • Dealing with external dependencies—databases, filesystems, real time
    • Test doubles: Fakes, Spies, Mocks
    • Dealing with legacy code
    • Story testing; Acceptance Test Driven Development

A different way to write software. It makes sense, so I'll give it a try.

In-house training

Limit of 16 participants to ensure the individual attention that makes this course a success.

This is a three-day course using the typical course outline as shown and working in Java or C#/.NET. It can be customized for your team to emphasize particular issues of interest and the implementation language of your team.

Email idia -at- idiacomputing.com to for details on scheduling a course at your company, or in a location of your choosing. (Or contact me via phone or other methods.)