“Exploratory Testing” has few definitions:
- This is “test execution, test design and simultaneous learning.” During exploring the product, the tester executes and designs tests. (by James Bach)
- It is such kind of testing attitude which is based on phased testing of requirements, followed by the documentation and design of test cases, followed by the performing of those test cases. (by Cem Kaner)
The main distinctions between Ad hoc and exploratory testing
Ad hoc testing usually involves unskilled, unfocused and random testing, which may be done by anyone, no matter what is her/his practical experience or skill level. Ad hoc testing is still pretty ineffectual against main part of defective systems, so it still can’t uncover significant number of defects.
In comparison exploratory testing is much more systematic.
Exploratory testing process stages
- Mental model creation of the proper system functioning
- Tests design that would disprove the above mental model
- Observing the outcomes and execution of these tests
- Outcomes evaluation against the mental model
- Process repeating until the mental model is disproved or proved
Simple learning and exploration before creating any mental models of the system’s proper behavior may be involved in alternatively exploratory testing process.
Exploratory testing usually has uninterrupted time slot of 1-2 hours particularly devoted to the application testing. A serious benefit in having a short time slot is that it is pretty simple to schedule, easy to report and control.
Exploratory testing provides a tight feedback loop between test execution and design. It also offers a tight feedback between testers and developers when the quality of the product is concerned.
Some situations are in a great need of exploratory testing
- When choice of the next test case to be run is based on previous tests results, but cannot be done in advance.
- When providing quick feedback on a product’s quality is an immediate need. When the requirements are undefined or even don’t exist. Or when the initial stages of development are lead to instability.
- When tester detects a defect, but there is a necessity to explore the scope, variations and size of that defect to offer the best feedback for the developers
- When a lot of errors cannot be detected with the help of the scripted testing process