A guided path for TDD

I do not recall who introduced me to Test-Driven Development (TDD), but I have always been interested in the testing aspect of software development. I vividly remember reading the iconic book Test-Driven Development By Example by Kent Beck on my commute. Every page was a discovery, and I felt a sense of frustration, as the baby steps conflicted with my confidence that my code would work.

However, given the context of my early career, I did not have the opportunity to explore TDD further. The places I worked at unfortunately cared more about delivering tasks quickly than sacrificing time for testing. I share more about my TDD history in a blog post, but I was astonished by the lack of care for testing among practitioners. My intention here is to share my previous experience with writing tests and resources that I think are helpful. This is not a definitive guide to, TDD but rather a structured way to get started.

About this content

This curated content is organized in a fashion that focuses on the timeline required for incorporating TDD into practice. It highlights the need for continuous improvement, as technology stacks, tools, and frameworks are constantly evolving.

Testing timeline by Matheus Marabesi

For those just starting out, it is recommended to go through each section in order. Experienced practitioners may choose to skip the introduction and go directly to the content they find most relevant.

1. Introduction
  • What is testing? - Discover what a test is from the perspective of a practitioner and the different shapes that are out there to distribute the different types of tests from the point of view of TDD
  • Should you test? - In this section there is a discussion about testing or not and its benefits are discussed. More specifically on the automation part of it
  • A gentle introduction to TDD - TDD is introduced as a methodology and describes its different flavors
  • Is TDD testing? - The debate about testing or not is up for TDD as well, this section dives into the subject.
  • The many types of tests in software testing - Integration? End-to-end? Acceptance? Let’s see how they fit from a testing point of view
  • The differences between frontend and backend - Tips that are hidden from practitioners’ point of view writing tests for client and server applications.
2. Changing your mindset
3. Building software with TDD vs software without TDD
4. A learning path

Learning Test-Driven Development is one of the most challenging topics for practitioners, randing to creating the test scenario that reflects reality to the maintainability of the source code. In this section we will see the different aspects of TDD and how to approach them focused on the learning aspect of it. We start with tools and then we focuses on the hands-on part of it.

5. Test doubles

Test doubles are the basis of the automated testing practice, in this section we will see the different types of test doubles and how to use them in the context of TDD.

7. Test Driven Development anti-patterns
8. TDD and software architecture
9. Strategies for testing
10. Empirical evidence

Resources

License

The content here is under the Attribution 4.0 International (CC BY 4.0) license