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.