Tuesday, March 27, 2012

Bit of a gap?

A few of you have gently but reasonably taken me to task for apparently dropping the "How to Manage Exploratory Testing" series right in the middle.

Well, this is a blog; it's more of a resting pace for the half-baked than fertile soil for the half grown. You may be relieved to know that there is plenty more to come*.

Let's see, however, what the readership want. I have stuff on

  • The joy of reviewing 407 abstracts for EuroSTAR – tools, pathologies, the lessons I took away about how I might write a better abstract.
  • How Fear influences Strategy, and other hand-wavy ideas
  • Lessons from the Stanford AI course, and what a (moderately) sapient tool based in current technologies might help us to do
  • More Black Box machines (these ones record stuff, I hope)
  • Something very interactive, very testing, very systems, but nothing like the black box things.
  • How to test Spreadsheets (vital, often overlooked, perhaps now getting attention. My potential contribution has been half-baked for years now, so help me push it over the edge)
  • What it felt like to read the Weekend Testing sessions on something I wrote.
  • Opportunity vs control, secrets vs lies, and the extension of the imagination. Will involve my hands waving fast enough to tingle.
  • Peer relationships in peer conferences, and how I feel about LEWT
  • The next in the Managing ET series. I'm particularly looking forward to the ones on SBT, the Enquiring Metricator, and Lenfle. 


Which of these float your boat?

* but let's hope it's not as poorly-written as the wretched 'off-piste' entry. Or, indeed, the preceding metaphor in the § above. Blogs may be hardly-read, but that's no reason for them to be awful to read.

Tuesday, January 31, 2012

Comedy bug, and upcoming events

So I saw this, and I thought you should, too: Just an Ordinary Day in Skyrim . Particularly funny bug at 20s or so in.



While I'm here*, the Exploratory Testing workshops in Oxford went very well, thankyou. Those of you in the know will already know that I'm organising a 2-day workshop on exploratory testing techniques in Amsterdam on 12 and 13 April. Contact me if you want to be kept up-to-date (and to get the earliest-bird discount). Details to hit the web soon. There's been a bit of a hiatus in the 'lots of ways to manage ET' series, but the rest are in the works. Expect to see one at most this week, none at all next week. So much for writing a new post daily; turns out day-to-day stuff gets in the way.

If I was around, I'd be setting off to one of the following low-cost local events;
Paul Gerrard's UK Test Manager Forum is next week, in London. 2 days (tutes, talks and dinner) for just under £300 inc VAT. Maybe, on reflection, that's not a particularly astonishingly low-cost event. The TMF's track format has a keen eye for conversation rather than lecture, which is all to the good, and so it's hard to pick out a particular recommendation. In the tutorials, look out for Dave Evans' hands-on workshop 'Specification By Example, in Practice'.

