Course Overview

The ability to build bug-free, highly maintainable software is quickly becoming the single most important aspect of a productive programming team, and Test Driven Development (TDD) is the keystone to this success. Although deceptively simple from the outside, TDD is a skill that takes time and guidance to master. Many teams fail to overcome this hurdle by themselves and end up reverting back to shoddy practices. In this hands-on, activity-filled course we will help you to master the skills and mindsets that allow for productive Test Driven Development success for your team.

At your option, this course will spend a significant portion of time working with the technologies your team is currently using. Some technology stacks may at first seem unfriendly to TDD (Windows Forms, WPF, ASP.NET, MVC, etc.), and this can be one of the first hurdles you encounter when returning to your project. This section (customized to your particular stack) will help ensure that the skills you learn can be put into immediate action. The course is extremely hands on, and students will not only be coding the entire time, but coding with each other. This will feel more like a boot camp than a traditional lecture-and-listen type training.

Key Learning Areas

  • Learn to take new requirements and quickly implement them through the use of TDD to produce working, bug free, software
  • Use of user stories to better define requirements
  • Turn those user stories into unit tests
  • Use of mocks to test against seemingly 'un-testable' conditions
  • Writing tests against web (ASP.NET) and client applications (Windows Forms and WPF)
  • Produce cleaner, more modular code
  • Avoid the pitfalls of un-manageable tests
  • Use of automated regression suites
  • Learn to deliver code in significantly shorter release cycles

Course Outline

  • Overview of Agile
  • Getting Started with TDD
  • Behavior Driven Development
  • Advanced User Scenario Testing
  • Refactoring & Emergent Design
  • Seams & Dependency Injection

Who Benefits

Developers and Project Managers interested in implementing TDD to improve the quality of their code, and greatly increasing the efficiency and success rate of their projects. Implemented correctly, TDD is an important part of the overall software development process.

Prerequisites

Developers who attend this course should have a basic understanding of C#.