So, there I was at the Dutch Testing Day, last year. I was a featured speaker, talking about exploratory testing. ET is one of my favorite subjects. It is helpful and powerful, and yet by some strange quirk of history and collective delusion, our industry hasn’t yet embraced it.
They asked me to participate in a panel discussion on ET. But when I took the stage and heard the opening statements by the three other panelists, I realized to my shock that the other guys knew almost nothing about ET. That is to say, each of them seems to have spent ten minutes or so looking at my web site, but indicated no other preparation, background, or study of any kind on this topic.
The panel discussion quickly became a debate. Everybody against me. Part of me loves that. My favorite literary character is Cyrano De Bergerac, and my inner Cyrano delights to be ambushed by brigands on the high road. As a freshman in high school I once was invited to square off alone against the entire senior sociology class, where the issue was whether morality is real or just a convenient human contrivance. Guess which side I was arguing? Hint: Somebody on the other side screamed “Baby killer!” as part of her counterargument.
A lot of things were said. One exchange in particular is intructive:
Panelist: I would never use exploratory testing on a life critical product.
Me: Really? I think it would be irresponsible not to. But let me get this straight. Are you saying that you would NEVER change a test based on something you learned while testing?
Panelist: I change tests often. Everybody does. Is that what you call exploratory testing?
Me: Basically, yes.
Panelist: Well, what does it mean to advocate a practice that everybody already does? That’s like telling us we should breathe.
Me: I’m not advocating that you DO exploratory testing. I’m advocating that you learn to do it WELL. There is a huge difference.
Our poor testing craft is afflicted with diseases. One is testcasetosis, which is the inability to imagine test activities unless packaged in chicklets called test cases. Here I’m concerned with techniquism. That’s the inability to comprehend testing as a skill, but instead only as some set of more or less mechanical behaviors called test techniques.
Exploratory testing is not a technique, it’s an approach. That is to say, any technique can be practiced in an exploratory or non-exploratory way. Exploration itself is not testing, but it modifies testing.
The question “Should I do exploratory testing?” is not helpful. Instead ask “In what way is my testing exploratory and in what way is it scripted? How might my testing benefit from more exploration or more scripting?”
But few people are doing this because exploratory testing is not being discussed. It’s still a closet activity. I go into projects and see lots of ET, but usually no ET is mentioned in any of their officially defined processes.
Come out of the damn closet!
You already do exploratory testing. Learn to see it and talk about it. The constituent skills of exploratory testing are simply the skills of testing, applied in the moment. When you turn the key and your car doesn’t start, the things you do next probably consitute an exploratory testing process.
There’s a lot to this idea of thinking on your feet and changing your approach based on what happens. The games Mastermind, Twenty Questions, Jigsaw puzzles and Sudoku are all exploratory activities.
I will go into more detail and itemize the skills of testing in another post.