In a Nutshell
Exploratory Testing can be thought of as a tester (or team of testers) working through the available functionality of the software under test in an unscripted, unguided fashion (i.e. no test cases), using their own experience and intuition of what to test, and how to test it.
Example of Use
A common reason for Exploratory Testing is when no (or very few) test cases exist for the software under test. Here, Exploratory Testing can be used with great effect.
The tester (or testers) would start by literally “exploring” the software and recording any defects found as they went along. Their general testing knowledge and skill comes into play here, as they will know from previous experience how to test certain features and functionality as they come across them, for example; form fields, navigation, layout and so on. They may also choose to document what they are testing, although this is considered to be optional. When multiple testers are testing the same software, they would typically split up areas of the software under test to prevent duplication of effort. Depending on time-scales, the testing may be limited on time as a whole, or even specific areas of functionality.
Another example, is when a hot-fix was applied to the software due to a critical bug, and prior to publishing the new build, the development team needs to be sure that the fix was implemented correctly and does not negatively impact the software. In this case, a tester may verify the bug first, followed by Exploratory Testing of not only the area that the bug affects, but also the surrounding (associated) area of the bug. This would provide additional confidence in the software as a whole, rather than just relying on the fact that the bug fix itself was verified.
One of the benefits of Exploratory Testing is that it can be used at virtually any point in the development process, just as long as the software has some testable functionality at that point. When an experienced QA professional is on-hand, this type of testing can be started immediately without any time-consuming planning. This can quickly help ascertain the high-level quality of the software and provide valuable feedback to the development team. Exploratory Testing can be very effective if used correctly. In many software developments, this type of testing will be performed alongside other testing techniques, rather than used on its own for added confidence.
To be the most effective, testers with a good amount of QA experience are required. This is mainly because a key part of Exploratory Testing is relying on previous experience of testing similar types of software. Typically, exploratory testing is not documented, therefore it can be difficult to know exactly what was tested during the Exploratory Testing session. To avoid this, some testers will choose to document (at a high level) what they tested.