As we have discussed in the Types of Software Testing guide, exploratory testing involves creating test cases based on ‘what-if’ scenarios, where testers do not check the system in advance, but through the lens of learning and discovery, explore possible scenarios that require deep-dive testing. This type of software testing is subjective in nature and depends on the individual tester’s objectives, wherein they will explore the application in several different ways, study its flow, and simultaneously undertake both test design and execution.
Unlike the scripted testing approach that arises from requirements and can in most cases be automated, exploratory testing is more complex and spontaneous in nature, involving the human element of learning and adapting. Exploratory testing may be performed freestyle, which follows no stringent rules, strategy-based, which calls for a particular testing methodology, or on the basis of scenarios such as real use case scenarios.
Its pros include its investigative approach that helps find bugs that may otherwise go undetected and deeper test drill-down than other testing techniques. However, its cons include the fact that it is heavily dependent on the individual tester’s skills and domain knowledge. Today, exploratory testing has gathered momentum and is considered essential to a comprehensive testing strategy, though adoption is often sporadic due to heavy workloads.
Unstructured Bug Detection: As exploratory testing is unstructured in nature, it helps to detect bugs that may go undiscovered in other types of structured testing.
Agile Methodology: It fits right into agile workflows, as it helps document findings, and enables everyone to participate and adapt to changes quickly.
Focus on Continuous Integration: As more companies realize the value of Continuous Integration for faster time-to-market, exploratory testing proves to be useful as it focuses on unique end-user personas and scenarios that help improve test coverage and create a rapid feedback mechanism.
Exploratory testing is most beneficial in these scenarios:
Following are the three main types of exploratory testing:
Exploratory testing follows a session-based test management cycle (SBTM) which involves:
This step involves categorizing common issues in past projects, analyzing their root cause, and developing ideas to mitigate these in the current application.
This step involves determining what to test, how it can be tested, and how the end user would use the application.
Here, a pair of testers work jointly to test the system within ninety minutes and evaluate the application’s response in different test case scenarios.
All defects are evaluated and final learnings from the testing are arrived at, including an analysis of all areas that were covered during testing.
The output results are evaluated and compared with the results of the test charter.