How often have you been asked why do we do exploratory testing rather than planned
and predicted scripts. Recently I have
been reading some material on corporate planning strategies and how some become
successful and other do not and looking at how this links into software
development especially from a testing perspective.
Given
that software can be very dynamic and react in some unpredictable ways no matter
how much planning we do. It surprises us
and more importantly it surprises the person who created it. This goes against the commonly held notation that software
is predictable since we planned with great care and detail what was going to be
coded. The problem comes is that we are
human and may not act in a rational way and this is reflected in our creations.
So what is the best way to do software
testing?
The purpose of testing is to
learn things about it and the best way of doing this is to experience it and learn by do it. This is best summed up by Nassim Nicholas Taleb
We are better at doing than learning. Our capacity for knowledge is vastly inferior to our capacity for doing things – our ability to tinker, play, discover by accident.
Within
the corporate strategy world I have discovered that this appears to have a name 'emergent strategy' (or realized strategy). Looking more into this I found the following link http://planningskills.com/glossary/154.php
One of the most interesting part of the above link to me that I noticed was the following sentence:
Emergent strategy
implies that an organization is learning what works in practice
Is
this not similar to what we attempt to do when doing exploratory testing? We try to learn about the product and what is
working or not working by experiencing it?
An interesting
point made in the article is the following statement
Mixing the deliberate and the emergent strategies in some way will help
the organization to control its course while encouraging the learning process.
This
appears to link back to an article I wrote
about hybrid testing and having a
mixture of scripted checks and exploratory
tests.
So
to go back to my first statement about the purpose of exploratory testing. To me since we cannot predict everything that
the software will do the only way to understand what it will do and to learn is
to explore it and that is the purpose of exploratory testing. To uncover information that may prove to be
of value to someone who matters.
I may need to look more into emergent strategy
a little more.