“Exploratory software testing is a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the value of her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project.” - Cem Kaner
Sometimes testing is described as a set of documented test scripts to be executed by a tester. Well, I understand exploratory testing as the opposite of that. We do not reproduce a previously written set of steps during exploratory testing. With exploration, we may not know exactly what we’re looking for, and we certainly don’t know exactly what steps we will execute.
With exploratory testing, we are more likely to find new problems because we will always be trying new and different things. We will need less planning time than we usually spend testing the product.
We also have some drawbacks, for example, the requirements are not as traceable, and can’t easily link what has been done to some explicit requirement. Also, tests are harder to repeat because precisely what we’ve done hasn’t been written.
Aspects of Exploratory Testing
Exploratory testing is a continuous learning process, this is the most important aspect here and what gives the most value to this type of test. By not having guided testing we will learn things that we do not know about the product. We won’t do the same thing over and over again, even if you’re trying to figure it out again or running regression tests. Another aspect is freedom and responsibility. The exploratory tests don’t tell you exactly what to do, so you have a lot of freedom. With freedom comes responsibility. You, as the exploratory tester, are the one who decides what is important to verify and consider. This freedom and autonomy make testing much more interesting and potentially more valuable, but we need to make sure we use that freedom to do.
Exploration in Agile Development
Fast feedback is the key to the Agile process. The point of short iterations and fast feedback loops is to learn so we can adjust what we’re doing. Well, that’s exactly what we do when we use exploratory testing. We are learning. For this reason, I consider exploratory testing to be a perfect option for the Agile development process. Exploratory testing isn’t just about using the product, it’s also about experimenting, learning, and helping others improve the code, so it can be done at any stage of the Agile development process.
Tracking Exploratory Testing
The lack of documentation in the exploratory testing can face us with challenges such as being able to demonstrate the tests that we have done. Without losing creativity and learning we can structure and organize the tests. One technique that can be used is session-based test management. This technique allows for a structure around exploratory tests without the need to prescribe every one of the steps. There are a couple of key parts to session-based test management:
Charter: In this section, briefly we’ll report on what’s being tested.
Time: Sessions are limited in time. It takes concentration to take advantage of the time and be able to go deeper and try to find problems — disabling notifications has helped me a lot ;). This section will log the real-time that we spend in each session.
Note: It is very important to log the comments and thoughts of the tester to help us in future iterations.
Metrics: We must be careful with this section, it can complicate the exploratory testing process and it is everything that we are not looking for. Some metrics focus on:
- The type of task and the time: We can mention the time it took to configure, design, and execute the test, investigate and report bugs.
- Coverage: We mention the area of the product in which we are working and the type of test strategy.
- Bugs: Focuses on the type of bugs we encountered and other possible issues and concerns we encountered.
Planning Exploratory Testing
Contrary to popular belief, exploratory testing can be planned and that planning can add a lot of value. The goal of planning in exploratory testing is not so much to have a plan at the end that will be kept exactly but rather to have an idea of what we are going to test that allows us to easily locate the session under test. I like to follow an idea called mind mapping that I learned in a course from Dave Westerveld. It consists of a tool that you can use for brainstorming. It allows for a sort of easy-to-read branching structure, for example, a test plan for the Linkedin login page would look like this:
The exploratory testing allows us to work on our creativity, improve our autonomy, and grow our feedback with the team. Without detailed steps to follow, without long hours writing an extensive test plan, we can explore the product in-depth, but we have to be very responsible and use the freedom that this type of testing offers to optimize the time and achieve a quality product.
Hexagon tumeric banjo bicycle rights. Deserunt commodo try-hard taiyaki marfa, live-edge cardigan voluptate pork belly hexagon laborum 90's poutine bespoke. Hella asymmetrical offal skateboard chia DIY actually mukbang flannel magna messenger bag 3 wolf moon letterpress minim coloring book. Voluptate vexillologist raclette pariatur vinyl. Post-ironic chicharrones irure jianbing incididunt mustache etsy organic PBR&B. Do cillum vaporware ennui venmo adaptogen cloud bread.
Sriracha tweed gatekeep ennui, messenger bag iceland JOMO magna in tumblr la croix.