Before we dive into the importance of Exploratory Testing, I would like to clear three things up.
Firstly, I align with this definition of Exploratory Testing, by Cem Kamer, it is an approach to software testing that consists of simultaneous learning, test design and test execution.
Secondly, I don’t think Exploratory Testing has to be a substitute for test cases, it can complement test cases. (It’s up to you, how or if you choose to combine both Exploratory Testing and Test cases when you test a feature)
Lastly, exploratory testing is not adhoc testing – adhoc testing is random, unstructured testing, exploratory testing forced you to think critically about the application under test. (For more about the difference go here.)
Job Interview Analogy
To illustrate the importance of Exploratory Testing, I’d like to first use the analogy of a job interview. (I wrote about this in a previous blog post but will expand on this further)
The Test Cases in this analogy
In a job interview, chances are both sides (the candidate and the company) have some prepared questions for each other to get a better understanding of the other side. Let\’s also assume that some of the prepared questions have an expected or desired answer. These prepared questions are the “test cases”.
The company asks the candidate: “Do you have any experience testing SAAS applications?” (The desired/expected Answer is yes)
The candidate asks the company: “Is there any flexibility to work remotely?” (The desired/expected answer is yes, to some extent)
These sort of questions are like a pass/fail.
Let\’s pretend that the company isn’t at all interested in this candidate if they do not experience testing SAAS applications. Let’s also assume that the candidate definitely wants some flexibility to work remotely in their new role.
The Exploratory Testing in this analogy
Now let\’s dive in to the Exploratory Testing of this analogy, this is where we start to ask each other questions based on what we heard/learned during the interview process. This is how it might look like in an interview.
Company: Do you have any experience leading Agile teams?
Candidate: Yes. On a previous project I was the Scrummaster as well as the tester for a few months while we were looking for a tester.
Company: Ah, I didn’t read that on your CV. Can you tell me more about how you balanced the scrummaster and tester role in that team? (upon discovering this new information, they now dig deeper here)
Before you start testing an application (or a conducting a job interview) you cannot know what will discover, you may have some vague idea – but you do not KNOW.
Tying this back to actual software testing – Exploratory Testing gives you both the freedom and the ability to respond to new information.
If you were to stick to just test cases which consist of steps and expected results, then you wont be able to react to what you find – you can’t investigate that strange behaviour you\’re seeing right now, neither can you dive deeper into something because you are worried about it: all you can do is stick to that test case.