Skip to main content

A practical take on Exploratory/Session Based Testing

General Overview and Definition:
As companies look for more cost effective and agile testing methods Exploratory (or Ad Hoc testing) is coming to the fore. I like James Bach’s definition best: ‘Exploratory testing is essentially simultaneous learning, test design and test execution.’ The approach relies on your instinct as a tester and requires a high level view of the functionality.
However, planning an exploratory testing session is key. Planning should be high level and based on the key aspects of the functionality and your testing toolset.

Planning - A Practical Example:
A Software Development House needs to release a piece of functionality to a client. The client insists that it is tested by the end of the day, bugs notwithstanding.
This gives you, the tester, and one working day to test it. For the example this is 6 hours of test time, with half an hour for planning, and a further hour to tidy up and ask questions/raise defects.
The functionality is available for test and has passed initial deployment checks.
The piece of functionality regards creating an online account with an e-Commerce site has 7 requirements, split over three functional areas. This document assumes you have one or the other!
It is recommended that you add a priority and a size to each requirement or functional area. The priority may or may not be provided but you can apply your own common sense to the issue:

Functional Area
Requirement
Priority
Size
Account Details
User can add a Username
High
Medium

User can set a Password
High
Large

User can set Address Details
Medium
Medium

User can add a Nickname
Low
Small
Add Payment Methods
User can add a Credit Card payment method
High
Large

User can add an e-Wallet payment method
Medium
Large
Post Account Creation
User is logged in after creating an Account
High
Small

The key is the priority and the size; we can use this to work out a strategy for allocating time. This is done subjectively:

Requirement
Priority
Size
Percentage of TimeAllocated
Time Allocated in Hours
User can add a Username
High
Medium
15
1
User can set a Password
High
Large
25
1.5
User can add a Credit Card payment method
High
Large
25
1.5
User is logged in after creating an Account
High
Small
10
0.6
User can set Address Details
Medium
Medium
10
0.6
User can add an e-Wallet payment method
Medium
Large
10
0.6
User can add a Nickname
Low
Small
5
0.3

You now have a high level plan which communicates the priority order of testing and how much time this will take. Communicate this to the stakeholders (development team, project team etc) and you are ready to get started.

Exploratory Testing – Executing the Plan:
So we have decided our plan and testing can begin.
The first requirement is ‘User can add a Username.’ There is an hour allocated for this.
Obviously all the requirements for Account Details are linked (you may not be able to submit an Account Creation Request without some of the other items but our focus for the session is on the username. ‘Stub’ out the other fields with values you think should work.
Structure as follows:
User Interface – How is the UI presented? Is there any validation? Any help prompts? Can I interrogate the CSS,JavaScript, and Flash (if web based)?
Middleware – How does my username get to the DB? Is it a messaging system? Web service? Does it validate on its way through?
Database/Storage – Where/what is the DB? What are primary keys? Does my username need to unique? How do the database rules translate to the UI?
As you generate and execute these high level test ideas, note a sentence that describes what you have tested (try in a text file it easily communicable and you don’t need to rewrite them afterwards). Note any defects/questions which occur under the Test Idea. Do this incrementally as they occur, rather than storing them up.
Leave yourself sometime at the end to communicate your coverage of each requirement outwards, clarify any questions,and decide which of your potential defects need to be logged.

Resources:
Basic Definition

Key Aspects of Exploratory Testing

Exploratory vs Experience Based Testing

Testing without a Map – when there are no requirements!

Comments

Popular posts from this blog

A Lone Tester at a DevOps Conference

I recently had the chance to go to Velocity Conf in Amsterdam, which one might describe as a DevOps conference. I love going to conferences of all types, restricting the self to discipline specific events is counter intuitive to me, as each discipline involved in building and supporting something isn't isolated. Even if some organisations try and keep it that way, reality barges its way in. Gotta speak to each other some day.

So, I was in an awesome city, anticipating an enlightening few days. Velocity is big. I sometimes forget how big business some conferences are, most testing events I attend are usually in the hundreds of attendees. With big conferences comes the trappings of big business. For my part, I swapped product and testability ideas with Datadog, Pager Duty and others for swag. My going rate for consultancy appears to be tshirts, stickers and hats.

So, lets get to it:

3 Takeaways

Inclusiveness - there was a huge focus on effective teams, organisational dynamics and splitt…

Wheel of Testing Part 2 - Content

Thank you Reddit, while attempting to find pictures of the earths core, you surpass yourself.
Turns out Steve Buscemi is the centre of the world.

Anyway. Lets start with something I hold to be true. My testing career is mine to shape, it has many influences but only one driver. No one will do it for me. Organisations that offer a career (or even a vocation) are offering something that is not theirs to give. Too much of their own needs get in the way, plus morphing into a badass question-asker, assumption-challenger, claim-demolisher and illusion-breaker is a bit terrifying for most organisations. Therefore, I hope the wheel is a tool for possibilities not definitive answers, otherwise it would just be another tool trying to provide a path which is yours to define.


In part one, I discussed why I had thought about the wheel of testing in terms of my own motivations for creating it, plus applying the reasoning of a career in testing to it. As in, coming up with a sensible reflection of real…

The Team Test for Testability

You know what I see quite a lot. Really long-winded test maturity models. 

You know what I love to see? Really fast, meaningful ways to build a picture of your teams current state and provoke a conversation about improvement. The excellent test improvement card game by Huib Schoots and Joep Schuurkes is a great example. I also really like 'The Joel Test' by Joel Spolsky, a number of questions you can answer yes or no to to gain insight into their effectiveness as a software development team.

I thought something like this for testability might an interesting experiment, so here goes:

If you ask the team to change their codebase do they react positively?Does each member of the team have access to the system source control?Does the team know which parts of the codebase are subject to the most change?Does the team collaborate regularly with teams that maintain their dependencies?Does the team have regular contact with the users of the system?Can you set your system into a given state…