This three-day instructor-led course simulates true agile development by mapping user stories to acceptance tests to test-first unit tests through realistic examples and exercises.
As a group, the class will start by specifying acceptance criteria for a given set of functionality. These will be translated in to acceptance tests that can be automated with tools such as FitNesse or Cucumber. These tests will of course fail at first, which will task the participants, in pairs, to define the system interface specifications in the form of unit tests. This will extract the development of the interface and all subsequent code and design until all unit tests and acceptance tests pass.
Object-oriented programmers interested in learning more about agile development methods and best practices.
Participants will learn to:
- Extract acceptance criteria from a set of features
- Use an acceptance testing tool
- Use a unit testing tool
- Structure tests with four distinct phases: Setup, Exercise, Verify, Teardown
- Develop code using the TDD cycle: Red, Green, Refactor
- Use a code coverage tool
- Strike a comfortable balance between unit and acceptance testing
- Identify the limitations of unit and acceptance testing
- Differentiate between Test-Driven Development and Behavior-Driven Development
- Design good unit tests that are independent and fast
- Separate unit testing from integration testing
- Use dummies, stubs, fakes and mocks as appropriate to achieve test isolation and repeatability
- Leverage TDD to build robust object designs
- Detect suspicious code (smells)
- Apply techniques for refactoring code
- Recognize when and how to test existing code (legacy code, untested code)