“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.” – Snippet from James Bach’s article on Exploratory Testing which can be found at http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=2255
Exploratory testing (ET) is a very powerful way of finding defects fast but can it really replace scripted testing? For some companies exploratory testing is the only type of testing performed but for most companies a mix of scripted, automated and exploratory is a good place to be. In my experience stepping off the test case track and exploring the software often generates a significant number of defects. If ET is performed in a controlled way there is no reason why this should not form part of your test strategy and plan.
So what is exploratory testing?
Exploratory testing is:
- “Any testing to the extent that the tester actively controls the design of the tests as those tests are performed and uses information gained while testing to design new and better tests.” state Cem Kaner and Andy Tinkham in their joint publication about exploratory testing (click here to view the PDF document).
- A controlled way of exploring a small concentrated section of the application under test .
- An audited and recorded way of testing.
- Repeatable, reportable and traceable.
- A valid testing technique used with exceptional success.
- Something most testers will have performed in the past whether knowingly or not.
- A technique only experienced testers should be performing if exploratory is used as a main form of testing (experience can be defined as having product knowledge, domain knowledge, hardware knowledge, testing technique experience) .
Exploratory testing is not:
- Random exploration of the software under test with no agenda or charter. (this is more commonly known as ad-hoc testing)
- A way of pretending to test and doing nothing all day.
- A task that should be carried out by junior or inexperienced testers.
- A new concept or buzzword. ET has been around for a very long time as a concept, it is only recently that people have started to appreciate the power of it.
- Exploring to write test cases to replace design, specification or requirements documentation. Writing tests whilst testing is never ideal if there are no other supporting documents to reference. How can a tester be sure the feature is working correctly with no reference? ET assumes a reference exists to how the solution should work (spec, email, requirements doc) – it just happens no script has been produced in advance which limits the testing path.
When and where could it be used?
Exploratory testing can be used on any project at any time but lends itself more to agile or iterative projects where requirements and features may be rapidly changing. Saying that though, making use of say one day a week for ET will be very valuable even in traditional waterfall models. Some projects may require test artifacts to be provided in which case it may not be suitable to use ET. Other projects may have no experienced testers available in which case scripted testing may be the most effective use of test resource.
With the rise of agile methodologies and on projects where requirements can be fluid, ET can often be the most effective form of testing. Re-writing test cases when designs change, scripting up front when there are little or no details available and not knowing which tests you can/cannot run in which order are all reasons to look at exploratory testing as an effective test approach.
A good way of knowing when to use exploratory testing is for the tester to jot down potential areas to investigate and then on a given day spend a given time exploring that area. An experienced tester will find many areas which, when exploratory testing is exercised, will show many more defects than a pre-scripted test will find. The key point here is to spend a ‘given’ amount of time on the area. If no defects are found then move on.
How can we report on exploratory testing?
Repeatable, accountable and traceable exploratory tests are often overlooked and this is where the lines between ET and Ad-Hoc testing can cross. There must be a charter (aim) of the test, a dedicated time slot and a dedicated tester – the rest of the information gathered at the time is open for debate.
Simple approaches of recording test steps in a text editor or spreadsheet offer the repeatable tests, but only if all information is carefully recorded by the tester.
A wonderful tool that makes use of this text based technique but adds on reportable and accountable ways of analyzing the results is a session based testing tool from Jonathon and James Bach. Click here to go to the Satisfice website. Results from the testing can be linked to a requirement/area and then reported on.
However, the most effective way I have found over the last few years when testing websites is to use one of the many web capture (record and playback) tools available like Selenium. Recording your exploratory session using a tool such as this allows repeated testing (where the software under test allows) but more importantly provides a full script of what was tested, in what order, with what data and what the outcomes were. Any errors encountered are recorded in the test and any other notes can be inserted as comments.
For more information on Exploratory Testing check out the following resources:
http://www.kaner.com/pdfs/ExploringExploratoryTesting.pdf – PDF document
http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=2255
http://www.informit.com/articles/article.aspx?p=405514
http://www.satisfice.com/
http://selenium.openqa.org/