Your Gateway to Exciting Quality Assurance!

Using session-based exploratory testing

exploratory testing
Exploratory testing is an important technique in software testing where testers dynamically design and execute tests based on their knowledge, intuition and expertise. Unlike scripted testing where tests are defined in advance, exploratory testing gives testers the freedom to investigate, experiment and learn about the system under test.

Session-based exploratory testing takes the exploratory approach and provides more structure by organizing testing into short, time-boxed sessions with defined goals. This approach combines the flexibility of pure exploratory testing with the focus and tracking ability of scripted testing. In this post, we’ll explore the key benefits of using session-based exploratory testing and provide tips for implementing it effectively.

What is Session-Based Exploratory Testing?

In session-based exploratory testing, testers design and execute tests on-the-fly in short, time-boxed test sessions. Key elements include:
  • Test Charter: Each session is guided by a short test charter that defines the mission and scope for that session. For example, a charter could be to test the checkout process on an e-commerce site.
  • Time Box: Each session is time-boxed, usually for 60-90 minutes. This time limit encourages focus and coverage of the area under test.
  • Test Notes: The tester records observations, test cases, defects and ideas during the session. This documentation is vital for tracking progress.
  • Debrief: At the end of each session, the tester summarizes their findings and learning in a debrief.

By organizing testing into short, focused sessions, testers can deeply explore an area while avoiding getting sidetracked or stuck. The time limit introduces urgency and encourages testers to work rapidly and follow their intuition.

Key Benefits of Session-Based Exploratory Testing

Increased Coverage
With its structured, time-boxed approach, session-based testing allows testers to rapidly cover more ground and explore more broadly and deeply in an area. The time limit encourages testers to stay focused instead of getting bogged down in intricate test setup and execution.

Freedom to Experiment
Unlike scripted testing, exploratory testing gives testers freedom to dynamically design tests based on what they learn as they test. They can freely investigate new angles and scenarios rather than just executing pre-defined tests. Within the charter, testers are unconstrained in how they test.

Engages Testers
Exploratory testing leverages a tester's skills, intuition and creativity instead of making them merely execute scripted tests. By giving testers freedom to choose their own tests, it keeps them actively engaged and leads to a more thorough, insightful testing process.

Effective Learning
The rapid test design and execution combined with debriefing helps testers quickly build knowledge of the system under test. By focusing on learning, exploratory testing builds understanding faster than scripted testing.

Agility
With no scripts to maintain, session-based exploratory testing is highly agile. Testers can rapidly start testing new features or areas as soon as they are available. No upfront scripting is needed.

Lightweight Documentation
The session charters and test notes provide useful documentation without requiring creation and maintenance of full test cases for every scenario. Documentation is created naturally during the testing process.

Better Defect Detection
Studies have shown exploratory testing finds more defects than scripted testing. By applying human intelligence, knowledge and creativity, exploratory testing is extremely effective at finding bugs.

Implementing Session-Based Exploratory Testing

Here are some tips for implementing effective session-based exploratory testing in your organization:

  1. Define the Mission - Create test charters that define the goal and scope of each session. Focus missions on learning about specific areas rather than test cases.
  2. Time Box Rigidly - Fix session duration upfront, usually 60-90 mins. This introduces urgency and focus. Resist exceeding time limits.
  3. Record Progress - Take notes on tests executed, observations and defects to measure progress and share results.
  4. Debrief - At the end of each session, review accomplishments and learning. Update the test plan for the next session.
  5. Start Small - Introduce exploratory testing gradually via short sessions focused on high risk areas. Get team buy-in before adopting more widely.
  6. Provide Training - Teach testers how to effectively explore systems and take useful notes. Develop strong charter writing skills.
  7. Involve Developers - Invite developers to observe sessions and debriefs to increase learning and collaboration.
  8. Review Metrics - Track session progress, defects found, and coverage to monitor value delivered and optimize the approach.
  9. Retain Flexibility - Don't over-define the process. Retain flexibility in charter content, session duration and documentation detail.

Here is an example of how session-based exploratory testing could work in practice:

Test Charter: Explore edge cases in account registration form
Session Duration: 60 minutes

Session Notes:
  • Tried registering with 300 character first name - failed with field length exceeded
  • Used special characters in first name field - system accepted them
  • Entered negative number for age - created account but with age shown as 0
  • Used valid but fake email addresses - accounts created successfully
  • Entered passwords with spaces - system trims spaces and creates account

Debrief:
  • Discovered length limit bug on first name field
  • System doesn't validate emails thoroughly - risk of fake accounts
  • Next session should focus on testing account login process

By adopting session-based exploratory testing, teams can maximize the benefits of exploratory testing while introducing structure and measurability. This lightweight but powerful technique will lead to more engaged testers, faster learning, and more effective and agile testing. Consider introducing some short exploratory testing sessions into your testing approach and see the benefits firsthand.