Part of my route from the bus to my office goes across a chunk of undeveloped land. This is my favorite part of my commute, as I get to walk through tall grass and hear bullfrogs croak and see nature going about its business.
Part way in the path divides into two. Although neither section is much shorter than the other, the left fork is smoother and more well-defined than the right fork. Most people go left at the divide; I go right.
I think most people go left because that direction is easier traveling. Which is one reason I usually go right: my feet enjoy negotiating the bumps and holes and rocks with which that direction is strewn. I’ve seen some interesting insect life that direction too. Occasionally I go left; that path’s bumps and holes and rocks have been mostly smushed flat by its many travelers. I don’t have to pay nearly as much attention to what I am doing when I go that direction. I’ve never found an interesting insect on that path either.
I see parallels with testing here.
Some testers stick with testing tools and techniques they know very well, and so they don’t have to pay attention as they apply them. Other testers are constantly on the lookout for new tools and techniques, the application of which requires definite attention.
Scripted tests trod the same paths over and over. Although a new bug will occasionally wander into their way, most of the bugs along those paths have been smushed out of existence, as have any other irregularities which might have once existed. Exploratory tests spend most of their time wandering down every path they can find or create, including the occasional trip along the well-trodden paths. They regularly find new bugs and other wildlife as they negotiate the irregularities in their way.
If I want to get somewhere quickly without thinking about it, I will probably choose the domesticated path. If time is not an issue and I want my brain to be engaged, I will probably choose the wild path.
If I want to quickly determine the state of certain functionality in my application, and I want to take exactly the same steps every time, and I don’t want to have to think about it, I will probably write a scripted test case. If I am less concerned about speed, and I want to explore new territory, and I want my brain to be engaged, I will probably do exploratory testing.
Scripted testing and exploratory testing are each useful in certain contexts and useless in other contexts. Overall I currently prefer exploratory testing. Which is right for you? It depends.
*** Want a fun job on a great team? I need a tester! Interested? Let’s talk: Michael dot J dot Hunter at microsoft dot com. Great testing and coding skills required.