Friday, 26 December 2014

Assumptions in Testing

Testing is performed mostly based on initial assumptions made about the application under development/test. Specially, if a tester is involved in the initial stages of the product life cycle then clarifying the assumptions made forms a part of the testing activities.

In order to clarify the assumptions made, it becomes necessary for the testing team to be an integral part of the project discussion meetings throughout the duration of the project, be it the meetings during product discovery stage, architecture review board meetings, change request meets and those that happen during the product design and development phase.

Preparation for testing begins much before the requirements take the form of a functional requirement specification document. Based on the assumptions made testers start to gather information, set up the test environment and test. And while doing so, we may make more assumptions.

How to convert the assumptions made early into valid test ideas?
If you are involved in testing an application:
● with or without documents
● have started testing without looking for any documents
● you are seated away from the team which can help you get clarifications
● you are a testing firm without immediate access to the right sources(people) of information or
● you are new to a team and are already in the test execution phase

Then try this:
● Make a note of the assumptions made.
● Share this notes with the team who can help bring clarity.

Test the assumptions made:
● Make a note of the assumptions made and those that turned out to be correct.
● Make a note of the assumptions made and those that turned out to be incorrect.

This will help us understand how we make assumptions, how we learn and with what ease we unlearn. At times, it is required to proceed with testing with the assumptions made. Know that, not all clarifications may be received in time for testing. In that case, share the details of a test and how testing was performed underlying the assumptions made.
To assume is to presume - Jude Morgan
To assume is to perish without learning newness about what a product is designed to do and what else can it do. To understand this, apply this to people around you. To assume something about them is to not let you learn something new about them.

Would you be willing to take the risk of not learning new? If not ask away, gently.

Consider the below test as an example:
Test: Check if the end users can view a report available on a web page.
Apply Jerry Weinberg’s “Mary Had A Little Lamb” to the above test.
  • Who are the end users?
  • Do all end users have read permission to view the report?
  • Can we check on behalf of all these end users?
  • Are the end users required to subscribe to or follow a group for them to view the report which is under test?
There are no minimum or maximum number of assumptions.
The above questions can now help us to define precisely who the end users are. Clarify the assumptions made. Assumptions are not a dangerous thing to make, but not clarifying assumptions can turn to be expensive.
Make assumptions. ‘Never say, never assume’
Know and note the assumptions made to clarify them with the right sources of knowledge.
Unattended assumptions may bother us while we are performing time bound testing.

Take time to clarify the assumptions made.
Maintain a clarification log.
Ask for and receive clarifications.
Learn how it can help us remove foreseen and unforeseen roadblocks.
Sometimes we may increase the shelf life of assumptions. Do not let them overstay their welcome.

Asking for clarifications 

Be gentle.
Establish a positive tone when asking for clarification and when clarifying. Assumptions are the basis for many inventions. Why shy away from new learning?

How can a tester benefit from assuming and clarifying?

Few benefits are noted below:
Assumptions and subsequently clarifying can teach us:
● Survival skills
● Life skills
● Being genuine skills
● Communication skills and
● An ability to understand the unknown when we started.

Know what else? 
It helps us build a rapport with the other teams involved in building the application. The teams can now openly discuss and share ideas with ease. During your learning process, you would have shared a few assumptions which could have converted into an area to develop. This means another test idea to test and add value to the product.

It can help the involved teams; add value to the product and to each other’s effort. Learning together as a team, has more benefits than listed here.
I will leave you with this quote:
“Your assumptions are your windows on the world. Scrub them off every once in a while, or the light won't come in.” ― Isaac Asimov

Optional further reading: 
References to Mary had a little lamb
http://www.developsense.com/blog/2011/01/exegesissaves/ http://testsidestory.com/2010/10/12/childrens-ownpassfail-criteria-and-nursery-rhymes/

This article was featured in : http://www.testingcircus.com/december-2014/

No comments: