Exploratory testing is something that has been discussed, put on CV’s, and probably put in the syllabus of testing exams, but I wonder if we really understand what it is.
I’ve heard it described as ‘playing’, ‘random testing’, ‘unstructured testing’, and ‘the tests you fit in before you look at a user story’.
Out of those, the only one that gets close is ‘unstructured testing’. The point of performing exploratory testing is to step away from the user story confirmations and acceptance criteria, and as a tester allow your mind to really think about what is being delivered.
The questions we need to ask ourselves are:
- Does the story make sense on its own.
- Does the story offer functionality that fits in with the rest of the application. There is no point it working but then not making any sense when added to the application!
- Are there any provisions for the edge cases that users will do:
- hitting F5,
- accidentally pressing the Back button,
- right mouse clicking,
- accidentally clicking on a link and going back to the page,
- trying to by-pass a process to save time,
- pasting text into a text or search box rather than typing it in.
You get the idea from the above list.
We don’t often have time to think much about what we do – there are always time pressures, so it makes sense to put aside even just 15 to 20 minutes to step back, and allow your mind to come up with other scenarios that are not part of the acceptance criteria, because no-one can possibly think of everything before the code exists. There will always be something that you spot once the code is delivered and there is something tangible to navigate through.
Based on my own experience, exploratory testing has real benefits and should be actively encouraged within teams.
So, after reading that, do you agree or disagree with my view of what exploratory testing is and whether it is a benefit or not? Feel free to comment, thank you.