Chris Ambler is organising TestFest in Brighton on Feb 22. Tickets are £60. As he describes it, it will have not one, but two parallel interactive elements demonstrating test tools and approaches. Twin TestLabs anyone? The event has a clear focus on Brighton (and the UK's) gaming industry, and is as far as I'm aware the first time that a testing conference has paid the large and creative community much attention beyond a couple of track sessions. There's lots to discover from game testing (see bug above), and it looks great. Anyone with an interest in where we've come from will want to know that Geoff Quentin** will be in evidence.

++Missed this in the initial posting... ++
TCL is running a Zappers event in London, also on February 22nd. Zappers is a great opportunity to meet and talk and test. The event is free, and TCL don't simply lay on food and beer, they also set up a software/system target or two, and award prizes for finding bugs. TCL organise regular Zappers events all over the world, and huge kudos to them for doing so.

++Missed this too... ++
Tony Bruce and Nathan Bain set up the Agile Testers meetup a few years ago, and Tony's persistence has made it a monthly must-do. The next is on Feb 27th. Breaking the mould, (the meetup is generally in a pub, and is more about talking to each other than being spoken to) it's at SkillsMatter in London, and Chris Guest from Microsoft will be talking about Powershell.

++And another...++
The Agile Tester's Meetup is back to its usual format a couple of days later. From 5:30 on Wednesday 29 Feb (leap evening, so perhaps there will be a tale to tell about bugs of the day from iPhone owners) at the Shooting Star opposite Liverpool Street station. Free entry, good chat. Sign up on LinkedIn or (my preference) Meetup.

The SIGiST is doing its thing on 7th March for £132. Thankfully, this time you've got Lee Copeland, Julian Harty and Lloyd Roden, all of whom are worth your time. As a special treat, the usually-fascinating Allan Kelly gets a 15 minute slot too.

Ministry of Testing (the ever-present STC in ninja disguise) are running TestBash in Cambridge on March 23rd. It's a day long, and costs £99-£150 depending on how fast you move. Among the excellent selection of speakers, Steve Green and Alan Richardson are two of the best practicing and practical testers I've worked*** with. Not only this, but both have a keen focus on the exploratory end of the spectrum, and both have novel and well-thought through things to say.



* I'm not going to be nerd-sniped into diagnosis, but it seems that you won't have seen this posting until Monday 6th, though it's dated and was written January 31st. Dave's probably already packed his bag for the tutorial.
** Geoff played a vital part in initiating a number of things that now seem a necessary part of our industry (the SIGiST, EuroSTAR, BS7925 and the awful exam, various training organisations and approaches). If that list seems a little old-school, remember that's what initiating means. One reason for the longevity of these bodies is that Geoff built their sustaining communities by seeking out participants whose views were at odds with his own, but who in some sense matched his keenness to communicate and engage with other testers. If the SIGiST, exam and so on now seem moribund, that is perhaps because of the lack of diversity of their current participants. Personally, Geoff has been a crucial and much valued influence – and we taught a class together that was built in part around our fundamental disagreements.
*** Worked with as in: found real bugs in real stuff for real money, working with real people for months at a time. That's what they do.

Tuesday, January 17, 2012

Known ways of managing ET #05 - Off-Piste Testing

tl;dr – scripted guides may not help exploration


Team leaders tell me ‘My testers use manual testing scripts*, but I want them to do more than just plod through – I want them to find problems’. This seems a reasonable idea, but is fundamentally incoherent; ‘Finding a problem’ is not necessarily a complementary goal to the action of ‘following a script’. However, it happens. Let’s look at two common approaches. I’ll call them Iron Script, and (by way of contrast) Marshmallow Script.

Iron Script
The scripts remain authoritative. Testers are expected to deviate at agreed points, typically by changing their data within reasonable limits. Adding new events or changing the path is frowned upon; in extremes, a bug that is found using a non-standard path may be rejected, and the tester asked to reproduce the bug on the accepted path. If you can get some kind of pre-approval for diversions taken through error states and validation checks, you’ll open up a bunch of interesting routes whose valuable information might otherwise be used against you by project pedants.

It’s my experience that scripts in these situations frequently mirror end-user activity, and that the steps focus on triggers at the expense of observations. If your testers must run through the script, then they must, but don’t let them get dull. Remember that you are a team of testers, not users, and that you can still get unassailably-helpful information from querying the database, watching the CPU, intercepting transactions, using a diff tool on the filesystem, or any other neat trick that takes your fancy. Constraints breed creativity.

Marshmallow Script
The scripts are a guide, a collection of hints or waypoints. Testers can deviate wherever they want, using the scripts to get to interesting points, or as a checklist to verify their expectations. The scripts act as fat charters, and by giving their names to paths, help testers to talk about what they’ve done and what they’ve found. This isn’t bad, as far as it goes.

However, the approach puts happy paths – reliable routes that demonstrate limited capability – at the core of decisions about what to test and how to test it. This emphasis can be a terrible drag on the swift revelations that might be desired from unfettered ET. It can wastefully restrict your testers’ imaginations, and seems to reinforce manual testing at the detriment of small cheap tools.


I tend to find that these approaches exist in parallel, but may not be acknowledged as such. It is powerful – sometimes, too powerful – to wonder out loud whether the team as a whole is looking to move away from their scripts or to add to their scripts. This can turn out to be emotive enough to be ignored in polite company; bringing it up in public can make people very impolite indeed.

One might question why the team is writing scripts at all. Scripts are expensive to make and hard to maintain. If they exist to give the testers a framework to explore requirements and product use while writing them, other frameworks might work just as well. If they are primarily a guide for novices or a crutch for the feeble, then perhaps one needs to rethink one’s approach to learning, and possibly to hiring. If they are primarily a way of recording work, then why not record the work with something more unambiguous, or more searchable? If they exist because an environment is hard to automate, then I would wonder if everything scripted is quite so hard to automate. If they exist to keep testers on a leash, then I have no further questions.

These are, however, rationalisations of a generally irrational position. I think the answer lies not in conscious choice, but in habit. The approach seems common in situations where budgets are only available for work that can be measured with reference to requirements and scripts, yet where the test team and its decision makers know that their survival-in-current-form requires fast information about emerging trouble. Maybe it’s endowment bias; if no one wants to chuck away all those scripts they’ve been working on so hard, then the scripts will remain central to the work no matter what the work is. In the first, future plans don’t match current practice. In the second, neither does the past. I often see both. Is it any wonder that the team lead’s goals might not match their means?

As a skier**, I’m drawn to the term ‘Off Piste’, and the term ‘Off-Piste Testing’*** seems a popular metaphor for this approach. Between the mountain top and the snug chalet in the valley floor, there are many paths: some groomed, marked and filled with tourists; others quiet or exposed, with cliffs and bears. There is an implication that off-piste is only for the most skilled, keen and well-equipped skier. The implied kudos is eagerly lapped-up by testers, and off-piste testing can be used as a motivator with two caveats; status should be earned through good work, and good information can gained from diverse approaches. Whatever the rules of the mountain might be, it is perilous to restrict off-piste testing to your elite.

More importantly, off-piste is still downhill. Scripts, whether used as hard or soft guides, bias testers towards a set of activities that most typically follow whatever actions are expected to be valuable to the user, system or owner. These activities are not the only ways to find problems. Those who manage exploratory testing by running after scripts will handicap their team.



* For this blog post, script means a step by step set of instructions to be read through and followed manually by a tester. Some of you may be aghast that such things are still in use. Some of you may see no alternative. For each of you, please believe that each position exists.
** Note to prospective clients – if you're near a properly-skiable mountain and book me to come to you close to a weekend during the season, I may have a seriously-tasty winter offer for you.
*** ‘piste-off testing’, anyone? Just me? Hey ho.

Tuesday, January 10, 2012

Uncommon Ways of Managing ET #04 - Post-partum Labelling

tl;dr – tl;dr your ET notes to see where you've been

I’ve worked with plenty of testers who don’t timebox their time, don’t set out a charter before testing, and don’t do formal debriefs. Clearly, they’re not following session-based testing, but that doesn’t mean they’re necessarily doing bad exploratory work. Indeed, some of the most brilliant exploratory testers I’ve worked with are fully able to do all these things yet choose not to for much of their exploratory testing.

Personally, I almost always have a timebox, and find I prefer my results (but not my activity) if I make good notes. I can find charters trivial or restrictive, and debriefs can lead me to remember only the edited highlights of my exploration – so if my debrief sucks, my memory can be less useful than if I’d not debriefed at all.

Charters, timeboxes, notes and debriefs have a value to the team and the project as well as to the tester. If the team habitually relies on them, but an individual works best without them, then you’re faced with a choice of whether to force that tester towards an ineffective discipline, or whether to damage team performance. Which is no fun.

This then is a simple and obvious alternative, but I’m not aware of much that has been written to describe it. Nonetheless, I’m sure that many readers will recognise the activities below, and I can’t claim that this is in any way novel. Perhaps if no one’s written about it, it doesn’t seem legitimate, so no one writes about it. Perhaps I’ve just forgotten what I’ve read. Anyway, the following is a collection, and to that extent an imaginary extension, of stuff that has worked for me. I’m going to call it Post-partum labelling*. If you’ve got a better name, or know where someone else has named it, super. Comment away.

After a chunk** of testing, the exploratory tester describes their work in a sentence or two. They write this up in public. For example:
8 Jan – 60 minutes: Ed used a javascript profiling tool to analyse the web app.
8 Jan – 120 minutes: Sue spent 2 hours exploring reported instabilities related to switching sort order while autosaving.
9 Jan – 180 minutes: Brin and Rudi spent 30 minutes watching two users interact with the demo app for the first time, and spent the next 60 minutes reviewing and annotating video of the sessions.
10 Jan – 180 minutes: Jonno spent 3 hours on batch input, generating 3088 files that together contained all possible orderings of 5-step transactions.

This works well if you’ve set aside time for experienced and self-directed explorers to test. If you’re expecting a terse diurnal list like the one above, you might find it to be a good fit with daily news. It’s perhaps not such a good fit if you’ve got testers who have problems with focus, or if your test approach means that your list grows by more than half a dozen lines a day.

The list won’t help you know where testing is going, but it’s great to help you know where it’s been. Everyone in the team can see who explored what and when, so you know who to talk to, you know what’s been hit recently, and your memory and understanding of the system’s recent history has enough to help fill in the blanks. The team knows what it is paying attention to, and knows where individual interests lie. I think this is generally more useful than having an obscured testing genius bringing the system to its knees in interminably unfathomable ways.

Writing a post-partum label helps me put most recent test activity behind me, and allows me to think diversely as I enter the next round. I like knowing that I’ll need to write a public one-line summary of my hours of discovery; it helps maintain focus.

While I like a timebox, you might not. I wouldn’t insist on timeboxes if I was doing post-partum labelling. The people in the team know the budget, and they’re already trusted. The exploration is done when it’s done; forcing a timebox is a silly micromanagement. However, if people on your team are prone to pissing away their time and don’t embrace timeboxes or similar tools as part of their personal discipline, they’re probably not the best people to be doing post-partum labelling.

It’s time to change approach when your post-partum labels turn into “looked at login, again” or “checked out last week’s bugfixes”. If your label can be made before exploring, then it probably should be. Post-partum labels arrive after, and may not fit what you would have expected at the start. If you’re exploring, this is often a good thing.

Please, don’t get the impression that the label is an adequate substitute for notes. Sometimes, awfully, unfortunately, that’s what it is. Try to avoid this.

I’ve used similar approaches when I’ve been the exploratory addition to a team that has been relying solely on scripted or massive and confirmatory tests. I found it helpful when we had more test ideas than we could easily manage, and yet had target pathologies, observations and triggers that urgently called for our attention. Post-partum labelling helped me fit my work with other explorers and the rest of the team, helped me gain trust by offering visibility, acted as a trigger and conduit for other people to bring me ideas. It let my team spin very swiftly back through a couple of weeks of exploration, identifying which set of notes might hold relevance. It gave explorers who weren’t happy with SBT fit into a team that was trying to gain the disciplines of SBT. It wasn’t much good for assessing coverage. It didn’t link to requirements. It was rubbish for steering. But I liked it.

I’m very tempted to extend the idea further. I want to capture the information electronically. I want to add tags, to allow me to analyse where we’ve been spending time. I’m keen to describe problems found. I’d like to try using Stefan Butlin’s interesting TestPad web app (and I shall, it’s neat). However, these adjustments change the emphasis of the list. Have a look:
8 Jan – 60 minutes: Ed used a javascript profiling tool to analyse the web app. [code, performance, UX] We’re spending plenty of time inside check_constraints(), which looks recursive.
8 Jan – 120 minutes: Sue spent 2 hours exploring reported instabilities related to switching sort order while autosaving. [instability, UX, autosave] She found a reproducible crashing bug, logged a couple of UX issues, and identified potential exploitation.
9 Jan – 180 minutes: Brin and Rudi spent 30 minutes watching two users interact with the demo app for the first time, and spent the next 60 minutes reviewing and annotating video of the sessions. [UX]We identified and logged UX Issues around context menus, the hiding menu bar, and error messages.
10 Jan – 180 minutes: Jonno spent 3 hours on batch input, generating 3088 files that together contained all possible orderings of 5-step transactions. [batch, instability] The system correctly accepted 182, correctly rejected 2900, but hung on 2 that it should have rejected. No bugs logged yet, as we think this may be to do with a mistake in the configuration data in the test system.

Do you find yourself skipping over stuff now? I do. It’s as if it’s all too much to hold together. You’ll be keeping this information somewhere else, too, I expect – and I think that’s where it should stay. Keep the list single-purpose. You’ll find it lives in people’s heads more easily and more consistently, becoming part of the shared consciousness of the test team. And how cool is that?


* made-up name. Obviously. Post-partum is a latin term used to refer to the mother after giving birth (as opposed to post-natal, which apparently applies to the baby). You know what a label is. I want to get across the idea of a tester giving their work a unique and meaningful title, once it’s done.
** a chunk? What’s a chunk? I find that my mind merrily organises memory and activity, and groups the similar and temporally-close. If you have control over your interruptions, you’ve come to the limits of your chunk when you choose to change task. Sometimes, you don’t choose consciously. It’s still a chunk. My chunks of time testing are often hours. Writing, just minut… hey! A squirrel***!
*** I can see six, right now, in the evergreen oak outside my window. No, seven. Five. A parrot!

Thursday, January 05, 2012

Known ways of managing ET #04 - Set Aside Time

tl; dr – scheduling ET changes the game. This is how to cope.


The team decides to budget a fixed amount of time for exploratory testing. Of course, that’s not the end of the story. This post is about what happens next.

First some background and disclosure: This sort of decision has been the trigger for a fair proportion of my client engagements since around 1998*. So I see this more often than I might. Generally someone on the team has eloquently persuaded a budget-holder that the project will find value in time spent exploring**, and I get to work with fresh, enthusiastic and newly empowered testers. So I find the situation delightful. Who wouldn’t? I’m sure these two complementary perspectives colour my experiences, and I expect they have coloured my writing too.

Budgeting a chunk of time to explore what you’ve made is a fine idea. As a management approach, however, it’s a bit hands-off. Sometimes, neither sponsor nor enthusiast has worked out the details of what is expected from whom and by when. More particularly, although there’s often a great sense of adventure, there’s not much consideration about the strategies for coping with inevitable change. Here then are some of those changes, a few related pathologies, and some strategic and tactical tweaks that have worked for me.

Dealing with lots of ideas

There will be a monstrous growth in the number of testing ideas; test teams have no problem coming up with new ideas about what and how to test. The practical problems lie in picking the best, dropping the newly-redundant, classifying and slicing and managing the set. Picture people trying to stuff an octopus*** into a rubber sack. This is a natural part of testing; one of the characteristics of wicked problems is that you can’t pin down the solution set.

As with all monstrous growths, the quantity of test ideas will be limited by external factors. If you’re keeping ideas on sticky notes, you’ll run out of wall space – which is perhaps better than putting everything in an expandable database that no one bothers to read. The most usual limits**** are to do with patience and attention span. When working within the set, the team will learn crucial filtering and throwing away skills, but will also run up against endowment bias; it’s hard to let go of something you own, and harder to let go of something you’ve worked hard to gain. There is likely to be conflict or denial – all the more so if the team has to date been under the consensual hallucination of potential completeness which underpins script-only approaches.

The growth in quantity may not be not matched by a growth in diversity or quality of ideas. This is only made worse by a testing guru (sometimes me) who sees it as his or her job to come up with new ideas. A good way to defuse some of this problem is to encourage the team to not only add to the ideas themselves, but to challenge ideas and remove them from play. If you make your influential tester the champion for diversity or quality in the collection, that can help too. I’ve often seen teams hamstrung by an inappropriate attraction to combinatorial collections; given a set of test ideas, someone draws up a table of (say) data type against input, and works through, left to right, top to bottom. Stop this in its tracks; tables and ordered progressions indicate a single real idea, one which is ripe for heavy optimising with a tool. If you can’t automate, decide which combinations are most important to do right now. If you can’t prioritise or optimise, hit the combinations randomly and learn from them as you go.

I like to constrain the numbers of test ideas in play by saying how much time an idea might need, and keeping the total amount of time needed under some reasonable limit. Although I can get as sucked-in by combinatorials as the next tester, I find that I tend to prefer diversity over depth. I try to temper this bias by paying attention to the agreed strategy and the current context – which means it’s good to have talked about what is valuable to the project. If I find myself pouring out ideas in some consultantish denial-of-service attack on the capabilities of the team, I’ll find a corner and write until I’ve calmed down, then see if my list triggers people to put their own ideas up, rather than fill the wall with my collection.


Dealing with fast feedback

Exploratory testing makes some feedback much faster, so a commitment to exploratory testing will change the feedback characteristics of the project. If there is a personal connection between the designers, coders and testers to support this feedback, the consequences can be excellent. Problems get fixed quickly, the team can develop a better understanding of what quality means on the project, and testers swiftly find out what they need to supply in a useful bug report. I’ve often seen palpable increases in respect and communication, which leads to trust and an overall greasing of the machinery of a development team.

Teams who have built massive confirmatory automated test are used to fast feedback, but of a very different flavour from that provided by exploratory testing. Feedback on on novel modes of behaviour and unanticipated failures can deeply challenge a team who thought their design was watertight. I’ve been told that bugs aren’t bugs unless they’re found by a customer, and that any bug without an immediately-obvious fix is a feature. I see both of these reactions as denial, and an indication that I should have prepared the ground better for the kind of feedback I can offer from exploring the product. The situation is made much easier if you are working with a real customer or user, rather than acting as proxy. The cry of pain might also indicate that your testing priorities don’t match the priorities of the people constructing the system – it’s your call whether you need to re-align, or whether you should embrace the difference. I’ve written more about the correspondences and conflicts of exploratory testing on agile teams in Testing in an Agile Environment.

More problematically, some people don’t want feedback when they’re in the throes of making stuff. I’m one; it gets in the way of the fragile extension of the imagination that is at the heart of how I make new things. Some testers are remarkably insensitive to this, others imagine that they need to somehow sweeten the pill. When I have results or questions, I prefer to make it known that I have feedback, and to give that feedback either to a group at a time when everyone is tuned in, or to an individual on invitation. Of course, it’s great to be able to march up to someone’s desk and get an immediate response, but what’s good for you might not be good for your colleague. Decide whether it's the right time to ask before you get between momma bear and her cubs.

As a test team gets closer to its audience, some will imagine that the test team risks losing its independence, and will resist – for instance – exchanging design information or locating the testers a shout away from the coders. Isolating the testers is an obvious but stupid way of encouraging independence of thought. You’ll find more in The Irrational Tester.

Conversely, test teams who have no existing connection with their designers and coders throw their feedback into a void. Swift, accurate and targeted information might seem valuable, but is worthless to the builders if it is delayed by procedure and snowed under by noise. The feedback in this case is primarily for the users (and sometimes the sellers) of the software. It’s crucial to understand your audience.

Some legally-minded people (and some sellers) don’t want information about new failures and will restrict or censor feedback. Some need plausible deniability, and don’t want to even look. If you have this situation as a test manager, messing about with ET won’t fix your problems.


Dealing with decisions and organisational oversight

Groups that are new to ET tend to see a large expansion in the number of problems found before they see a reduction in the number of problems made. More than once, when I’ve been dropped into an agile team as an exploratory tester and customer representative, I’ve had to take the judgement about whether to horribly disrupt the vendor team’s workflow by filling it with bugs. Clearly, if relations are good, blowing the workflow is bad – even if it is an indication of a crisis ignored. So far, I’ve managed to avoid purposefully blocking the flow. However, although it is a decisive and disruptive step, new exploratory testing groups can fatally disrupt the flow easily, unconsciously and even gleefully (which is nauseating, but happens). When bringing ET into a project, it’s vital to have awareness of this dire ability throughout the project team. If the workflow is king but the quality poor, decision makers will need to prepare for compromises on all fronts.

Once exploratory testing is chugging along, you hope to reach a point where fewer bugs are being made. I’ve had complaints from metrics people that fewer bugs are being found. This is a fine demonstration of failure demand, and I find it easier to set it as desired goal at the outset, rather than have to explain it as a side effect. I’ve found it useful to put this in terms of ‘we will not necessarily find more problems, but we will find more useful problems and find them faster’. Similarly, some metrics people count a day when lots of problems have been found as a bad day; it’s easier to help them deal with their pain if you’ve already had a chat about how much worse it would be if all that trouble was revealed later.

A decision to be hands-off can make some managers feel insecure. This feeling may lead them back towards the test team with unexpected needs for oversight and control*****. To avoid this, any team that has been given a degree of autonomy needs voluntarily to help their sponsor feel secure. I find that it helps to make a clear agreement not only about responsibilities, but about material deliverables. For instance: “We will keep a steady pace of exploration, shown by a public counter of time spent. We will display our test ideas and will be able to discuss them at any time with anyone on the project. We will make a visual distinction of those ideas which we have explored, those we are about to do, those we will probably do, those which we have recently eliminated, and those which have recently arrived. All time spent exploratory testing will be documented, and the documentation kept at <link/location>. All bugs logged from exploratory testing will be cross-referenced to their discovery documentation. Where we cannot keep to these commitments, we will make a collected note of the exceptions. We will come to you at the start, end and at regular intervals throughout significant testing efforts to keep you up-to-date. We will come to you with requests for help with obstacles we cannot overcome ourselves and with decisions about changes to budget and staff, but not with decisions about test direction and prioritisation. You will allow time for our regular reports and requests, and will champion our autonomy as set out here. If you are unable to give us the help we ask for, you will let us know swiftly and with reason.”

Budgets change. Sometimes a project wants more exploration, sometimes there’s less available to spend on it. While the test team may have started out with a fixed exploration budget, and may be comfortable cutting or expanding its testing to suit, there may be questions around how it would drive a change and require more (or less) from its sponsors. This is to misunderstand testing as a service – the people to whom one provides a service will be the people who ask for more, who want less, who adjust the balance. Clearly, the test team will be engaged in the negotiation, but I would question the motivation of a test team that prefers its own budgetary decisions over the informed decisions of its customers and sponsors.

Lots of teams seem scared of putting exploratory testing in front of auditors. I’m not sure why; the auditors I’ve met seem to do a lot of exploration in their work, and I’ve always found it helpful to ask the appropriate auditors about what they might expect to see from exploratory testing before we start exploring. If there is, for instance, an unadjustable regulation that stipulates that all tests must be planned, the auditors are not only most likely to know about it, but to be able to give you an indication about what they might accept (i.e. charter+timebox in plan post-hoc). I understand that session-based testing was developed in part to allow exploratory testing to be audited. If auditors have a place in your organisation, then it’s better to expect them****** than to hide; talk to your auditors and negotiate what they need for assurance. I wrote a note about this here on the blog in June 2011: How to Assure Exploratory Testing.

Crisis reveals underlying truths. I can't recall a project that has identified every necessary task, or given each task the time that was needed or budgeted. Testing, especially when considered with a potentially-unlimited discovery element, is eminently squashable and so is usually squashed – which tends to reveal uncomfortable truths about how the overall organisation understands testing. If exploratory testing is squashed out of existence when testing as a whole is squashed, your decision makers see ET as a luxury. If exploratory testing takes the whole pie when (but only when) testing is squashed, decision makers see ET as a short cut. Both these positions are pathologies. You might be able to spot them early by indulging in a spot of scenario planning, or you might trust your instinct. I work from the position that testing is a service – mostly optional, generally valuable – which I find both reasonable and benign, but my position could be a pathology in your organisation.

As a team grows into exploration, it will develop a library of tools. By tool, I don’t mean a downloadable executable, but something that arises from the combination of mindless machinery with data, configuration and conscious application by the minds of the team. A chainsaw needs a lumberjack*******. Some tools arise as testers automate their manual, brain-engaged testing – and as the automation takes over, the tool will change the way a tester triggers problems and their ability to observe surprises, not always for the better. Other tools arise because they enable a whole new class of tests, and using the tool even briefly exposes a new perspective with its own easily accessible bugs. A tool armoury is one of the core assets of an exploratory testing team; exploratory testing without tools is weak and slow. As with any library, it needs to be organised to be useful. If I can, I keep a public list of tools, techniques, tricks and test data, perhaps tagged with general useful areas and knowledgable users. I encourage people to name and share their approaches. I try to get individuals to pair on tool use, or to hold swift training workshops.

One of the strengths of session-based testing is the way that it uses brief and frequent retrospectives to move skills through the team. Any exploration has learning at its heart, otherwise discovery builds nothing. Apart from skills in tools and test approaches, a test team needs to build knowledge of the system they are testing. We all know the truism that by the end of a project, the testers know a system better than anyone else. Exploratory test teams also build their awareness of how the system is used (and abused), and have broad connections throughout the users of their system and across the various sponsors and stakeholders. The edges of the team blur as people are seconded in and out; not all exploratory testers will identify themselves as testers. I have occasionally found easy acceptance of exploratory testing way outside the test team, which can give a neatly circular confirmation that the team made a good decision to set time aside for exploration.

In conclusion…

Test teams setting out to explore need to have a conversation with the overall project that acknowledges that this discovery activity cannot be completed, and seeks to find out what the project most values so that the test team can align its work to the overall desires of its customer and the goals of the project. It’s good to have a one-page strategy outlining goals and responsibilities. Internally, the team will need to work out how to make its work visible and trustable, and how to support its exploration and learning. It will need to organise and constantly refine a collection of tools and test ideas, drawing inspiration from diverse sources. As exploration becomes more understood, used and valued, the test team will broaden its skills and blur its edges, bringing its services closer to the coders and the customers.


* Not that anyone in my circles at that time saw – or named – exploratory testing as a distinct thing.
** I’ve mentioned one way that teams arrive at this point in Known ways of managing ET #03 - The Gamble
*** You’re here? Good for you. Welcome, friend. I know that you are interested in details and diversions. As am I. Between us, I don’t mean an octopus. Imagine Cthulhu.
**** because they’re the smallest, and so are arrived at first.
***** which sounds to me like Marshall McLuhan’s reversal effect. You’ll want to read Michael Bolton’s article for more.
****** It’s not like they’re the Spanish Inquisition.
******* and transport infrastructure, logistics plan, pulp mill, petroleum industry...

Friday, December 23, 2011

Uncommon Ways of Managing ET #03 - Daily News

tl;dr – exploration every single day works wonders

Every day, one person explores for 90 minutes, allocating a further 30 minutes to bug logging, diagnosis and follow-up conversations with others involved in the product. The whole team gathers for a 5 minute briefing on the day’s exploration, where the explorer talks about areas covered, concerns and interesting discoveries. Anything is open for exploration; the configured and working product, its data, a group of requirements, known bugs, user manuals, the production trouble logs.

Some days, knowing the area under exploration, the news would be keenly awaited by all. Some days, there would be nothing new to report. Some days, the approach to the exploration would be far more interesting than the results.

The team might include the briefing in a daily standup. They might decide to be briefed first thing in the morning on what had been found in the previous day. They might choose the next area of exploration at the end of the briefing, allow the explorer to be directed by a someone who steers, or give the explorer the initiative. I expect that there would be a big, visible and public compendium of untried ideas.

The time given to exploration is predictable, and should not be seen as a minimum or a maximum, but as a regular activity. The more stable the product, the wider the exploration, the more unstable, the more that the collective exploration will reflect the overall assessment of trouble areas. The group learns as a whole, and individuals learn to take a step beyond the group’s expectations. I expect that individuals would look forward to taking their turn as the explorer, and that the team would rarely keep the same explorer from one day to the next. While competitiveness will lead to diversity and excellence, it stands a chance of causing individuals to hide some of their approaches until they become the explorer. Whoever is managing the team will need to take care to temper competition with shared purpose.

The regular and relentless expenditure of a fixed duration, and the expectation of team scrutiny would encourage each explorer to take a concentrated approach in a fruitful (and so potentially novel) direction. This is an approach to exploration (rather than to testing). It works best if interesting parts of the subject of exploration can be reached swiftly – but as easy parts to reach are exhausted, people will think of new things to explore, or construct mechanisms to get them to a new point of exploration. Collectively, their explorations would be more diverse than might be achieved by a single explorer or dedicated scout. If ever the whole team found they had exhausted their stock of new ideas about what to explore, I would use that as a trigger to ask whether we needed more tools, more skills, a more stable set of artefacts to explore, or whether we knew our application really well.

Thursday, December 22, 2011

Known ways of managing ET #03 - The Gamble


tl;dr – exploratory testing can be a gamble. And what's the problem with that?

As I write this, it’s coming up to Christmas*. Christmas is a hard deadline**, but there are clear gift-related requirements from one’s nearest and dearest***. As weeks turn to days and days turn to hours, some people find they have no gifts, yet no appetite either for handing over socks or gift vouchers. So they gamble. They give themselves some time, and head off to hunt for presents. Sometimes, not everyone gets a present, sometimes the presents are junk. Sometimes, they’re inspired. Generally, after spending roughly the allotted time and just a touch more than the allotted budget, the giver has something approaching the right number and selection of gift-ish things. We’re all familiar with a gamble, we know that some are more comfortable with a gamble than others, and we know that others positively delight in the last minute sprint-and-bundle.

Exploratory Testing is in great part about discovery. If you’re looking for real surprises, it’s pretty pointless to say how long**** you think it might take you to find them. It is more rational to set limits on how long you’re going to spend looking. This is a gamble. Your budget isn’t necessarily set to somehow match the value of the stuff you’ll find, but may be rather more influenced by what you have available to let you look. If you’re comfortable with a gamble, you may be comfortable with managing ET by lobbying for a budget from the project, and working to find a great way of spending that budget for the project.

Time for a couple of examples: “We want to spend 40 hours in the first week after delivery looking for trouble” is a gamble. “We’ll need someone for three days to prepare the exploratory environments, data, tools and ideas” is an investment in a known deliverable. These aren’t opposites. You will have goals for both. You can schedule both. Nonetheless, some test managers refuse to take gambles to their project managers.

This is not always because the project manager is genuinely uncomfortable with a gamble. Testing is a Wicked Problem, and no one thanks you for dropping a Wicked Problem into their basket of responsibilities. However, many project managers of my acquaintance are rather good gamblers, instinctively and analytically weighing up risk and return. Their management talents extend well beyond the business of juggling durations and dependencies. If you’re comfortable with a gamble, candid about the realities of ET and convincing about your skills, you may well see the PM’s eyes light up. The game is on. You’ll get some proportion of what you’ve asked for, and you’ll go looking for problems.

Of course, managing ET doesn’t end here. But – crucially – this is where it can start.


* or whatever you call it in your tribe.
** although some years I have good reason to send New Year cards.
*** and from those who are remote and unfamiliar, come to that.
**** I’m using long and budget here to mean the aggregate of time, money, people and so on. I don’t simply mean time or money. And we’re all aware that there isn’t a simple equation to switch back and forth between money and people. P ≠ mc2

Wednesday, December 21, 2011

Uncommon ways of managing ET #02 - Kanban

tl;dr – Can Kanban work for ET?

Kanban is a way of managing inventory* – and by making that management visually clear, of helping workers arrive at improvements in the flow of resources. Kanban doesn’t look like a natural fit with testing: It is rather a stretch to say that test teams make things out of stuff in the way that Toyota makes cars out of steel. More to the point perhaps, testing’s inventory problem is sorting, not storage; it’s easy to find vast numbers of things to test, and simple to think of many ways to test them, but hard to find the right tests right now.

Then there’s ‘Kanban in Software Development’**, which is related, but different***, and describes a way to manage not inventories, but software development work in progress. It’s interesting to read Chris McMahon and Matt Heuser’s take on Kanban.

Either way, Kanban helps to visualise flow and to discover how that flow interacts with the capacity to work. As such, I imagine that it might be a reasonable fit with some of the logistics of managing exploratory testing. Perhaps by giving a snapshot of what the exploratory testers are paying attention to (and what they’re not) it might not only intrigue people across the team but also show up process problems that are ripe for fixing.

This isn’t a note about how to fit in with Kanban-driven software development, but a note about how I would use it as a tool within the test team. Also, I’m doubtful about Kanban as a way of managing work in general, and I wouldn’t use it to manage all the work in a test team. So let me give context to the situation in which I think Kanban could be a handy to people managing exploratory testing:
  • You’re already working with charters (from session-based testing or something similar).
  • Your project has budgeted enough effort for ET to make it worthwhile managing the flow of the thing****.
  • You feel the need to visualise and tweak your flow.


Here’s how I would use it:

Set up a chunk of available and visible wall as your Kanban board. Split this up into four columns. A great big fat one on the left for ideas that need to be touched on in the foreseeable***** future. Next right, a skinny column for what you might hope to do today, then a skinnier one that will show the exploratory testing going on right now. Finish up on the far right with a fat one for ideas that don’t need to be considered again in the foreseeable future. You’re going to fill the space with sticky notes. The sticky notes will be moved from left to right. At a glance, anyone in range will be able to see what’s left to do today, what’s being done, what’s been done, and whether testing is going on right now.

Sticky notes start out in the far left column. There will be lots here, probably rather more than the team might be able to test in the available time. Each one will represent a charter that you’re happy to spend a chunk of time on; you’ll write the charter on the note. I think it’s a good idea to put the originator’s name on the charter, so people know who to ask about its history. You’ll also want to represent the time****** you’re giving it, either by note size or with a number.

As a collective, fill up the ‘today’ column with notes. Kanban is a tool to help visualise work, so if you’ve decided that today the team will spend 10 hours exploring but you’ve got 18 hours of charters lined up, it will be obvious that you’ll need to iterate until sanity prevails.

The ‘in progress’ column is to help the team visually manage the flow of work. If you see people as the limiting element of your capacity (ie one person can only do one charter at a time*******), and you’ve got two people testing today, you’ll split the ‘in progress’ column into halves. You’ll give the halves the names of your testers. To give you a sense of today’s capacity, you might even block out chunks so that there is only space for two stickynotes in the column. The two spaces start out empty. When someone starts testing, they move the related stickynote into the ‘in progress’ column.

If that someone was me, I would write my start time and hoped-for end time on the stickynote before I stuck it back onto the Kanban board. Then I would explore, using the charter to direct my testing, within the timebox I had set myself. While testing, I would be very likely to generate more test ideas********. I’d deal with some of these the session, but some would need to become charters themselves. I’ll keep track of these on new stickynotes. When I finished my session, I would move the stickynote out of the space representing me and into the far right hand column, leaving the space empty for a new stickynote.

I would put any new charters on stickynotes into the great mass of notes in the far left hand column. I might even re-jig the work for today, if one of my new charters was more urgent than something else we’d planned. Then, assuming I had more time to explore, I’d move another stickynote from the ‘today’ column into my ‘in progress’ space, and get on with stuff.


That’s the basics. Let’s go one iteration on, and consider some wrinkles.

There’s going to be a surfeit of stickynotes in the left hand column. Too may ideas, and too much to do, is the nature of the testing beast, and I think it’s desirable to show this truth. Having the notes physically available means it’s easy to rearrange them. I suggest that the rearranging happens all the time, by anyone. If activity is dependent on something not-yet-delivered, I’d like to see the stickynotes grouped somehow – perhaps on a sheet that is itself stuck on the the board. If some activity is likely to be done soon, I’d like to reposition its stickynotes on the right of the column, ready to jump into the next day’ work. I’d encourage the team to bubble-sort vertically; to adjust pairs of vertically-adjacent notes from time to time so that more important ones rise. I’d like us to explicitly mark off a ‘pit of pointlessness’ at the bottom of the column containing all the stickynotes that represent things we can’t do*********, won’t do or just don’t want to do.

Over the day’s work, I want to see the number of stickynotes reduce in the ‘today’ column reduce, and the increase in the ‘done’ column. I’d like a second pit of pointlessness in the ‘done’ column for any notes representing a session that went bad. I would want to organise the notes in the ‘done’ column so that I could see, day by day, when something was done. You might want a different organisation. We would talk about it, and the board would have bought out a useful discussion.

The capacity element of this Kanban board only really applies in the ‘today’ and the ‘in progress’ columns. I’ve assumed above that the capacity for ‘today’ (or whatever period you use) is in hours, and having one hour represented by a note of given size might help understand how much time is needed, and has been spent. I’m less comfortable with the capacity of the ‘in progress’ column being named individuals – I’m well aware that an empty slot looks like someone’s not working, and I’m also keen that people can explore together and at times of their choosing. I think that I would prefer to work towards capacity in terms of Test Lab resources; clean data, single links to stubbed-out systems, hand-held devices, or whatever causes our primary bottleneck. Again, that’s something for a self-organising team to sort out for itself.

Frankly, I don’t know what to do about activities and time taken logging my bugs and stats and reports, or how to mark a brief debrief. I’ve worked in teams that have included and excluded plenty of activities from their charters, and I’d suggest consistency of approach within a group is more important the approach itself. Instinct suggests to me that this if board is only for visualising exploratory testing work in progress, that I include time spent doing diagnosis for bug logging and exclude the rest.


No huge surprises here, I hope – but let’s remember that one reason to use Kanban is to optimise away the need for Kanban. In the article referenced in **, Jeffery Liker was quoted in The Toyota Way: “Kanban is something you strive to get rid of, not to be proud of”. The approach I’ve described above should be seen as diagnostic tool rather than a solution to a scheduling problem. I expect that in use, one would see plenty of tweaks to not only to the Kanban board and its processes but – more importantly – to the actual work of managing exploratory testing. I hope that you, dear reader, will sort them out in a way that suits your team, and then will share your solutions (and your context) with the rest of us.

I’ve done bits of this from time to time, but not all of it together. If you’re interested in the ideas above, remember Elisabeth Hendrickson’s mantra: “Empirical evidence trumps speculation. Every. Single. Time.”. Some testers are already on this path, but I can’t find references to their experiences. Perhaps readers will furnish those references in the comments. I want to get to hear Adam Geras’s take on the subject, given that he’s not only lived with, but talked about “A Personal Kanban for Exploratory Testers”. I have a memory, which may be made up but feels as if it arrived in the last six weeks, of a series of pictures posted on twitter, with test activities represented as sticky notes that marched left to right across a board. I can’t find a reference to those pictures in any of my notes or bookmarks. If you recognise that as your work or the work of one of your colleagues, I’d love to hear from you, and to discover what you’ve learnt from the real world, and how badly it beats up my imagination.



* Arrived at by Toyota in the 01950s, refined into a cornerstone of the lean movement since, and now a perhaps just-past-trendy meme in the agile community. Here’s Wikipedia on Kanban. As I understand it, Kanban at Toyota describes a system of signalling that a small, local inventory is empty. It is used not only to manage the flow of components, but also to make that flow explicit, and adjustable. One reason to use Kanban is to optimise away the need for Kanban. This appeals to me. I’ve never seen this kind of Kanban in action, but it’s clearly inspired lots of people.
** see Karl Scotland’s Aspects of Kanban for text, David Anderson’s A Kanban System for Software Engineering for video. Here’s a currently poorly-cited article on Wikipedia so you don’t have to take your hands off the mouse. I have seen it in action, but never the same way twice, and you’re better off going to the sources than reading an inevitably compromised footnote like this one.
*** Tokens indicate presence, not absence. It’s about making inventory, not consuming inventory. Capacity and optimisation seem (in practice) to play second fiddle to visualisation and flow.
**** As a rule of thumb, this is more likely to be true if you’re not just concerned with what to test first, but what might be handy to test next. If you’re jamming ET into the gaps around the edges of your existing testing, I wouldn’t bother managing it with Kanban, because there’s no chance it will flow.
***** My horizon for foreseeable is pretty short. The absolute maximum might be the end of the sprint or the date of software release, and it tends to be less than three days. Your team will have a different attachment to the future. As a group, work out what your horizon for “foreseeable” will be and write it large somewhere obvious. Do change it if you need to.
****** Unless you’re working with fixed-length charters.
******* hmm
******** distractions
********* too big, too difficult, too dependent to consider in the foreseeable future. It’s not just the trivial things that are pointless.

Monday, December 19, 2011

Known ways of managing ET #02 - Bug Bash

tl;dr - Bug Bashes are rubbish.

The project gathers people together at an appointed time and place. Everybody splurges on testing for an allotted period, logs some bugs, and stops. If you need examples, see *. It’s a community thing, and there is generally a group hug / doughnut / retrospective before everyone goes back to their day jobs.

I guess one virtue of a bug bash is that it is a concentrated period of work, which may be a good thing in itself. Bug bashes can employ and popularise diversity in a group’s acceptable points of view, which is a plus in my book. You get to meet other people. And maybe a doughnut. But other than these few useful traits, it’s hard to find much that is good.

While the bug hunt room might be a fertile idea-generating ground for small groups in close physical proximity, the format means that many people head into the system for the first time, at the same time. Everyone is testing in parallel for a limited period, so there isn’t much opportunity to learn from each other, to analyse the group’s results, draw conclusions and carry on in a better way. There isn’t much opportunity to appreciate all the different approaches that are being tried, and take a new one – or, indeed, to help the group to explode in variety. There isn’t much opportunity to sling together a swift tool that drastically cuts the manual drudge and finger trouble in later work. And most people, working as novices, will follow a limited gamut of manual paths characterised by learning and exploring the application for the first time**. This could help you predict how your customers*** might interact with the product in the first few hours of use, but it’s not so good for assessing the product in other, more representative ways. A bug bash may be directionless, but that’s not to say that it is diverse.

A bug bash puts strain on available test-environment resources; licenses, batteries for devices, laptops, USB cables, un-damaged data, bandwidth, IP addresses, you name it. I’ve seen a support chap spend days getting the kit together, versioned, charged, addressed, data-filled and working before a push. Even assuming your Test Lab really can support your bashers with hands-on stuff, your back-end and infrastructural resources may not be neatly independent and you’ll end up being stymied by half the group finding the same test-environment bugs. This is great if you’re looking for test-environment or large-group bugs, but again, not so good if you’re looking for a broader or more representative set of interesting issues.

Expect lots of duplicate bugs, as different bug hunters bang into the same low-hanging fruit. Bug bashes often throw up some easily found but hitherto-unseen trouble, but let’s not be unthinkingly self-congratulatory when a third of our crew waste their time investigating, diagnosing and logging the same problem at the same time. More insidiously, duplicate bugs may mean broadly similar paths through the application. If everyone’s doing the same thing, what does that do for coverage? For exploration?

The quality of logged bugs tends to be low, the density high. The brief duration and inevitable peer pressure pushes the people in the room to value their speed to the first bug, and if they don’t get the early bugs, then, hey, there’s kudos to he who logs the most. Bugs are logged at speed, in bulk, with generally poor detail and diagnosis. Some managers are happy that their bug bash has resulted in a great wodge of trouble tickets, but remember that a bulge in the bug rate disturbs the workflow of an agile team like a turtle disturbs the digestion of an anaconda. Finally, the hysterical whoop whoop of competition not only breeds false confidence, but can break the spirit of people with their ego tied up in the code and configuration of the product.

A bug hunt allows a team to throw many people at a problem in a short period. It can appear cheap in elapsed time, while substantial in people time. Wrong. Ten people testing for an afternoon might look like a week’s worth of testing, but it is a week’s worth of testing by someone with 3-hour amnesia. I have seen bug hunts used to demonstrate someone in management’s commitment to testing their product. Diverting half the team off their usual path and into testing for a few hours certainly makes a statement, but the statement is that management is committed to theatrical gestures. Grand Guignol**** testing is a titillation, yet I’ve seen it used to substantiate the assertion that a product is fully tested. Frankly, my arse.

When might I use a bug bash? Perhaps if there was a problem reported frequently in beta testing, which was serious and urgent enough to warrant a diverse group’s concentrated attention but not well-reported-enough to act on directly. I might give the reports to a bug bash group, ask them to find out anything about the problem that isn’t already detailed in the reports, and facilitate their communication by sticking a scribe/steering person at a central and visible whiteboard, equipped with a bell. But I’d prefer to use a small team with big kit.

Getting a large group together for a short period is an expensive way of doing rubbish testing. I’d far rather spend the time and money getting the necessary people together and delivering a test environment that is up, running, connected, data-ready and swiftly-rebuildable. Or delivering a diverse and knowable set of data. Or a collection of reasonable (and less reasonable) user scenarios that stand a chance of saying something interesting and meaningful when tried on the product. Or a couple of hours so we know something about each other beyond name, age, height and title. Actually, pretty much anything is better value than a bug bash.

For a while***** it seemed like every other client wanted to throw most of their exploratory eggs into the bug bash basket. I have no idea who kicked off this ludicrous meme, but I’d still like to tweak their nose. Here’s my position:

Managers: of all the usual gambles you can make with your charges, a Bug Bash is one of the dumbest. Get someone to bring you an alternative, and consider it.

Testers: Bug Bashes might look like fun for you, but they suck for the product and the project. Don’t be fooled.

Clear enough?

* I’ve seen Scrum teams devote the whole team for a couple of hours on the 6-8th working day of a 10 day sprint. I’ve seen waterfall teams drag fifty people into the canteen on a Friday afternoon to batter away at a batch of handhelds. I’ve seen test teams commandeer the boardroom for a day at a time straight after they get the code, every time they get the code. Bet you've seen something similar. Enough examples: back to the polemic.
** Ж: “So what did you do?”
Ю: “Well, I tried logging in, and I’d not logged in before, and it went well, so I tried changing my username and resetting my password, using funny characters.”
Ж: <smacks head on desk>
*** Assuming your insiders are good substitutes for customers…
**** A horror show made up of a series of short pieces. Read Grand Guignol in Wikipedia, and think testing. Compare with Soap Opera Testing.
***** 2004-2008, or so

Saturday, December 17, 2011

Uncommon way of managing ET #01 - Scouting

tl;dr – skilled, supported, concentrated exploration

The team makes one person* the dedicated explorer for a period. This person, who we’ll call The Scout, spends all their time exploring. Their job is to find as much interesting stuff as they can. They’re supported (and watched) by others who set up environments, log bugs, keep notes, analyse data, suggest and configure tools. Pay attention: These supporting people are not part-time or less skilled; they’re just as engaged as the scout, but they’re not on point.

There are no sessions or formal session-end debriefs, but the team will want to stop and sit back from time to time and come to some conclusions about what they’ve found. The person (or people) on point are switched around regularly – scouting is fatiguing, and diversity is important. People with different specialities are used as required, and The Scout need not be a tester.

Exploration often has a sense of a frontier, a boundary between the known and unknown. The frontier is fundamental to exploration, and The Scout pushes it ever onwards. We understand, of course, that testing has really wiggly and sometimes discontiguous boundaries, and that the territory behind the boundary may not be well-known, and is likely to change unexpectedly. The team will understand this boundary better than anyone else, and will need to come to an understanding about how much they need to be able to notate and share information about the frontier.

This approach is all about discovery. It’s not cheap, nor is it exhaustive, but it is valuable. The project gambles time in return for information, so The Scout needs to know what the project is interested in. I expect there would be tussles about what The Scout would be exploring, and what they would be looking for. So much the better.

Note: This an idea. I’ve not worked (quite) like this. Maybe, though, this idea triggers something that you would like to try with your team. Let me know how you get on.

* or one group, but I’ll write in the singular to keep the grammar simple

Friday, December 16, 2011

Known way of managing ET #01 - Stealthily

tl;dr – some people hide their best work from their paymasters

A few people get together to find problems in snatched moments. There's little or no imposed direction, measuring, or task control, and rarely any sense of completeness or coverage. Although the work sometimes gets done with tacit support from one or two individuals in the upper echelons, there is little oversight and it is usually a hidden activity. Testers don’t log time or bugs through the usual channels, and it feels almost like an indulgence, a guilty pleasure.

I've been on a team who hid a pair of stealthy explorers in a corner for a few hours each week. The exploratory testers would tell the rest of the team about the bugs they’d found. Generally those bugs were 're-found' during manual scripted testing to allow them to be logged within the imposed structures of the project – and if no script might find a particular bug, we would assemble one. The customer would not countenance paying for unscripted testing, but was very impressed that we were designing such effective scripts*.

Exploratory testing becomes stealthy typically because those who control and budget for team members' time don't approve of looking for trouble. Look out for rigid 'verification and validation' contracts, consultancy contracts that only allow a small set of explicitly-approved billable activities and legal fears of explicitly-acknowledged defects.

I've seen Exploratory Testing hidden most commonly in teams that focus on user acceptance and regression testing, but I've also seen it in a self-labelled agile team that relied on a (rather sparse) set of low-level confirmatory automated tests. These teams tend to be a mix of self-identified testers and people who may be seconded into the test team or are otherwise keen to avoid the label. However, I’ve even seen stealthy approaches in test teams who were exploring with a degree of management support, but who felt that some of their approaches were beyond what might be accepted.

However nasty such hidden work looks from the outside, it's often rather well supported by individuals within the testing teams. People get the opportunity to work heroically, to subvert management decisions (especially gratifying if those decisions feel irresponsible), and sometimes to have a direct link to someone rather higher up in the tree of project status. The stealthy effort tends to get a geekily-sexy label.

When I meet experienced exploratory testers who have carved themselves a niche in some monolithic institution, they're often proud to be stealthy, and sometimes unhappy to share their approaches. Sometimes their reticence is justified – in groups which insist they don't do ET, acknowledging that you're an the ET specialist doesn't necessarily improve your day.

It’s worth mentioning that some companies consciously take a stealthy approach to discovery work so that they have plausible deniability, for instance while finding bugs to get a company out of a contract, or finding bugs that no one who could be legally-liable should know about. Such activity will challenge your ethics. Call time on these if you must – and sometimes, you must – but be aware that you may be shouting at the waves.


* This was in the early nineties. Don’t think I would put up with it now – but don’t think that the practice has ended, either.

Thursday, December 15, 2011

There are Plenty of Ways to Manage Exploratory Testing

tl; dr - lots of different ways to manage ET

The key problem that exploratory testing faces, as a viable discipline, is how it is managed. Of course, there are other well-covered interesting areas - the question of whether to do it at all has been debated to death* amongst us pundits (if not with as much fervour in industry), and if you're want to know how to do it, there is a slew of excellent ideas, techniques, disciplines and tricks to choose from**. However, the hairiest problems in actually doing it come from how people organise the work, and how the work and its owning organisation adjust to fit***.

Over the next couple of weeks, I'll post a short series here, snappily entitled "Ten Known Ways to Manage Exploratory Testing" and "Ten Uncommon Ways to Manage Exploratory Testing"****.

Here's a kickoff showing roughly where I'll go:

Ten Known Ways to Manage Exploratory TestingTen Uncommon Ways to Manage Exploratory Testing
  • Stealth Job
  • Traditional Retread
  • Off-Piste (Iron Script)
  • Off-Piste (Marshmallow Script)
  • Bug Hunt
  • Set Aside Time
  • Gambling
  • Script-Substitute
  • Session-Based Test Management (James & Jon Bach, me, others)
  • Questioning (Jon Bach)
  • Thread-Based (James and Jon Bach)
  • Touring (James Whittaker and others)
  • Don't bother (thanks to Dave Liebreich for reminding me...)
  • Scouting
  • Kanban
  • Following Lenfle
  • Daily News
  • R&D
  • Testing Guru
  • Video Reports
  • Post-Partum Labelling
  • The Summariser
  • GPS
  • Cloudy
  • The Inquiring Metricator

I'll fill you in on what I***** mean by each of these over the next few weeks. Expect about one a day, in no particular order.

And by the way: I'm posting this because it's good stuff, and you're going to find it useful. I'm posting it now because I've got a course in January that I want you to know about. That's January 25-27, in Oxford. A two-day workshop on exploratory testing techniques, followed by one on managing exploratory testing. Book here.

Note: If you're in Scandinavia, I've got one in Copenhagen on 6-8 March through the Morten Hougaard's Pretty Good Testing. Details here.


* And has degenerated as everyone professes to agree with each other's aims while insisting the philosophy's all wrong. Consultants, eh? Welcome to my world.
** Key sources for me****** - both Bachs, Bolton, Carvalho, Edgren, van Eeden, everybody I've ever tested with, Green, Kaner, Hendrikson, Harty, Itkonen, LEWT, me, Richardson, Sabourin
, Weinberg, Whittaker. Alphabetical order. A l p h a b e t i c a l. No preference implied. Some are sources for stuff I try not to do...
*** Don't get me wrong – plenty has been written about this, too, over many years. Here's some more.
**** Sorry about the terrible titles. Ten-fer lists wind me up, get me down, piss me off and a whole other bunch of phrasal verbs. But them's the titles. No, I'm not going with The Twelve Days Of Testmas, and yes, obviously there are more than ten of each... I'm not claiming these lists are exhaustive, nor that the items are exclusive. I'll write this up properly once I'm done serialising.
***** You can probably guess some, or most. Sweepstake?
****** Did I miss you out? Apologies. It's a blog posting – half-baked by nature. Email me, and if I forgot you, I'll add you to my list.