Exploratory testing is a continuous process for executing testing activities, in which the design and execution phases are performed simultaneously. The tester might start with the testing procedure, without having clear knowledge about the guidelines for testing processes. Instead, the tester decides what and how to test, during the testing itself, by exploring the product. This provides more flexibility to the tester and the test is performed accurately.
Primarily used for functional testing, exploratory testing enables the tester to learn about the product while testing, making the tests more
efficient every time.
Exploratory testing is a hands-on approach that simultaneously involves discovering, investigating, and learning. This type of testing maximizes test execution and minimizes planning.
Exploratory testing is mainly focused on test execution rather than creating test scripts. Therefore, you don’t need to complete functional test design document, which involves a lot of preparation, planning, writing etc. The effort for test designing can be utilized for test execution. In Exploratory testing, the test design phase and execution happen in parallel. No conventional test cases or test plan need to be followed. Without following a prepared test script, you can decide what to test.
Exploratory testing demands that the tester should think out of the box. Since there are no scripts involved, you really need to be aware of what needs to be tested. This is what exploratory testing is all about. You get answers to questions like, “what happens if I do this?”,“ why does that happen?” etc. Answer to each question guides the evolution of the test. You are essentially “exploring” the software application.
Exploratory testing needs a deviation from convention testing approach, using the test scripts or test design document. You can traverse through the application as required. By doing this, the tester is able to find new scenarios. He/she has the flexibility to explore the scenarios by experimenting with the product.
The exploratory testing involves less effort. It is helpful when you are concerned about short span of testing cycles. You don’t need to dedicate much time for designing the test scripts. Once you understand the requirements, you are able to run exploratory testing effectively.
While running exploratory testing, you will acquire more knowledge about new scenarios and bugs. You can take note of that which is going to help you with the test scripts. Testers can focus mainly on these test scripts to find bugs. Most of them are likely to use real user scenarios which can prove to be useful for scripts and increase the test coverage.
Exploratory testing is a feature that is added to planned testing. Here, the test design is created first and execution phases are created and
conducted later. A tester who is conducting the tests will get a set of guidelines and list of steps to follow, in advance, describing how the test will perform.
One of the advantages of planned testing is the accessibility to share the test plan with others and perform the resource analysis before the execution starts. This is often used when there is knowledge about the product and time resources are not an issue. This also, enables more options. For instance, different planned testing tools can be used during the planned testing design phase. These include equivalence classes, decision tables, decision trees, state machines or use cases. On the other hand, one of the issues with planned testing is that due to the structural process and need to follow a step-by-step procedure as specified in the designing phase, some product aspects might not be clear, if they are not considered in the plan. In exploratory testing, they are discovered, spontaneously.
Therefore, if you have already executed planned testing, it would be a good practice to add exploratory testing in the beginning of your process. You could also, add exploratory testing later in the cycle. This will mitigate the possibility of undiscovered areas. In some cases, performing the same tasks in a different way can bring different results.
Before taking the final plunge and deciding to go with exploratory testing, one should have a purpose and some defined goal. In exploratory testing, you don’t just verify whether functionality is working as expected or not. But also, need to think of different scenarios for functionality that could lead to breaking of the system or cause it not to work.
Test from different aspects and from different perspectives need to be carried out. Also, try to add some user specific scenarios. It is recommended to try and test the product like someone who is exploring the product for the first time. Remember, you’re essentially designing the tests at the same time you’re conducting them.
This is the most informal and less recommended way for testing. Anyone is able to perform Ad Hoc testing even if no testing skills exist. All you need is to ask him/her to try the product without giving instructions or setting expectations.
In Ad Hoc testing, there is no order, objective or method. This method can be helpful if the only objective is to report bugs. However, since exploratory tests are not registered, there is no way to follow up or trace the tester actions.
It is the most common way to apply exploratory testing strategy. The idea is to provide a period of time, usually between 30 minutes to 2 hours for a mission. Mission refers to what needs to be tested. This mission can be a functionality, a form, or any aspect of the product you need to focus on.
After the testing is completed, the tester will complete a document with notes from the session, including the date, name of the tester, risks, bugs, coverage and metrics. Some of these metrics are total time spent on the session, relation between time spent on the mission versus time spent on opportunities and percentage of time for testing, defects and session built. The tester then, analyzes these metrics. For example, if the relation between time focused on the mission is less than the acceptance value agreed for this system, a new session may be needed. However, distractions are allowed and may also, provide information as per the need for new mission or more time for testing.
This is probably the most used technique by the experienced testers. In this case, the tester will apply the various types of techniques, such as limit values or equivalence partitioning to create test cases while testing. This way the tester can use his/her knowledge and implement techniques he/she considers most appropriate for a successful testing.
The agile environment is always running with tight deadlines. It’s very important to understand the requirements in a given span of time. Once you have clear idea about the application, you can execute the exploratory testing. While performing the test design and execution in parallel, exploratory testing reduces your time by creating a test design and test procedure. You can utilize your time to explore the product in details without compromising on the business requirement.
If there are new features added to your product, you need to understand the feature properly to design the test scripts, when you have time constraint. Exploratory testing being mainly focused on new features, there are chances to find more bugs than already found, while testing and in existing features. In exploratory testing, you are traversing through the product with different scenarios. Because of this, there is a probability of finding new bugs.
This is related to the above point. When you find many bugs in a feature, you can take note of that and include them in your test cases. You will get a set of test cases that can be focused upon in the next cycle of testing.
Once you have a clear idea about the application, you can execute and explore the testing cycle.mThis will help you to understand the product more. Also, you have the chance to use the product like an end-user. This will help you in understanding the application to a large extent.
In agile development, each phase has time constraint. The client can change the requirement anytime which is why agile has been made flexible. In such scenarios, exploratory testing is of huge benefit when you don’t have the time to plan your test design. You can test the most important features and can be assured that the product will remain stable.
The agile methodology runs through small span of cycles for each of the phases. Exploratory testing has great advantage as it can find the bugs in the new changes much faster and the entire scrum team can manage all the tasks within the deadline of that sprint efficiently.
Sometimes there isn’t enough time to write a test plan and a set of test cases prior to testing. You just need to test. Exploratory testing is useful when rapid feedback is required. You might find it useful when you’re not sure which sequence to follow while testing. The process of exploratory testing will teach you what to test further.
Most of us probably have conducted exploratory testing when bugs are found. When you find bugs, you don’t write a set of test cases on how to test the bug, you just test it. This approach of testing helps you to identify the scope and severity of the bug quickly.
There is often, no exact record of what’s been tested with exploratory testing. This makes it difficult to measure test coverage and prove that the testing has been effectively carried out. It’s also possible to overlook bugs while testing in this manner. A pre-defined set of test cases helps ensure proper test coverage.
By carrying out the test design and test execution in parallel, the time spent on test design is less. There may be a risk of bug slippage due to the lack of good test design document. Few other things to keep in mind are:
• Tests cannot be reviewed.
• It is difficult to keep track of what tests have been carried out.
If you intend to learn about the tool or product, exploratory testing is a useful approach. This may help you to make the right decisions for your testing plan.
• Use exploratory testing if you have time constraints or do not possess much knowledge about the product.
• Learn from previous tests performed to conduct more efficient tests in the future.
• While you perform exploratory testing, take notes. They will serve as important inputs while decision-making and test coverage.
• When conducting session-based testing, the objective is to test and achieve the mission. However, distractions aren’t necessarily an issue as different perspectives may arise from distractions.
There is no standard pattern for doing this type of testing. As a general testing practice, a tester writes test cases, creates test data, and then executes them. However, in exploratory testing, no test cases are written. The tester opens the application and starts browsing to identify defects.
• Divide the application into modules and the modules into different pages. Then start the exploratory testing. This will give you the right
• Make a list of all the features and mark when it is completed.
• Begin with a basic flow and then gradually improve it by adding more features to the test.
• Test all the input values and fields.
• Test for validation/error message.
• Test all the negative scenarios.
• Check the GUI against the standards.
• Check the integration of the application with other external applications.
• Check for complex business logics.
Exploratory testing is a hands-on approach in which the testers are involved in minimum planning and maximum test execution. It is beneficial as it triggers the thought process and helps the product without following the test design techniques. The main advantage it provides is that, it saves time by preparing the test design and working on the execution phases in parallel. Exploratory testing is considered to be a superior technique to enhance your testing skills.