Monday February 18, 2019
What is Exploratory Testing?
Exploratory testing is a testing approach where you explore the system and venture into those aspects and functionalities which may or may not directly affect the system’s outputs, in order to find underlying errors.
It is all about exploring the system, discovering hidden errors, investigating their cause and rectifying them. There are no pre-defined test cases formed in exploratory testing and therefore the testers explore the system aimlessly in hopes to find unforeseen bugs.
The purpose of performing exploratory tests is to learn more about the system and its functionality and using your existing knowledge about the system to find errors.
Testers need to be very creative and innovative in order to perform exploratory testing as the aim is to test the system for unexpected errors using unexpected techniques.
Even though there are no pre-defined test cases, testers may note down or document their ideas and things they want to test before performing the test.
How is it different from structured testing?
1. Flow of the test
In structured testing, the flow of the test is directed by test cases which are prepared ahead of time.
Test cases are not determined in advance in exploratory testing and the flow is directed from exploring the system.
2. The objective of testing
The main objective of structured testing is to find foreseen errors whereas in exploratory testing the aim is to learn about the system and gain knowledge about its functionality.
Structured testing is predictive in nature as the flow of the test is predicted in advance.
Exploratory testing is spontaneous and investigative in nature. Tests are performed on a proper investigation is conducted.
4. The end results
The end results of structured tests are known and anticipated. However, the end results in exploratory tests are unknown and unexpected.
Exploratory Testing Process
The process followed during exploratory testing is:
This is the first step of exploratory testing and one which is very crucial. Learning about the system is important because you will be able to better analyse all the minor and major functionalities of the system and check it for bugs.
Your knowledge about the system will help you explore the system and create test designs and plans accordingly.
Unless you do not have knowledge about the system you will not be able to explore it in detail.
2. Test Design
Tests designs are created spontaneously during exploratory testing and there is no need for documentation of test cases, scripts and the conditions of the test.
3. Test Execution
Test execution is performed along with test designing. As soon as you plan and design your test you execute it without waiting for formal documentation. Only the key components of the test are recorded like the bugs that are detected or ideas for the next test.
When some bugs are detected on exploring the system, proper analysis and feedback are made in order to rectify the errors.
The previous test result feedback helps testers to prepare for future tests and apply logical reasoning to guide the future of software testing life cycle.
Advantages of Exploratory Testing
Disadvantages of Exploratory Testing
There are some disadvantages related to exploratory testing which makes it a little harder to implement.
Performing Exploratory Tests
Exploratory testing does not follow a particular structure; however, there are a few steps that are common to each exploratory test. The preparation of exploratory tests is a 5 step process:
1. Learning and classifying errors
The first stage of exploratory testing is gathering the results of the previous exploratory test in order to learn the errors found in the past projects. Testers need to analyse these errors and understand the root causes of the bugs so that they can develop a test plan or strategy to test their system.
2. Test Charter tool
Test charter is a tool which is used to run exploratory tests. The stakeholders define the scope of the test and risks that need to be found using the test charter. Thus the charter should tell testers the following things:
3. Time Box
Time Boxing is the practice of setting a fixed amount of time known as time box during which a tester or a team of testers work together to find bugs. The time box session should not be interrupted and the testers should only focus on testing the system.
The testers working in pairs or groups can come up with the most creative exploration techniques and device efficient solutions to the errors found.
4. Analyzing the results
Once the testing process is completed, the results of the test are reviewed. The defects found are evaluated and testers learn the causes of the defects in order to come up with the best solutions.
The results are compiled and compared with the charter. This helps testers identify whether they have tested the system according to the stakeholder’s needs and demands.
Things to keep in mind for exploratory testing
1. Understand the main aim of testing
Exploratory testing is all about learning about the system and understanding its core functionality by exploring unexpected system paths. During this process, certain unforeseen bugs are detected.
2. Planning the test is very important
Although test cases are not pre-defined during exploratory testing, it does not mean that exploratory tests are completely unplanned. Testers study the system and previous test results in order to figure out and plan their test. This helps them save a lot of time as they know what they are looking for.
3. This is skill-based testing
Testing skills are an essential part of exploratory testing. Testers completely rely on their skills in order to explore the system and test it for defects. Therefore exploratory testers should be highly skilled and have good knowledge of all software testing techniques.
4. Keeping a record of the test can be very beneficial
Even though exploratory tests are not documented, recording the findings, results, and defects found or any other outcomes of an exploratory test can be very beneficial.
5. Exploratory testing should be a team activity
It is always better to perform exploratory tests in pairs or in a team. This helps testers to come up with better test plans, exploration techniques and solutions to the defects found.
It overcomes all the shortcomings of structured testing. It helps testers detect errors which go unnoticed during scripted tests as they do not directly affect the outcome or working of the system.
This is the reason exploratory testing has become a very popular testing approach, especially for complicated systems. Exploratory testing has many advantages over scripted testing and helps testers focus on gaining knowledge about the system.