TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPass
Home  >  Detail: What Is Exploratory Testing?



A StickyMinds.com Original
Article Picture
What Is Exploratory Testing?
And How It Differs from Scripted Testing

By James Bach

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: Exploratory software testing is a powerful and fun approach to testing. In some situations, it can be orders of magnitude more productive than scripted testing. I haven’t found a tester yet who didn’t, at least unconsciously, perform exploratory testing at one time or another. Yet few of us study this approach, and it doesn’t get much respect in our field. It’s high time we stop the denial, and publicly recognize the exploratory approach for what it is: scientific thinking in real time. Friends, that’s a good thing.


HP Software
Concurrent Test Design and Execution 
The plainest definition of exploratory testing is test design and test execution at the same time. This is the opposite of scripted testing (predefined test procedures, whether manual or automated). Exploratory tests, unlike scripted tests, are not defined in advance and carried out precisely according to plan. This may sound like a straightforward distinction, but in practice it’s murky. That’s because “defined” is a spectrum. Even an otherwise elaborately defined test procedure will leave many interesting details (such as how quickly to type on the keyboard, or what kinds of behavior to recognize as a failure) to the discretion of the tester. Conversely, even a free-form exploratory test session will involve tacit constraints or mandates about what parts of the product to test, or what strategies to use. A good exploratory tester will write down test ideas and use them in later test cycles. Such notes sometimes look a lot like test scripts, even if they aren’t.  
 
Exploratory testing is sometimes confused with “ad hoc” testing. Ad hoc testing normally refers to a process of improvised, impromptu bug searching. By definition, anyone can do ad hoc testing. The term “exploratory testing”--coined by Cem Kaner, in Testing Computer Software--refers to a sophisticated, thoughtful approach to ad hoc testing. In the last decade, James Whittaker (at Florida Tech), Cem Kaner, and I have worked to identify the skills and techniques of excellent exploratory testing. For one example of a fully defined and articulated process of exploratory testing, see the General Functionality and Stability Test Procedure for Microsoft’s Windows 2000 Compatibility Certification program. This document is publicly available on Microsoft’s Web site, or on my site at http://www.satisfice.com/tools/procedure.pdf
 
Balancing Exploratory Testing with Scripted Testing 
To the extent that the next test we do is influenced by the result of the last test we did, we are doing exploratory testing. We become more exploratory when we can’t tell what tests should be run, in advance of the test cycle, or when we haven’t yet had the opportunity to create those tests. If we are running scripted tests, and new information comes to light that suggests a better test strategy, we may switch to an exploratory mode (as in the case of discovering a new failure that requires investigation). Conversely, we take a more scripted approach when there is little uncertainty about how we want to test, when new tests are relatively unimportant, when the need for efficiency and reliability in executing those tests is worth the effort of scripting, and when we are prepared to pay the cost of documenting and maintaining tests. 
 
The results of exploratory testing aren’t necessarily radically different from those of scripted testing, and the two approaches to testing are fully compatible. Companies such as Nortel and Microsoft commonly use both approaches on the same project. Still there are many important differences between the two approaches. 
 
Why Do Exploratory Testing? 
Recurring themes in the management of an effective exploratory test cycle are tester, test strategy, test reporting, and test mission. The scripted approach to testing attempts to mechanize the test process by taking test ideas out of a test designer’s head and putting them on paper. There’s a lot of value in that way of testing. But exploratory testers take the view that writing down test scripts and following them tends to disrupt the intellectual processes that make testers able to find important problems quickly.  
 
The more we can make testing intellectually rich and fluid, the more likely we will hit upon the right tests at the right time. That’s where the power of exploratory testing comes in: the richness of this process is only limited by the breadth and depth of our imagination and our emerging insights into the nature of the product under test. In the rapid testing classes at Satisfice, Inc., we have equipment that watches testers invent tests in real-time. When the instructor makes a new suggestion for what to test, or provides new information to the testers about the product, we observe and measure how a roomful of exploratory testers reacts to that information. Free from the encumbrance of predocumentation, they immediately incorporate new ideas into their tests.  
 
