Exploratory Testing: With Great Power Comes Great Responsibility

Ayme Perez
September 27, 2022
“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:

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:

To Conclude

​​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.

You may also like:

Search

🍪We've got the cookies. Did you bring the milk?
Dismiss