Concept: Exploratory Testing
Exploratory testing is test design and test execution at the same time. This is the opposite of scripted testing (predefined test procedures, whether manual or automated). Exploratory tests, unlike scripted tests, are not defined in advance and carried out precisely according to plan.
Related Elements
Main Description

Thought to have first been defined by Cem Kaner et. al. in Testing Computer Software [KAN99], exploratory testing has been publicized by the work of others, including James Bach. Bach advocates a style of exploratory testing where short sessions of exploration lasting approximately 90 minutes are briefly planned and undertaken, with the results recorded and reviewed.

The following quote from James Bach explains some of the benefits of Exploratory Testing:

"Exploratory software testing is a powerful and fun approach to testing. In some situations, it can be orders of magnitude more productive than scripted testing. I haven't found a tester yet who didn't, at least unconsciously, perform exploratory testing at one time or another. Yet few of us study this approach, and it doesn't get much respect in our field. It's high time we stop the denial, and publicly recognize the exploratory approach for what it is: scientific thinking in real-time." [BAC01a]

Bach provides a simple definition of the technique as "test design and test execution at the same time". This technique for testing computer software does not require significant advanced planning and is tolerant of limited documentation for the target-of-test. Instead, the technique relies mainly on the skill and knowledge of the tester to guide the testing, and uses an active feedback loop to guide and calibrate the effort.

We recommend the following resources for further information on exploratory testing: