Exploratory Testing- An Overview
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.
Why Exploratory Testing?
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 Scenarios
Exploratory testing is most beneficial in these scenarios:
- When a new tester joins the team and is required to learn and provide spontaneous feedback on the application.
- When there is a time crunch that doesn't allow for the formulation of structured test cases.
- When crucial edge cases that can cause massive quality failures need to be identified.
- When the application needs to be tested from the perspective of the end user.
Types of Exploratory Testing
Following are the three main types of exploratory testing:
- Freestyle testing: In this type of exploratory testing, the application is tested in an ad-hoc manner that follows no rules or specifications.
- Strategy-based testing: Here, an experienced tester who is well-versed in the application uses different testing techniques such as cause-effect graphing, boundary value analysis, and error guessing.
- Scenario-based testing: In scenario-based exploratory testing, the test team prepares a series of end-end test case scenarios, based on which the testing is performed.
How is Exploratory Testing Performed?
Exploratory testing follows a session-based test management cycle (SBTM) which involves:
- Classification
This step involves categorizing common issues in past projects, analyzing their root cause, and developing ideas to mitigate these in the current application.
- Test Charter
This step involves determining what to test, how it can be tested, and how the end user would use the application.
- Time Box
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.
- Review
All defects are evaluated and final learnings from the testing are arrived at, including an analysis of all areas that were covered during testing.
- Debriefing
The output results are evaluated and compared with the results of the test charter.
Advantages of Exploratory Testing
- Exploratory testing helps uncover those bugs that may go undiscovered in other structured types of testing.
- It comes in handy in situations where the requirement documents are incomplete or unavailable.
- It encourages testers to think out of the box and delve creatively, helping them learn more about the application while enabling newer, different test cases.
- Exploratory testing helps provide a rapid feedback loop that complements traditional testing techniques, with more emphasis on the end-user perspective.
Disadvantages of Exploratory Testing
- Exploratory testing is highly dependent on the domain knowledge & experience of the tester.
- As it is ad hoc in nature, it is hard to keep track of exploratory tests or reuse them using the same methodology.
- It is a time-intensive practice as testers are simply exploring the application without having a well-defined priority list in mind.
Exploratory Testing Best Practices
- Have a clear understanding of why exploratory testing is being performed as well as what needs to be tested.
- Document all associated risks, test coverage factors as well as new issues with regard to the system.
- Pair up testers to improve efficiency.
- Start small with basic test case scenarios, and expand later by adding the new features to be tested.
- Run multiple tests continuously, to improve test coverage.
- Understand the end user’s expectations and perspectives well.