Exploratory testing is a manual testing technique which is defined as simultaneous learning, test design, and test execution. The nature of exploratory testing makes it a very useful technique as far as agile methodology is concerned.
In agile methodology, software is released in small iterations that we call sprints. Every sprint has some deliverables that require the approval of the product owner. Each sprint goes through planning, estimation, development, integration, and testing.
Because of frequent releases, it is essential to provide early feedback to the developer. Exploratory testing can play a major role in this.
In this article, we are going to explore when and how exploratory testing should be performed such that it can add maximum value to the system.
When to Start Exploratory Testing
Testing in agile can be divided into four different quadrants. The first two quadrants are focused on unit and functional testing. In the third quadrant, we start with exploratory testing and end with performance testing.
Basis of these quadrants is its two sides of testing, one where we are supporting programming by writing unit tests, components tests, and doing functional testing with Automation. Whereas on the second side of the testing, we are critiquing the product.
Unit testing and functional testing ensure that the application/product is ready for exploratory testing where we can focus on high risk areas to find potential problems.
How to do Exploratory Testing
Test design and test execution go simultaneously in exploratory testing. It is very important to define a process that can help and direct us so that it does not end up as an ad-hoc.
Following is the step by step procedure to conduct exploratory testing:
- Choose area of testing:
Choosing an area or feature for testing would be the first step to begin exploratory testing. We can analyze the results of functional tests and prioritize different areas based on the number of defects we find. It is always recommended to select the most error prone area and start exploratory testing there. Multiple defects and their fixes put that area at a high risk.
- Task breakdown and allocating time for exploring application, creating strategy for test, and test execution:
This approach will ensure focused execution while doing exploratory testing. Once we identify the area, the specific time slot can be allocated for further activities that would be carried out in the execution process. For example, authentication is the area which we have identified for exploratory testing then we can complete the task breakdown as follows:
- Explore and Strategize (Duration: 30 min)
Start time:
End time:
- Execution (Duration: 60 min)
Start time
End time
- Documentation
- Execution:
a. Explore area to be tested (understand functionality and flow):
Once we finalize the area of testing, we should learn the flow and pattern of the defects and fixes made to stabilize that feature. It will help us to identify test scenarios that would lead us to the testing part.
- Understand and learn the area by analyzing the defects or earlier execution reports for this area.
- Come up with some cases or inputs where we can start executing that are specific to the identified area.
b. Come up with positive and negative scenarios around identified area
c. Focus execution on identified area
- Start execution for identified cases and continue execution by focusing on identified area.
- Though we are focusing on a specific area of application for exploratory testing execution, to complete end to end flow we also touch other areas when it comes to testing. It should not deviate our focus from the identified area. The primary focus should always be the identified area that we choose for exploratory testing.
Various themes in exploratory testing:
Focus on various themes that help to uncover application behavior and defects on the specific identified area.
Focus of the exploratory testing can take various themes as:
- Act as a standard user.
- Act as an impatient user.
- Act as a user who is not technically savvy.
- Act as a user who is unaware of application flow.
- Act as a user who is concerned with security context of application.
- Documentation:
At the time of execution, we should cover both documentation and execution simultaneously. It should not be the formal documentation but we should have test notes ensuring that we are tracking executed scenarios as well as failed cases.
- Test Notes
- High level steps followed in execution for different scenarios.
- Details and steps when we observed defects in execution.
- Environment Details
- Complete details of test environment (Build version, firmware version, OS details etc.)