The Inquisitive Tester – Part II: Question the specs the test eye
Statements in specifications try to clarify and are inevitably an interpretation of what the author thinks need to be more specific. I.e., they try to be a more specific model than what existed before the spec. And “Essentially, all models are wrong, but some are useful” (http://en.wikiquote.org/wiki/George_E._P._Box).
Every specification you encounter is persons’ interpretations, and not necessarily true.
This means that you as an inquisitive tester have a lot to do by questioning the specifications. The questioning will help you to form a model of the software that is better than if you only had read and accepted the spec as it was.
Specifications cannot be complete and especially regarding things that the program shouldn’t do. It is probably not stated that the software shouldn’t use too much memory or processor for certain operations; it is not stated that the screen shouldn’t flicker, or that all text should be easy to read with all different font settings. Other typical omissions are interactions with other systems; things you expect from all applications under that operating system, internet browser, connected software etc.
You cannot expect a specification to be complete, in most (all? many?) cases, the thing produced by the specification is more important than the document about it. The hardest challenge for the inquisitive tester is to question a lot, but only for those things that are important.
——————–
Who will use the specification? What will they use it for? Will it meet their requirements?
What is it all about? Really?
What areas are left out?
Who is the writer? Does he/she usually miss certain things?
Are there many writers? Does this make the whole less tangible?
Are there many reviewers? Are they using different perspectives?
Is the writer vague, insecure and confusing about certain areas?
Is the specification consistent?
Is the specification consistent with other related specifications?
Is the specification consistent with other different features and combinations of those?
Are all functional and non-functional requirements covered?
Are there dubious thoughts about the wished for functionality?
Are there other sources of information that can be useful?
How is the style of the language affecting the specification?
What quality attributes are the most important, e.g. how is Security weighed against Performance and Usability?
Does it match the system requirements?
Does the specification focus on what is most important?
Does the specification reflect the model of what you think is described?
Are there any new terminology? Will this affect other documentation such as help files?
Is the new terminology consistent with other specifications?
What does the Internet say about the newly chosen terminology? Will there be any misunderstandings?
—————–
If there was no specification, could it be described in a completely different way?