Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Exploratory testing seeks to find out how the software actually works, and to ask questions about how it will handle difficult and easy cases. The quality of the testing is dependent on the tester's skill of inventing test cases and finding defects. The more the tester knows about the product and different test methods, the better the testing will be. When performing exploratory testing, expectations are open. Some results may be predicted and expected; others may not. The tester configures, operates, observes, and evaluates the product and its behaviour, critically investigating the result, and reporting information that seems likely to be a bug (which threatens the value of the product to some person) or an issue (which threatens the quality of the testing effort). Exploratory testers often use tools, including screen capture or video tools as a record of the exploratory session, or tools to quickly help generate situations of interest.
Different Phases in Exploratory Testing
One of the most important functions that a tester needs is an understanding of the app or website that they are testing. This understanding provides context and includes information such as competitive benchmark data, industry knowledge and company details. An understanding like this ensures that the tester is able to take in all manner of inputs relating to the app or website when he or she is performing the actual test. Contextual knowledge allows testers to provide details surrounding results that they may find and whether or not they are applicable.
A major difference between exploratory and scripted testing is in design. Designing differs from scripting in that while the test has specific parameters or rules, it is not done in a preset path or prescribed manner. Exploratory testers are able to conduct the test in a way which they deem fit and do not have a desired or expected outcome. Often times, the exploratory testing technique leads to developing more rigorous, scripted test scenarios over time.
Finally, the tester is given the freedom to complete the test as he or she feels free to do so. As soon as the test is written or requested (note: not a test case), the test can be conducted. This freedom means that nobody is waiting for scripted requirements and creative work can begin. A tester then is observing and learning about the application or website. They are probing and exploring how functions work, how they interact with one another and how those pieces work together so that further exploration can take place. Results are then compiled and reported back through the appropriate methods.
Challenges in Exploratory Testing
- Learning to use the application or software system is a challenge.
- Replication of failure is difficult.
- Determining whether tools need to be used can be challenging.
- Determine the best test cases to execute can be difficult.
- Reporting of the test results is a challenge as the report doesn't have planned scripts or cases to compare with the actual result or outcome.
- Documentation of all events during execution is difficult to record.
- Don't know when to stop the testing as exploratory testing has definite test cases to execute.
Pro’s and Con’s
- Testers can use deductive reasoning based on the results of previous results to guide their future testing on the fly.
- Exploratory testing drills down to the smallest part of an application and covers all the requirements.
- After initial testing, most bugs are discovered by some sort of exploratory testing.
- This can be demonstrated logically by stating, "Programs that pass certain tests tend to continue to pass the same tests and are more likely to fail other tests or scenarios that are yet to be explored."
- Exploratory testing requires less preparation, important bugs are found quickly, and at execution time
- Few issues cannot be caught in this type of testing.
- There is review of test planning & designing of test cases/scenario while testing may cause issues.
- Testers have to remember the scenario what he is executing because if any bug is found then tester should report a bug with proper steps to reproduce Difficulty to perform the exact manner especially for new found bugs.