TEST-DRIVEN DEVELOPMENT

Test-Driven Development

First, an admission - this course is not so much about 'Test-Driven Development' as it is about 'Behaviour-Driven Development', a more relevant and up-to-date variant of TDD. It is more relevant because it better encapsulates where developers should be focusing their energies when designing and subsequently testing their code.

So yes, candidates will learn all the essentials skills required to properly test and refactor code - including JUnit, mocking, etc - but they will also learn how to improve the overall quality of their code by placing more emphasis on understanding and verifying behaviour.

The goal of this course is to radically alter how you approach and think about design. We believe that by the end of this course you will not only be more productive, you will also be creating better more maintainable and understandable designs.

Course Overview

testing fundamentals
  • programmer testing versus debugging
  • cost and quality
  • white and black-box testing
  • unit testing
  • testing behaviour not methods
the xUnit/TestNG family
  • test cases, suites, runners, and fixtures
  • assertions/hamcrest
  • Ant/NAnt
  • Eclipse/Visual Studio
factoring and refactoring
  • how and when
  • removing duplication
  • code smells
  • intention revealing code
  • common refactorings
testing single objects
  • the red, green, refactor rhythm
  • sufficient design
  • faking it
  • one to many
  • obvious implementation
testability and isolation
  • loose coupling and high cohesion
  • open closed principle
  • dependency inversion
  • dependency management
testing clusters of objects
  • decoupling techniques; layering, facades, dependency injection
  • IoC containers, object wiring and Spring
  • interaction versus state based testing
  • mocking versus stubs
  • static and dynamic mocks
  • interface discovery through mocking
  • anti-patterns; statics, globals and singletons
miscellaneous
  • tdd versus design by contract
  • coverage
  • continuous integration

Audience

Java or C# developers looking to improve the quality of their code, willing to embrace change and accept new ideas.

Pre-requisites

The best way to understand test-driven development is to do it in practice. Accordingly, the majority of your time on this course will be spent working through hands-on exercises.

Attendees should bring a solid understanding of Java/C# and OO design principles. Facilities should include a whiteboard or flip chart; a projector for a laptop; and adequate workstations with your preferred IDE installed.

Additional Information

Download PDF Duration: 2 or 3 days
Contact:
Course outline: download PDF

software

courses

tailored service

Tailored Service

To ensure that your specific needs are met, we offer customised versions of all our training courses, as well as pre and post workshop consultancy to help facilitate the introduction of training material into your organisation. Please do not hestitate to contact us for further details on any of these courses or on training requirements not listed.