Exploratory testing allows the user to look for errors by exploring the system freely versus using structured test cases. Although unscripted, exploratory testing has a distinct purpose compared to ad hoc testing. Ad hoc testing is similar in style, but this term became associated with lazy and slapdash testing, so professionals coined the term exploratory to describe deliberate unscripted testing.
Exploratory testing also allows the tester to learn the system while designing and executing tests concurrently. Their experience, knowledge, and skills will determine the testing quality. Accordingly, this means exploratory testing can be done by new or experienced testers, as well as developers, project managers, or any other stakeholder. Each will have a different point of view to test from, allowing for discovering a broader range of defects and issues. For example, consider a new tester added to the team. They can provide a fresh perspective and find issues that experienced testers would miss when they only repeatedly run test scripts. Developers can see alternate and possibly more efficient approaches to develop the system. Project managers can find defects by questioning why functions perform the way they do.
When to Perform Exploratory Testing
Exploratory testing allows the tester the freedom to interact with the system, perform functions, and interpret results. Situations that benefit most are when the team is short on time and needs rapid feedback, or when there are too few requirements or acceptance criteria. For example, if a team is under pressure to deliver quickly and there is not much time for creating a structured test plan or writing test cases. In those situations, exploratory testing can provide enough information for making critical business decisions. Similarly, when requirements are not specified, a tester can perform exploratory testing and provide enough feedback to developers and stakeholders.
Some test managers like to set aside time during each sprint for exploratory testing. This gives the test team time to find new defects that a user would otherwise find in the production environment.
Exploratory testing is performed by allowing the tester the freedom to interact with the system, perform functions and interpret results. There are no test cases or scripts. Instead, the tester uses their skills, experience, and knowledge to survey the system.
How to Perform Exploratory Testing
To get started, you will want to have a basic plan in place. Prioritize your time and attention to make the test successful, and consider testing objectives, time restraints, and how you will report your findings.
- Create a mind map – A tester may want to have a basic idea of the structure and functionality of a system before starting to test. Creating a mind map, even if it’s just a rough, two-minute sketch detailing the core functionality areas, allows the tester to visualize what they are about to test. Then they can plan how to assess the tool and make sure they cover all areas they feel are necessary. It will also show them any sections still untested. This process can add a little structure that helps ensure the tester gains the required test coverage over the functionality. It is also useful when de-briefing once the session is complete.
- Use a test charter – A test charter is just a simple statement of testing objectives with information that helps the user keep track of the findings in the session. It may include details like how to test, start and end times, specific areas of a system under test, or notes of any findings. The charter helps the tester remain focused and help with recalling information they may need to use again during testing.
- Use a timebox – Performing exploratory testing in a timed session gives structure to prevent time from being wasted. Typically, a testing session ranges from short (30 minutes), regular (60 minutes), or long (90 minutes or more).
- Reporting defects – Decide how to report defects before starting the session. Since you will need to provide steps to reproduce any issues, it’s a good idea to note them quickly when found, so you don’t forget. However, if you are short on time or need to check if someone has already has logged the bug, you may want to wait until the end of the session.
- Debrief on completion – Debriefing with the test lead or manager helps with planning subsequent sessions because it can prevent an overlap with areas that other testers may be working on. It also can help the test manager understand if there is a need to plan for further sessions.
Benefits
An often mentioned benefit of exploratory testing is that little preparation is required. The tester learns the system as they test, so there doesn’t have to be a lot of training. Depending on the system, new testers can begin exploratory testing on their first day to get familiar with the system.
Another benefit is that it allows the user to consider new test cases. For example, the tester may find features that need to be included in smoke or regression tests. Likewise, the tester may need to perform the same task multiple times, which could help determine if it needs to be added to the automation suite.
Finally, exploratory testing is more stimulating than executing repetitive scripts. Testers may find it challenging and rewarding to use their personal creativity to find and report new issues.
Challenges
One main challenge of exploratory testing is that it cannot be automated. Exploratory testing is a manual process that requires thought and consideration. A machine performing automation can only respond to programming. It cannot consider a person’s preference and make a response.
Exploratory testing can be hard to replicate. For example, when a tester uses the system and believes they have detected an error, it may be hard to repeat the same steps without a script. Therefore, note-taking is crucial for exploratory testing because if a bug is not repeatable, it may not ever be resolved.
Reporting can also be a challenge. Unlike scripted testing, it can be hard to track the results of each session. It is difficult to determine if the sessions are beneficial or overly time-consuming without concise results.
Tools
Using tools specifically for exploratory testing can reduce the effects caused by the challenges above. For tools to complement your existing test management system or just to increase your available resources, here is a list of options that aid in exploratory testing.
- Exploratory Testing Chrome Extension – This free tool allows the tester to take notes and screenshots while reporting bugs. It automatically tracks the URL and reports the browser and OS version. A detailed report can also be saved and exported or imported as a saved session.
- Test and Feedback Chrome Extension – This free tool also allows the user to take notes, screenshots, and report bugs but with an added feature for users who subscribe to Azure DevOps Services by providing full capture and create capabilities and providing end-to-end traceability.
- Testivator (Google Play) – This free tool is for mobile testers and is available for Android and iOS. It allows the user to take notes, create and share test charters, take screenshots or screencasts, and share reports.
One benefit of exploratory testing is that it requires little preparation or experience with the system. A new tester, developer, or project manager can spend time ‘learning the system’ by performing exploratory testing. One benefit of exploratory testing is that it requires little preparation or experience with the system. A new tester, developer, or project manager can spend time ‘learning the system’ by performing exploratory testing. Testers who are just starting out can find issues that experienced testers miss when they only repeatedly run test scripts by providing a fresh perspective. Developers who are fresh to the business can see alternate and possibly more efficient approaches to develop the system. New project managers can find defects by questioning why functions perform the way they do.
Conclusion
Exploratory testing is an opportunity for the tester to execute unscripted tests, perform test design, think of new test cases, all while learning the system. It can be performed by testers of all levels, although the more experienced tester will have higher quality results. Exploratory testing is beneficial within appropriate scenarios but can be difficult to document or report findings. Tools exist to aid the process, although the session’s success relies heavily on the tester’s ability to reproduce steps after discovering issues.