- What is Exploratory Testing
Exploratory Testing is a process of investigating an application by learning and understanding its uses, features and operations in a series of logically constructed but ad hoc tests.
The term ‘Exploratory Testing’ was first coined by Cem Kaner, Phd.
- Why is Exploratory Testing required?
Scripted testing follows a structural approach and once we perform the scripted testing and find a few defects, then fix the defects, if we perform the scripted testing repeatedly, then we may not find any new defects and the chance of uncovering any new defects will be slim. To overcome this issue, we need to review and change the test scripts periodically.
As for exploratory testing, every tester has their own approach and follows a different, unique strategy to test the application. At every step, the actions that are performed next are governed by what is currently being done. This means, there is ‘CHANGE’ every time the application is tested. So, there is a good chance to uncover a number of important bugs, that scripted testing cannot, and in a relatively quick time.
- Exploratory and Scripted Testing should co-exist
As discussed above, exploratory testing is very important; but that doesn’t mean that we should only do exploratory testing and ignore the scripted testing. Exploratory testing can only be performed by experienced testers and it purely depends on the tester’s skills. Also, it is not suitable over a long execution time. Exploratory testing works best when performed within a set time frame of 1-2 hours.
We need to perform the regular scripted testing and in between, we need to identify when we can introduce exploratory testing. We need to be clear on what the goals of the exploratory testing are. In some cases, it serves as a final acceptance test on the quality of the software before it is ready to be delivered. In others, it serves as a beginning check, to identify any roadblocks, before starting the actual scripted testing. Ideally, it should be used throughout the testing process along with the scripted testing.
In conclusion, exploratory testing is only used to overcome the limitations of scripted testing, and not to replace it. Both should co-exist for the results to be optimum.
- How to measure Exploratory Testing
The single biggest problem about performing exploratory testing is ‘how to measure it’. Due to this, many testers avoid performing exploratory testing in spite of knowing the fact that exploratory testing is very useful and uncovers many new defects. Famous tester, James Bach, developed an approach to measure the exploratory tests performed, which is known as ‘Session Based Test Management’ (SBTM).
In SBTM, we perform exploratory testing by dividing the application to be tested, into sessions. A session can include testing a particular functionality or a group of related functionalities. A session can be defined as an uninterrupted block of reviewable, chartered test effort. Charter means that each session is associated with a mission – what we are testing or what problems we are looking for. It should have no significant interruptions like email, meetings, chatting or telephone calls. After testing is done, we need to prepare a report, called a session sheet, which should be reviewed by other testers or a test manager.
Testing duration for each session should be around 1-2 hours. After the testing is done, a session sheet needs to be prepared which contains the session charter, tester name, test duration, test notes and bugs reported. The entire process of testing a session and preparing a session sheet will take around 2-4 hours and hence a tester can complete around 2-3 sessions per day. Splitting the functionality into sessions and preparing session sheets, can be used to measure the exploratory testing performed.
- Exploratory Testing – a few examples
Below are a few examples and scenarios where exploratory testing can be used:
- Legacy application which has minimal documentation
When we need to test a legacy application which has minimal documentation, then the best way to test and provide feedback is to use exploratory testing and report it using session sheets.
- Early, quick check is required
Whenever a new functionality is developed or an enhancement to an existing functionality is made, it is better to do a quick exploratory check before starting scripted testing. It helps in finding major defects and roadblocks (if any) quickly. This way we can give quick feedback to the development team and reject the build if we found any roadblocks.
- Just before providing a sign off, after all the scripted testing has been done
After all the scripted testing has been done on a functionality, we can perform exploratory testing to diversify the testing process, before providing a sign off on that functionality.
- New and experienced testers have joined the team
When an experienced tester newly joins a team, then the best way for him/her to learn the application quickly is to use the exploratory testing approach. After the tester gets an overview of the application using exploratory testing, then scripted testing can be used to know more about the application.
- How to become a good exploratory tester
Below are a few of the best practices to become a good exploratory tester:
- Experience of past projects in identifying the common mistakes made by developers and use that experience to find those kinds of bugs quickly
- Involvement in Root cause analysis of defects, gives us insights as to where we can look for finding defects
- Solving puzzles
- Reading testing blogs over the Internet
- Attending testing workshops
- Reading testing forums – solutions provided for the problems posted and the experience of testers on implementing those solutions
The conclusion is to make time for exploratory testing to be a part of our testing process. During test planning, we need to also include exploratory testing apart from the regular scripted testing, in the testing scope. Exploratory testing coupled with scripted testing, produces optimal results.