Introduction to TDD
This introduction covers defining what we mean by test driven development, and provides a brief history of the origins of TDD
The Test Driven Development cycle
This lecture demonstrates what each stage of the TDD cycle looks like.
This lecture highlights some of the common benefits seen among teams when developing using test driven development.
Demonstrating TDD, through walkthroughs and exercises
Let's get started, introducing our example app
This lecture introduces our example application that we will use to demonstrate and practice test driven development.
Demonstrating the reverse polish calculator
This lecture shows how a reverse polish calculator works, using the calculator built in to Mac OSX.
Walkthrough summary, common questions
This lecture summarises our experiences with test driven development so far.
Real world TDD Part 1 : Design enabling test
Introduction to real world testing
This lecture introduces the idea of good design being a requirement for testability, and the idea that using a test driven approach can force that design. This section illustrates a number of design principles that are good to follow for creating both maintainable and testable code.
Introducing SOLID design principles
Single responsibility principle
Real world TDD Part 2 : Test doubles
This section introduces test doubles, and demonstrates various types of test doubles that you can use to aid your test driven development, and shows that not every type of test double is a mock.
Demonstrating Stub test doubles and what they can be used for.
Demonstrating Fake test doubles and what they can be used for.
Demonstrating one the most commonly used (and misused) types of test doubles - the mock.
Demonstrating Test Doubles
In this walkthrough we will demonstrate how we can go about testing something more complicated than our simple calculator example, showing how different types of test doubles are used, and can be injected into our system under test.
This lecture concludes our test doubles section, and introduces mock frameworks and discusses how and when they can be used.
Testing legacy code
This section introduces testing legacy code, something that often causes teams to struggle when trying to follow a test driven approach.
Demonstration of testing legacy code
This walkthrough demonstrates an example of some legacy code, and some unit tests that have been created that allow this code to be tested effectively.
A conclusion to how we can go about testing legacy code, and still follow a test driven approach.
This section introduces a number of test principles that are good to keep in mind when creating your tests, as well as a number of testing anti-patterns that can make your testing harder than it should be.
Testing anti-patterns: The Singleton
Testing anti-patterns: Create the World
Testing anti-patterns: Completely Mocked
Testing anti-patterns: The Exceptional Test
Testing anti-patterns: Usually Passes
Testing anti-patterns: One Big Test
Test anti-patterns: The Slow Test
Testing anti-patterns: Second class test
Applying Test Driven Development
In our final section, we provide some advice on how best to apply test driven development in your environment.
This final lecture leaves you with a number of exercises that you can use to practice and improve your test-driven skills