Long gone are the relative safe topics from the first three posts in this series and we’re well into realm of dangerous with Specification and their automated compatriots, Executable Specifications. Speci-what? Executable who? Exactly. Both of these are tenants of Agile but are only just starting to cross over from the realm of the ‘cool kids’ and into the near-mainstream.
So what is an Specification? I’m labelling it as a concise, natural language description of an desired behaviour [of your application]. Once it is automated it becomes and Executable.
Notice the word behaviour. These are central to BDD (Behaviour Driven Development) and ATDD (Acceptance Test Driven Development) which appear to be the same thing, but invented on different sides of the Atlantic. But just like with SBTM, the whole flow of BDD/ATDD is out of scope and I’m interested just in the specifications themselves.
So.
I’ve got lots of notes from talking to lots of people, so here is the dump of them. Hopefully something will arise from it.
- There is no ‘right’ or ‘wrong’ way to write these, though some tools enforce a particular way
- A large part of why you develop specifications is to get everyone talking and agreeing that this is what we are building
- It is important to agree upon, and correctly use, the various verbs and nouns
- Specification do not describe the implementation, only the desired end result
- And so are at the domain level, not the UI level
- A Goal will be solved by n stories, and those stories will have y specifications
- Two common ways of constructing these are Tables (Fitnesse) and Declarative (GWT)
- But if those don’t work for you, create your own
- The tester / automator does not get to change the specification once it has been created (without business approval of the new specification)
- It is a value/ROI judgment that determines whether a specification is automated or not
- Bug it is highly desirable to do so
- Which requires certain strategies sometimes (see Agile Test Automation Strategy For the Non-technical for some of them)
- Specifications is a synonym for Example
The exercise for this one is going to likely be to use the GWT format to create a series of possible specifications for a story. What that story is exactly is tbd.