What is Exploratory Testing?

By definition, exploratory testing is a software testing style that emphasizes the personal freedom and responsibility of the individual tester, to continually optimize the quality of his/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.

Exploratory testing relies on the tester’s experience and thought process, where the tester is involved in minimum planning and maximum execution, and that is why it is not heavily documented or scripted. But that is not to say that it cannot be documented on some level and become an integrated type of testing to provide excellent QA coverage.

Exploration of software is basically looking at a certain feature, functionality, change and the overall behavior from learning as well as from a critical standpoint. Exploratory Testing is a crucial aspect of software testing, which almost every tester performs knowingly or subconsciously. That to say, all testing is exploratory to some extent. Even when performing a test based on a written script, a good tester will do so with some degree of exploration.

Exploratory testing is also known as ad hoc testing, and was known solely by this term until the early 1990’s, when a group now called the “Context-Driven School” started using the term exploratory. Cem Kaner was the person that coined the term Exploratory Testing in his book “Testing Computer Software” and described it as:

“Simultaneous test design, test execution and learning with an emphasis on learning”.

As an experienced tester myself, I cannot stress enough upon the benefits of exploratory testing. Working in an agile team, we are facing the struggles of time-crunch and release-time pressure. Though we did have scripted tests and automated regressions too, my best defects were found during exploration!

Session Based Test Management

Some test managers or project managers are wary of exploratory tests because of the lack of ways to manage or gather evidence of work performed or achieved by testers. This is where Session Based Test Management comes in. Session Based Test Management aims to combine accountability and exploratory testing in order to provide rapid defect discovery, creative on-the-fly test design, management control and metrics reporting.

For a novice team, the best way to start with exploratory tests would be to set aside an uninterrupted time box for exploration with a certain objective in mind. Set the goal and have a block of 1-2 hours set aside for looking around that feature/ component/ functionality/ behavior or use case of the application, with the focus of finding defects. During this time, keep a note of your observations and report them at the end. This is called a Test Session and the pre-defined goal you set for your session is called a Test Charter. A test manager may then keep track of the number of test sessions allotted to a tester, their time spent and their observations of value which may include defects, questions on design or doubts about the usage of features.

For teams that are larger in size, more mature in their exploratory test skills, or for teams in need of more structure around their exploration, there are many tools that support exploratory testing by providing standardized ways of creating, assigning and fulfilling these test charters.

Have questions regarding Exploratory and Session-Based testing?

Check out this recent LIVE Q&A webinar we hosted with James Bach, Consulting Software Tester and Buccaneer-Scholar. In this unique Webinar, Both James Bach and Joel Montvelisky discuss questions regarding Exploratory and Session-Based Testing, from Theory to Methodology. View the full webinar for free

Exploratory Testing Tools

Test management tools like PractiTest, that support exploratory and session based testing practices, can give your QA coverage that extra advantage, by enabling all various testing efforts managed under “one roof”.

Exploratory tests tools allow you to define Charters for your Exploratory Test Sessions, document your notes, defects and observations as annotations as you are running your tests, report bugs directly from your runs, and finally to review your exploratory test sessions with colleagues in order to gather feedback. They also help to time your session and keep a track of the history and logs of past runs of your test sessions. These exploratory testing tools’ features will help you create as well as manage exploratory test sessions, and also help easily combine them with scripted as well as automated test runs.

Exploratory Testing in PractiTest

The PractiTest exploratory testing module allows you to define test charters & guide points for your exploratory sessions and save those guidelines as test cases for future reusability. Additionally, the usage of custom fields can help perform the session for different environments.

When running the ET test case, you can document important points that arises in the annotation section as well as report new issues or links existing issues. Finally, you can create reports based on your sessions and later review them with your colleagues and your team lead.

A Test Set can include all types of tests at once: automated, manual and exploratory. This ability can help you combine all various test types and to improve QA coverage and traceability.

To get a better idea about how this works, visit PractiTest's full exploratory testing documentation, or watch this ET tutorial:

Exploratory Testing Examples

Most exploratory tests will start with a test charter. The test charter will usually indicate the goal of the session. The charter can be chosen either by the executing tester or by the test lead/test manager. Test charter may include some guiding points that will further guide the tester while conducting the session.

The following example, presents an exploratory test case that will serve the tester as a plan for his/her exploratory session.