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.
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.
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.
Considering the pros and cons, the usage of exploratory testing based on development requirements is more thoughtful. Few scenarios where it is applicable are
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!