Exploratory Testing is software testing approach that simultaneously incorporates learning, test design and test execution. While the software is being tested, the tester generates new tests to run by learning, experiencing, and being creative. The key to Exploratory Testing is to leverage the tester’s cognitive innovation, creativity and time management skills.

Exploratory Testing is pretty awesome, as it not only lets you get started on the testing process quicker, but it’s also pretty stimulating for the software tester’s intellect. The issue with Exploratory Testing is that it can be pretty easy to get caught up in the testing, and forget to keep track of what test cases have been performed, where issues have been found, and how to recreate bugs.

So, how do we solve this problem? To be able to complete the testing process, we need to be able to show our actions and processes, and manage our traceability. Traceability is typically managed through a Traceability Matrix, a document that is used to correlate two baselined documents to determine the completeness of the relationship. So what happens if, like in Exploratory Testing, we have minimal documentation to begin with?

Utilizing Session-based Testing

The best way to track your progress through Exploratory Testing is through Session-Based Testing, a software test method developed by software gurus Jonathan and James Bach. Session-based testing provides rapid defect discovery, creative on-the-fly test design and metrics reporting. Session-based testing can be used to introduce measurement and control to an immature test process and forms a foundation for significant improvements in productivity and error detection.

Elements of session-based testing

Session-based Testing is comprised of formulating a mission statement for the exploratory testing process, designing a charter, or goal, for each test session, the actual testing session, and a session debrief.

Mission

The mission in Session Based Test Management identifies the purpose of the session. The mission is meant to establish what we are testing and what problems should be specifically discovered. A mission should be formulated at the beginning of the testing project.

Charter

A charter is a goal or agenda for a test session. Charters are created by the test team prior to the start of testing, but can be added or changed at any time. It’s a good idea to create charters by examining results from previous sessions or from existent test cases.

 Session

A session is comprised of each period of time that is spent testing. Each session is focused on a charter, but testers can also explore new opportunities or issues during this time. The tester creates and executes test cases based on ideas, discoveries and/or frameworks to guide and records their progress. The recording part is important, as it helps the tester to establish future charters, comprise a list of bugs that have been found, and document what has already been tested. This recording can be performed by any method that is deemed appropriate by the tester, like written notes or video capture tools.

Session report

The session report records the test session and is written up by the tester at the end of a session. This includes factors like:

  • Charter
  • Area tested
  • Detailed notes on how testing was conducted
  • A list of any bugs or defects that were found
  • A list of issues (open questions, product or project concerns)
  • Any files that the tester used or created to support their testing
  • Account of time spent during the session focusing on the charter vs. investigating new opportunities for testing

Session Follow-up

The session follow-up is a short discussion between the manager and tester (or testers) about the session report.

Session-based Testing Results

The Session Report enables the testing manager to aggregate data about the testing sessions as a whole, comprising reports about the sessions and metrics about bug investigations and other activities. Session-based testing allows the exploratory testing process to be expedited, while utilizing the creative skills of the tester. It’s also useful for on-the-fly test evolution as requirements change and tests are executed, and allows exploratory testing to be utilized to its fullest extent.