Scripting has its place. I can imagine testing situations where efficiency and repeatability are so important that we should script or automate them; for example, in the case where a test platform is only intermittently available, such as a client-server project where there are only a few configured servers available and they must be shared by testing and development. The logistics of such a situation may dictate that we script tests carefully in advance to get the most out of every second of limited test execution time. 
 
Exploratory testing is especially useful in complex testing situations, when little is known about the product, or as part of preparing a set of scripted tests. The basic rule is this: exploratory testing is called for any time the next test you should perform is not obvious, or when you want to go beyond the obvious. In my experience, that’s most of the time.


About the Author
James Bach is the founder of Satisfice, Inc., a test training and consulting company. A pioneer in the emerging disciplines of Good Enough quality and exploratory testing, James specializes in expert testing under chaotic conditions. He can be reached at james@satisfice.com.

Back to Top
 

StickyMinds.com Weekly Column From 01/29/01 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Vijay hatewar 9/1/2006

I believe Exploratory Testing is always done with the intent of understanding the functionality of the application . For a new Test Engineer joining the team , this way of doing Testing might be a help . But I doubt if this can be adopted as serious approach for finding defects in the application .

I have heard from my manager that Exploratory testing is nothing but a sophisticated ad-hoc testing. But I would like to know from you Sir , if this is correct approach .

Because I believe Ad-hoc...Read On

Author's Response:
9/1/2006    
I'm afraid your beliefs about exploratory testing don't seem to be consistent with those of the people who coined the term and have developed the practice. Consider reading the various articles and class materials at my website (www.satisfice.com). Not only can it be adopted as a serious way of finding bugs, I have adopted it as such. Of course it is serious. Why would learning, test design, and test execution not be serious simply because they happen concurrently?



I prefer not to use the term "ad hoc" testing. Exploratory testing is the term I use for test design combined with test execution.

 
 
Comment:    
by Muralidhar Rayapeddi 2/13/2006

This article started off with a description that, "Exploratory testing helps testers find problems when a software product is running at full capacity" and how "exploratory approach to load testing gives quick results without making a big tool investment". I could not gather from the article how a big tool investment can be avoided. I think exploratory approach only describes how best we can test a software product and not necassirly avoids build a tool to test the software product. I work in a telecommunication domain where we do performance testing of our product to make sure, the product handles the high call load. For...Read On

Author's Response:
2/13/2006    
I think you are referring to a different article. I didn't say these things.

 
 
Comment:    
by Rajeshwar Singh 5/4/2005

Is Exploratory Testing same as Adhoc Testing ?

Author's Response:
5/4/2005    
That depends on what you mean by "ad hoc" testing. If by that you mean sloppy and thoughtless testing, then yes, ad hoc testing is equivalent to exporatory testing done badly, but not equivalent to exploratory testing done well.

 
 
Comment:    
by Nate Moses 4/30/2003

I just finished James Whittaker's book on 'How to Break Software' where he explains how to methodically conduct this kind of testing. I would recommend it to anyone who does exploratory testing and to anyone who writes scripts for testing.

 
 
Comment:    
by pankaj koul 4/14/2003

Every one does the Exploratory Testing either at Developing Phase or During Testing Phase. But What striked me is that no one had an idea the this type of testing is called as 'Exploratory Testing'. So, when ever any one is is doing out of script tests, product of his own mind Remember you are doing 'Exploratory Testing'... Ya 'Exploratory Testing'.. Liked this Procedural description of On The Fly Testing The Exploratory Testing..... Pankaj Koul

Author's Response:
5/4/2005    
We ALL do exploratory testing. The important thing is learning to do it well.

 
 
Comment:    
by Bharathi T 4/14/2003

Exploratory Testing is a wonderful approach in the present day trend , I have a query how much effective would be this kinda approach during automation of the application ? Is it possible to implement this approach for automation ?

Author's Response:
5/4/2005    
I approach my test automation in an exploratory way. A great example of exploratory test automation is the Mars Rover. Notice that Mars is being explored entirely by a machine-- but it's a machine, a test tool if you will, that is guided by an exploratory thought process back here on Earth.

 
 
