ATDD Sans Automated Tests. Why Not?
Every time I hear about Acceptance Test Driven Development (ATDD), it’s always implied that the acceptance tests are automated. What’s up with that? After all, it’s not called Automated Acceptance Test Driven Development (AATDD). It seems to me, that ATDD without automated tests, might be a better option for some teams.
This didn’t occur to me until I had the following conversation with the Agile consultant leading the discussion at the ATDD 2013 STAReast discussion lunch table. After a discussion about ATDD tools and several other dependencies to automating acceptance tests, our conversation went something like this:
Agile Consultant: ATDD has several advantages. While writing the acceptance tests as a team, we better understand the Story. Then, we’ll run the tests before the product code exists and we’ll expect the tests to fail. Then we’ll write the product code to make the tests pass. And one of the main advantages of ATDD is, once the automated acceptance tests pass, the team knows they are “done” with that Story.
Me: Sounds challenging. Are you saying there must be an automated check written first, for every piece of product code we need?
Agile Consultant: Pretty much.
Me: Doesn’t that restrict the complexity and creativity of our product? I mean, what if we come up with something not feasible to test via a machine. Besides, aren’t there normally some tests better executed by humans, even for simple products?
Agile Consultant: Yes, of course. I guess some manual tests could be required, along with automated tests, as part of your “done” definition.
Me: What if all our tests are better executed by a human because our product doesn’t lend itself to automation? Can we still claim to do ATDD and enjoy its benefits?
Agile Consultant: …um…I guess so… (displaying a somewhat disappointed face, as if something does not compute, but maybe she was just thinking I was an annoying nutcase)
And that got me thinking: And doesn’t this save us a lot of headaches, pain, and time because we wouldn’t have to distill our requirements into rigid test scripts with specific data (AKA “automatic checks”)? We wouldn’t have to ask our programmers to write extra test code hooks for us. We wouldn’t have to maintain a bunch of machine tests that don’t adapt as quickly as our human brains do?
Let’s call this Human Acceptance Test Driven Development (HATDD). I’ve stated some of the advantages above. The only significant disadvantage that stands out is that you don’t get a bunch of automated regression checks. But it seems to me, ATDD is more about new Feature testing than it is about regression testing anyway.
So why aren’t there more (or any) Agile consultants running around offering HATDD?