Exploratory Testing, which is often referred as black box testing technique is all about exploring things during testing. Unlike other testing concepts, exploring is more of a hands-on approach with minimum planning and maximum execution. Greater focus is on exploring what the software does, how it works, what functionalities go through the testing funnel and so on.
The simplest definition of exploratory testing is parallel test, design and execution. Testers discover and learn about an application & simultaneously design test cases and plan execution, which saves lot of time. The steps carried out in the exploratory testing is given in the below diagram.
Who does exploratory testing and what skill does it demand of a Tester?
Exploratory testing is a skill of testers with an expertise in app development and of course the testing methods. It is obviously reflected in the quality of testing with the handiness of the tester in designing test cases and identifying bugs. Documentation and scripting of test cases comes only as a formality in this case as design and execution cycles are conducted in parallel. Of course recording cases and bugs should not take much of a manual effort.
What difference does exploratory testing bring to the table when compared with scripted testing
In scripted testing the test cases are built in advance with steps and expected results, these cases are performed later and compared with the results. Whereas, in exploratory testing few results are predictable and few are not. The tester need to explore, observe, understand and evaluates the product, thereby significantly inspecting the results and reporting the bugs & issues related to quality.
It doesn’t mean that other formal testing techniques will not be used in exploratory testing. A tester may decide to use particular scripted testing method to a part of the project along with inventing new test cases in exploratory testing.
- There is no need for preparation - script less.
- Finding bugs during initial stage is possible.
- Saves lot of time, as all tasks are done simultaneously.
- Identifying bugs and rectifying them is much more efficient since each case runs through the test, design and execution phases in parallel
- Skipping/moving between the test cases when needed is possible since, no cyclic process is followed as in case of scripted testing.
- It is not possible to review the test cases.
- Difficult to find which test case is responsible for the desired outcome (bug or defect) as they are executed in parallel.
- Executing the test cases in a similar manner for all other times in future is a tough job.
- Reporting & documentation is uncertain.
Considering the pros and cons, the usage of exploratory testing based on development requirements is more thoughtful. Few scenarios where it is applicable are
- When there is minimal requirement for strict documentation
- In case of time-constrained projects
- If testing is needed at an early stage of the software development lifecycle
Practically, testing is always a combination of scripted and exploratory testing. In most cases, exploratory testing is done as a check after normal scripted testing method, which helps to build more confidence in the software. Preparing automated test cases where it is feasible and necessary, at a unit level will help in solving issues and there should always be a better utilization of testing techniques as the projects demand!