Is exploratory testing similar to an ad-hoc test or monkey testing? Among software testers, there is admittedly, still some confusion with regard to the term "exploratory testing". The confusions lie in its technicalities; An exploratory test is almost similar to monkey testing or an ad-hoc testing and these 3 testing methods are unscripted in their nature.
The term ‘exploratory testing’ was first publicly used by Cem Kaner in the book “Testing Computer Software”. Another known pioneer of exploratory testing is James Bach. The definition provided by Bach states that, “Any testing to the extent that the tester actively controls the design of the tests as those tests are performed and uses information gained while testing to design new and better tests.”
Bach and Kaner define exploratory testing as any testing process that involves simultaneous learning, test design, and test execution. There are many other additional descriptions or definitions of exploratory testing which are more or less rewordings or rephrasing of the definitions provided by Bach and Kaner.
Some of the features of exploratory testing that are quite helpful in understanding the basic details of exploratory testing are listed here below:
- You can perform both test design and test execution at the same time.
Unlike in scripted software testing, the test design is not determined before
the start of the test. The tester is free to decide what follows next, based
on the outcome of the previous test. Almost all testing steps depend on the
skill and know-how of the tester in finding possible errors. This
characteristic of exploratory testing is also referred to as concurrence
cognition and execution.
. - This test is very informal. There is no standard and prescribed approach
for exploratory testing. The tester’s knowledge influences or will decide the
kind of approach used for testing. Different testers have different knowledge,
skills or expertise depending on their respective experiences and trainings.
. - The tester has the freedom to temporarily stop testing and do advanced
researches to learn more and understand the program in a better manner,
especially when the information is mandatory for designing the next test. In
fact, the tester’s response to the results is very important to the success or
failure to detect errors.
. - An exploratory test is a journey of many discoveries. One important trait
of a good exploratory tester is the curiosity to investigate about the
software and the test results. Exploratory testing gives testers the chance to
develop his or her creative side.
. - Limited documentation of the actual tests performed or designed based on
the results of the previous tests is an added advantage. The complete
documentation will distract the tester from conducting the fully loaded
exploratory test.
. - It offers lot of value and importance to unearth errors are still
misunderstood or undetected. Some testers are not comfortable with an
unscripted test procedure like exploratory test, because there would be no
control on the kind of testing the product will undergo. Some testers even
doubt on the viability of this test.
. - It offers you a situational structure. The course or path taken depends
largely on the situation or test results at hand. To be successful, the tester
should have the required knowledge to correctly assess the situation and
consequently arrive at the right design for the next test.
. - It is learn and work type of testing approach. The tester learns about a product, not just a testing method. To be able to react correctly, the tester must know the entire product very well.
Exploratory testing will be handy and useful for deployment, if the requirements and specifications are incomplete, or when there is a paucity of time. You can use exploratory testing approach to verify and confirm that previous testing was successful in finding the most important defects and errors.
Why do we need Exploratory Testing?
Why testers are trained to conduct exploratory testing? Why do we need exploratory testing? Although often misunderstood, every tester performs exploratory testing. Basically, the knowledge of exploratory testing will help testers to create robust and better software systems. There are many more reasons that make testing software with exploratory testing very important.
- While preparing a testing procedure, the author usually conducts
exploratory testing to come up with a workable testing script.
. - The lack of/or incomplete requirements or specifications make it difficult
to write a testing procedure. Exploratory testing is suitable in this
situation, where there is limited knowledge or information about the product.
. - When there is a paucity of time to write a test script or when software
testing information is needed immediately, you may be forced to conduct this
test. A skilled exploratory tester could design a special test for the
specific characteristic to be tested.
. - Repaired units should undergo exploratory testing, until all discrepancies are satisfactorily corrected.
Advantages of Exploratory Testing
There are several advantages and benefits to an exploratory test. Here are some of them:
- You can introduce it in the early stages of the software development,
since there is no restriction on the number of tests you can perform. The
tester may design and create the test that is applicable in all stages of
development
. - It is flexible and cost effective.
. - It is more productive than scripted testing, because the tester can omit
or prevent unnecessary tests, if the preceding tests confirm no further tests
are needed. In a scripted test, you should perform and document the whole
testing process, regardless of the previous results.
. - Preparation time is very less for preparing testing script.
. - You can find errors and bugs quickly and easily, if you choose to go
directly to performing a test that would detect such errors. You can do this
exercise based on the software information learned from reliable sources. The
tester’s ability to identify the areas where the errors are most likely to
occur comes from acquiring knowledge and skills of software testing.
. - Learning, research, design and execution of the test will be stimulating
to the investigative mind of the tester. The tester can learn more about the
software for testing and can do some research to determine the best design for
the next stage, which is to design the test and execute it at the same time.
. - The tester may perform only the tests that are deemed necessary. However, in case potential errors are suspected, the tester has the complete freedom to explore immediately, to ensure that potential concerns have been addressed. This is a real advantage over scripted testing, where the tester tests strictly according to the designed steps or instructions. The tester will focus on the compliance aspect of the testing method rather than observing the preliminary results.
Disadvantages of Exploratory Testing
With all its positive advantages, exploratory testing has some demerits and pitfalls too. Some of them are as follows:
- The test conducted to catch the errors is not repeatable. This could
result in the wastage of money and time, especially when there is are large
numbers of software applications that are waiting for testing. The company may
assign somebody to document the testing process, as the tester will continue
to work on the exploratory testing.
. - An apparent lack of documentation can be a big bottleneck. Test records
are important references. Records are solid proofs that the tester can provide
to the management.
. - You may need the services of skilled testers to improve the error-detection capability. Expertise is surely a great advantage, but a tester, who is willing to learn about the product and research on the most effective way to proceed with testing, can be a good exploratory tester. An inquisitive mind, with the ability to spot signs of potential troubles is an important asset in exploratory testing.
Software testing is one of the important quality control tools. Testing an application not only screens out non-conforming or sub-standard products, it also becomes the part of the feedback loop to inform the development personnel of possible errors encountered during testing. From the error data provided by the testing group, appropriate corrective measures can be implemented very easily. Testing would also develop the ability to check that the corrective actions have really eliminated the errors previously encountered, and later feedback the results to the developers.
Due to incomplete exploratory testing documentations, the feedback from the developing group will be usually verbal and immediate. As the exploratory testers are not mere testing machine operators, an intelligent discussion about the problems encountered during testing could be exchanged among the team members.
Real-time discussion of the defects and errors encountered is vital to a company’s quality improvement program. This feedback loop will plan to improve the product in terms of quality and cost. Improvement in the product would shorten development time, because of lowered time requirement for trouble shooting and re-testing. Eventually, the cost of software development would become less too.
Exploratory testing could be a powerful tool to detect software errors, depending on how you use it. Exploratory testers should have creativity, knowledge or past information about the product, attention to details, imagination, intuition, and the willingness to learn. The right attitude and proper training, to be able to react correctly and quickly to emerging situations or varying test results are necessary for an effective exploratory testing procedure. It is very important to use both the scripted and the unscripted methods.
In this way, you can balance the weaknesses of scripted testing with the strengths of exploratory testing and vice versa. Exploratory software testing is a powerful and entertaining approach to testing software. In some situations, it can be even more productive and beneficial than scripted testing.