One difference between ATDD and UTDD becomes clear when you
examine who is involved in the process.
We will call this the “Audience” for the process in this blog.
Audience
ATDD
Acceptance tests should be created by a gathering of representatives from every aspect of the organization: business analysts, product owners, project managers, legal experts, developers, marketing people, testers, end-users (or their representatives), etc.
ATDD is a framework for collaboration that ensures complete
alignment of the development effort that is to come with the business values
that should drive it. These business
values are complex and manifold, and so a wide range of viewpoints must be
included. Acceptance tests should be
expressed in a way that can be written, read, understood, and updated by anyone
in the organization. They should require
no technical knowledge, and only minimal training.
The specific expression of an acceptance test should be
selected based on the clarity of that form given on the nature of the
organization and its work. Many people
find the “Given, When, Then” textual form (often referred to as “Gherkin”) to
be the easiest to create and understand.
Others prefer tables, or images, or other domain-specific artifacts.
We once worked with an organization that did chemical
processing. We noted that in all their
conversations and meetings, they used images like this in their PowerPoint
slides and on the whiteboards, etc.:
To most people (including myself) these would not be easy to
understand, but for this organization it was obvious and clear. For them, expressing their acceptance tests
this way lowered the bar of comprehension.
Why make them convert this into some textual or other
representation? Use their language,
always.
Typical business analysts spend much of their time looking
at spreadsheets, or Gantt charts, or Candlestick charts, etc… The point is, once the stakeholders of a
given piece of software are identified, then the form of the expression chosen
should be whatever is clearest for them.
They should be able to write the tests, read the tests, and update the
tests as needed, without any understanding of computer code (unless the only
stakeholders are literally other developers).
The notion of automating these tests should never drive their form. Any representation of acceptance can be make
executable given the right tools, even if those tools must be created by the
organization. Choosing, say, Robot or
Fit or Specflow to automate your acceptance tests before you identify your
stakeholders is putting the cart before the horse.
UTDD
Unit tests should be written by technical people: developers and sometimes testers as well. They are typically written in the computer language that will be used to develop the actual system, though there are exceptions to this. But in any case, only people with deep technical knowledge can write them, read them, and update them as requirements change.
To ensure the suite of tests itself does not become a
maintenance burden as it grows, developers must be trained in the techniques
that make the UTTD effort sustainable
over the long haul. This includes test
structure, test suite architecture, what tests to write and how to write them,
tests that should be avoided, etc.
Training of the development team must include these critical concepts,
or the process rapidly becomes too expensive to maintain.
Intro
Part 1
Part 2
Part 3
Part 4
Intro
Part 1
Part 2
Part 3
Part 4