Views of a Passionate Tester...

Thursday, November 6, 2008

Exploratory Testing - The term coined by Cem Kaner in 1983. He defines exploratory testing (ET) as

A style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test - related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parrallel throughout the project.

The definition is too explicit. In simple words we can say that:

Exploratory Testing is an approach of software testing that can be described as simultaneous learning, test design and test execution.

Exploratory testing is not pre-planned as in case of test cases based testing (i.e. scripted testing) but it is done with a point of view exploring features of the product and to find bugs which were not logged during scripted testing. Every Software Tester knowingly or unknowingly does it. In exploratory testing, next result is influenced by the result of last test. Jon Bach has defined the difference between scripted testing and exploratory testing with a simple and interesting example in his article. He says:

The difference between scripted testing and exploratory testing is as simple as describingthe game “20 Questions.” In this game, one person thinks of an object (an animal, vegetable, or mineral) and another person is allowed 20 yes or no questions to discern what the object might be. If the guesser can’t determine what the object is by the 20th question, they lose the game.

The important aspect of the game is that the guesser asks one question at a time, and an answer is given before the guesser decides what their next question will be.

This is exploratory testing in action. The game would not work if a scripted testing paradigm was used, where the guesser had to submit their 20 questions in advance and could not adapt their questions to each answer.

Unlike scripted testing, exploratory testing relies on this adaptation. Like the “20 Questions” guesser, the tester is free to design and execute their next test idea based on the results of the previous test. To test wisely, the tester can draw from anything in their cognition – experience, heuristics, biases, observations, conjectures, notions, and hunches, and on and on – but culling through all of that cognition, choosing that next test, playing that hunch and applying that experience – takes skill.

The outcome of an exploratory testing session is a set of notes about the product, failures found, and a concise record of how the product was tested. When practiced by trained testers, it yields consistently valuable and auditable results.

Benefits of Exploratory Testing:

The main advantage of exploratory testing is that less preparation is needed to test and bugs are found faster.

Exploratory testing helps tester to understand the functionality of the product thoroughly; hence covering the most important part of requirement understanding.

Exploratory testing is especially useful in complex testing situations, when little is known about the product

As in case of exploratory testing, we write and execute the test cases simultaneously. It helps in collecting result oriented test scripts and shading of load of unnecessary test cases which do not yield and result.