How to Decide Whether to Start with ATDD or TDD

Everyone seems to agree that test-first is important, even critical. But most everyone seems to put it off until later. We believe just the opposite. Starting with team process often turns into a significant increase in ceremonies and has teams feel like a burden is added to them. Starting out with proper Acceptance Test-Driven Development Training integrated into initial team training speeds up their development work. And I don’t mean eventually, I mean immediately.

However, if your teams are already doing Scrum and you are now considering test-first methods, you should consider which one to start with – Test Driven Development (TDD) or Acceptance Test Driven Development (ATDD).  While both are extremely useful, deciding which to start with is an important decision.

Let’s look at challenges each helps to solve and when you can best apply them to help you make a decision:

Acceptance Test-Driven Development

ATDD will help solve the following challenges:

  • Poor collaboration between team members
  • small stories can’t be written
  • requirements are unclear
  • technical debt is high
  • estimates are poor

Doing ATDD well requires getting product owners involved. However, using it lightly still has great benefit as there are different ways to start with ATDD.  See Benefits of Acceptance Test-Driven Development using Behavior-Driven Development for more.

Test-Driven Development

TDD will help solve the following challenges:

  • high technical debt
  • having untested and hard to test code
  • mis-understandings about what code does
  • poor design

Learning TDD will greatly improve design and maintainability. However, when there is mostly legacy (untested) code, learning TDD will enable proper refactoring of the code that can lead to better testing. TDD only requires that developers be interested in doing it. But it takes more investment for it to be useful. It is also important to learn Sustainable Test-Driven Development. This is TDD done in a way that has a requirement change not changes to multiple tests.

Choosing between ATDD and Test-Driven Development

Starting with ATDD has a lower cost of entry and immediate return. But if developers want to do TDD, that should be encouraged. The decision point is based on value returned for the investment.

If You Haven’t Trained Your Teams In Scrum or SAFe for Teams Yet, Start With ATDD

This is an easy decision. We have integrated ATDD into both our Scrum With Agile Requirements: Achieving Sustainable Agility and our extended version of the course for teams doing SAFe. The innovative methods we use have the course deliver more while costing less. See Lean-Agile at the Team for how we do this and for information on the courses.