Comment:    
by Xuemei Geng 3/24/2003

The feeling of doing Exploratory Testing is wonderful...ideas dance at every cornor of your brain. I'm just wondering if we need any research on it. Maybe intuition and imagination play it all.

Author's Response:
5/4/2005    
There's interesting research on exploratory testing, but don't expect tosee it in computer science journals. Computer scientists are not qualified to study exploratory testing, because to study ET is to study how people think: cognitive psychology. The most interesting experiment I've seen published is in a paper by Herbert Simon called "Collaborative Discovery in a Scientific Domain" published in Cognitive Science.

 
 
Comment:    
by Joan Walsh 1/21/2003

What proportion of your test budget to allow to exploratory testing? Good test analysis & design remain critical to an effective test strategy. If you are testing a large & complex system, then you'll never have the time or resources to completely test the system systematically and you'll have to rely to a large extent on the success of the design validation activities earlier in the lifecycle to keep the error count down before you even start testing. Because you won't be able to go systematically through all the combinations of functionality (etc.) you are going to have to plane your systematic tests to hit the biggest risk areas (a.Read On

Author's Response:
5/4/2005    
Nearly all testing is exploratory to some degree, so it's not very helpful to ask how much of it to do as a proportion of all testing. What's more helpful is to examine the benefits of becoming more exploratory or more scripted in your test strategy. Learn to see the elements of scripting (pre-existing ideas) or exploring (ideas emerging in the course of testing) mixing together. Then ask yourself what you need to do in order to achieve your testing mission.

 
 
Comment:    
by Gary Nesbitt 1/20/2003

This IS fun. Most of my testing experience over the last three years comes from being roughly introduced to an application after which I was expected to find the problems. No meaningful requirements of design docs were provided. I used exploratory testing and my imagination to determine what I thought the application should do and then wrote up what I considered errors. The response from developers pretty well told me if they considered my finding a requirement or a dream. We work in an era when many companies buy other companies who bought other companies. By the time the second or third generation owners look at what they have they...Read On

 
 
Comment:    
by Paul Hepplestall 11/20/2002

Excellent article and I agree with the otehr comments that this is what makes testing fun, however I am concerned that like scripted testing ET is coming under increasing pressure of time constaints in the test phase of projects in the rush to deliver. One thing I have found from experience is that that testing is being squeezed into such tight deadlines that the chance to do ET is disappearing along with some of the nice to have scripted tests. I wonder if the author has any evidence of the effectiveness of ET in defect detection rates that might be of use?

 
 
Comment:    
by praveen anand 11/19/2002

Exploratory testing is not having any preset path of testing.I am using this testing approch since 1996.

Author's Response:
5/4/2005    
I would say that pure exploratory testing, which I like to call freestyle testing, has no preset path. But you can still have exploratory testing even if you preset some aspects of your path.

 
 
Comment:    
by Cordell Vail 10/31/2002

I guess I am a little late reading this article. I think Microsoft calls this "SMOKE TESTING". I always do it. I have often found unexpected bugs just poking around trying to break things. Because testers have more of a user approach than developers, often exploratory testing can turn up things that are broken from doing things in other than the normal way, that would not have thought to have been broken by changesm especially race conditions. As I have always said, my parents spanked me when I was little for breaking things, now they pay me to do it. I love exploratory testing. It is like unrestricted testing with no rules to...Read On

 
 
Comment:    
by Nagendra Srinivas 4/11/2002

Excellent . The Author takes the reader smoothly thru the introductory phase and then explains quite in detail. Expecting more of such publishings.

 
 
Comment:    
by Alistair Gray 9/6/2001

This is a first class, honest article that confirms how we all break the traditional 'mold' of documenting everything we are about to do and how in reality we very often document what we have done pretending that it is written in advance and by chance this test has discovered the defect!. It is a good article as it does not only explain about ET, it also emphasises the importance of writing exactly what happened to find the defect, ie reverse writing a test script. This documentation is crucial. Not too happy with the attitude of the project manager in the article because as far as I am concerned any route to finding defects is worth serious...Read On

 
 
