Reviewing Specifications: Focus on What's Not Said
Reviewing a specification or a user story as it's being created is probably the most crucial way that testers can contribute early in the software development process.
Catherine Powell brings up a key point in reviewing specifications—they tend to be feature-oriented, describing a list of things that need to be implemented but sometimes glossing over the ramifications of actually implementing them.
We have a tendency to imagine features in a sort of quasi-vacuum—to outline them without thinking about what kind of supporting work they may need to actually be usable or how they fit with other parts of the system.
I like to think of reviewing a specification or story in three steps.
First, are there any issues with the specification as written? Is any part of it ambiguous? Does any part of it contradict itself or run contrary to how other parts of the system work?
Second, what's gone unsaid? What important parts of the feature will need to be implemented but haven't been elucidated? As Powell points out, one of the best ways to determine this is to walk through what the user needs to do to accomplish the task outlined in the feature. One quickly trips over any gaps in necessary functionality, like the ability to delete an uploaded file or the fact that the new feature doesn't appear where it needs to in the user interface.
Third, how does the feature fit into the larger context of both the system and the world? Are there any special considerations regarding deploying it to production? Does it have any privacy, security, or regulatory ramifications we need to take into account? What other non-functional requirements may we have missed?
Perhaps we want to allow users of our application to upload multimedia files. How will this impact our production servers? Do we need some facility for handling allegations of copyright infringement? Can we think of any way that the feature could be abused?
When reading a specification, we need to be imaginative in order to see the finer points others might have missed. It's easier to be creative if our minds have something to latch on to instead of just trying to pull ideas out of thin air. Giving yourself a few starting points to work from will help you bring out the angles that haven't been considered.
Do you have any additional steps that you consider when reviewing specifications? I would enjoy hearing your comments in the section below.