Exploratory testing is an experience-based test design technique. The tester uses his/her skills and experience to test the software. It is an approach formalized by James Bach. Exploratory testing can find issues with the software that are not caught in white box and black box test design techniques. It includes designing the tests at run time.
As mentioned previously, exploratory testing needs skills and experience. This includes knowledge about the system under test (SUT). Exploratory testing is best used when there is little or no documentation about the software. In addition, when testing time is limited. However, it might not be efficient if not done in the right way.
Tester needs to take notes about the decisions. These notes can be used by others and include any relevant details. This includes functions explored and test cases attempted in addition to any other observations that might be useful.
* Reference: Just-In-Time Testing by Robert Sabourin