Lab 3 Exploratory Testing
Lab 3 Exploratory Testing
Submissions:
test session transcripts, along with your modifications to your charter between test sessions. For each black-
box machine, conclude with your description of the behavior. Finally, include a short reflection on whether
you believe your changes helped you test faster or more productively.
Introduction
Exploratory testing is intended to be used when we need to test software where the documentation and
specifications are not the only things of interest, but we are rather interested in details about what the
software actually does. Humans are very well suited for the creative, intellectually rigorous exploration of
software. When exploring, we may want to figure out how it should work, or figure out ways in which it
may not work. In this sense, testing is an integral part of achieving a better understanding of the product,
and indeed the problem the product itself is supposed to solve.
Preparations
Read an introductory paper on exploratory testing by Jonathan Bach, to understand what exploratory
testing means, and how to use sessions when exploring software. Create a session report structure to record
the information on the tests executed: inputs, expected outputs, actual output, observations, and any
additional information you might find useful.
Choose two of the Black box machines created by James Lyndsay that you would like to explore. For each
machine, create an exploratory testing charter similar to the examples. It should be detailed enough that it
gives you some guidance in testing. You may need one charter in total, or one charter per machine, up to
you. However, there should be a clear relationship between the charter and your test activities.
Task
Given the charter, you are to engage in session-based testing of the product to find out how it works.
You may need to revise your initial assumptions and iteratively refine your work, but that is part of the
process and expected. As you move from one blackbox machine to the next, try to find faster exploration
heuristics and detecting how the machines work and note how you plan to explore them faster than the
previous iteration. Develop new charters as you go along, if needed.