Comment:    
by Jim Smith 4/9/2001

I too, have done plenty of exploratory testing and have discovered some very obscure bugs that I am sure I would not otherwise have discovered. I use the term ‘directed interactive’ testing, because I usually do it after I have identified weak areas of the system and so I direct my probing tests at suspect areas. It is interactive because I use the SUT in a freewheeling way, that I feel let’s me get closer to the software, than formal testing does. The term also seems more acceptable than ‘exploratory’. (Don't use the term 'ad hoc', because that really upsets people) I announce that I am undertaking ‘directed interactive’ testing after...Read On

 
 
Comment:    
by Robert Card 1/31/2001

Exploratory testing is where some of our bread and butter resides. I always ensure that I have time placed into the schedule to do some exploratory testing. I like to start with an application running and then do the Key Board Sit to see what happens and then let my imagination run, .....What would I do if I were the worst user of this application??????

 
 
Comment:    
by Rachel Harvey-Young 1/31/2001

I usually try to keep a brief record of what I have tried to do during this kind of testing - in effect I reverse write a script. Storing these notes with the other scripts gives you something to refer to if the question arises. So far, most opposition I have encountered is from a Project Manager who announced that if it wasn't in a script it couldn't be classed as a fault. The reverse written script proved very useful with the next release!

 
 
Comment:    
by Tracy Benton 1/30/2001

I like exploratory testing too, and I find a lot of bugs that way. But the place where it harms you rather than helps you is when a bug is found later, and somebody wants to know, "Did you try X? We want to know if it was broken in that build." With exploratory testing, I might have done X, but with no or little documentation, I often can't remember. That's very frustrating.

 
 
Comment:    
by Andrew Wetmore 1/30/2001

For me, scripted testing is like the pre-flight checklist the crew goes through before they start the engines--it forces me to attend to all those tedious details of button behavior, link validity, form transmission that I might skip over on the theory that "they were okay in the last build: what can have happened since then?" The real, juicy testing happens after I get to put the checklist clipboard aside, rev up, and see what this baby can do. After all, we EXPECT the code to pass our scripts: that's why we share them with the programmers and tell them what our standards of acceptance are. In exploratory testing, I get to be The...Read On

 
 
Comment:    
by yogita sahoo 1/30/2001

Its true that most testers unconciously do this testing and oftentimes find it more helpful than other conventional methods of testing.But can we get others to agree on such an unplanned process ???

 
 
Comment:    
by Ian Henzel 1/29/2001

I too am happy to see a name associated with this type of testing. I have often found that some of the most valuable defects found was during this sort of testing, when the tester verged off the script and examine related fuctional paths.

 
 
Comment:    
by Kevin Gabbert 1/29/2001

I've been doing this sort of Exploratory testing for some time now- but it's always a fight to get anyone to recognize what I'm doing. It does not fit into the usual definition of testing well, so it's often regarded as just screwing around. And yet I always find more bugs this way. It's no replacement for scripted testing, but it is a very valuable tool.

 
 
Comment:    
by Helen Rowe 1/29/2001

Good to see a name for the sort of testing that many good testers have been doing for years. I would also be interested in identification of what characteristics makes a good 'exploratory tester' - not everyone can do it!

 
Back to Top


Marketplace

Web based bug tracking - AdminiTrack.com
AdminiTrack offers an effective web-based bug tracking system designed for professional software development teams.

BugSplat - Automatic Crash Analysis
Fast online exception analysis. Capture customer crash data online.

Six Sigma Certification
100% Online-Six Sigma Certificate from Villanova - Find Out More Now.

Need Agile Test Cases?
Create statistically complete test cases simply and quickly.

Check Out IT Certification Preparation Materials
Sign Up With SkillSoft & Get Access to Training Materials for Over 50 Professional Certifications.

Get your product or service listed here.
Subscribe to Better Software Magazine
Subscribe to Better Software Magazine

First Name:

Last Name:

Email Address:


Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2008 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


Software Quality Engineering

Telelogic North America



STARWEST 2008

 
Agile Development Conference 2008