Test-Driven Development (or TDD for short) is one of the most essential software development practices. It is a practice based on the simple idea that instead of writing our code first and then later writing tests for it, we write our tests first, and then we write code that makes those tests pass. This approach has many advantages, from productivity gains to ensuring that our work doesn't get out of scope to ultimately writing better, focused code with cleaner interfaces and looser coupling. TDD can change the way we think about building software. In this course, Gui Ferreira will teach you everything you need to know to practice TDD, from the most basic concepts to some very advanced ones and make it part of your software development lifecycle.
Welcome (1:37)
What will you learn in this course? (3:43)
Who is this course for and prerequisites (1:58)
What is TDD? (2:43)
Benefits and drawbacks of TDD (7:12)
"Test-First" vs "Test-After" (2:21)
How to define a Unit in Unit Testing (3:23)
Red-Green-Refactor cycle (3:12)
The 3 Rules of TDD (2:42)
Incrementalism (2:33)
Section recap (0:24)
The example we will work on (2:16)
Creating a Testing List (5:56)
Writing the first Tests (29:58)
Using Tests as Documentation (7:21)
Section recap (0:49)
The example we will work on (1:15)
Writing application level tests (6:56)
What is a Test Double? (2:53)
Building Dummies (2:40)
Building Stubs (4:00)
Building Spies (2:59)
Building Mocks (9:49)
Building Fakes (3:42)
Fixtures, Setup, and Teardown (6:05)
How to TDD on Integration Testing (3:39)
Test-driving a Storage Adapter (25:08)
Test-driving a REST API (19:48)
Section recap (0:36)
The example we will work on (0:29)
Detroit vs London school (1:05)
What is the Detroit School style? (1:42)
What is the London School style? (2:11)
Practicing TDD in a London School style (27:36)
Section Recap (0:31)
Naming Tests (2:35)
How to organize tests (1:54)
Applying Act-Arrange-Assert (2:29)
Using 1 Assertion per test (2:35)
Start from the end (3:10)
Improving test readability (4:20)
How to solve bugs with TDD (3:36)
What are TDD Driving Patterns (0:47)
Driving Patterns: Fake It (5:53)
Driving Patterns: Triangulation (7:05)
Driving Patterns: Obvious Implementation (3:00)
The Four Rules to Simple Design (2:22)
Anti-patterns and how to avoid them (6:45)
Section recap (0:44)
TDD in Agile software development and DevOps (7:40)
How BDD and ATDD relate to TDD (5:09)
How TDD relates to the Testing Pyramid (5:00)
TDD and Source Control (6:00)
Pair Programming when doing TDD (3:05)
Defining Team testing policies (4:32)
The value of Code Coverage when doing TDD (1:46)
Using Mutation Testing to improve TDD skills (4:51)
Handling Objections and Challenges to TDD Adoption (3:27)
Section recap (0:48)
The example we will work on (2:15)
What is Legacy Code (1:36)
How to use Approval Testing (10:44)
Refactoring to Support Testing (26:53)
Test-driving new Behaviour (6:34)
Section recap (0:28)
Conclusion (1:01)
Course Info
Lifetime access
Add to Cart
Guilherme Ferreira, also known as Gui, is a Minimalist Software Craftsman, passionate about simplicity and continuous learning. Gui is a Microsoft MVP for Developer Technologies, a Tech Speaker, a YouTuber, and a .NET content creator. With over 15 years of experience in software development, Gui went from Startups to Tech Giants. Along his journey, he got to know several hats, including Software Engineer, Architect, CTO, and Developer Advocate, gathering a diverse and invaluable skill set.
More courses by Gui Ferreira© 2023 Dometrain. All rights reserved.