Now that we know exploratory testing elements let us see what five tasks in exploratory testing are. We list five exploratory testing tasks based on General Functionality and Stability Test Procedure [Bach]. This is a part of the Exploratory Testing Pathway. Many thanks to Marcel who sublimed this great resource on his blog, That’s the buffet table.
As part of breaking the myth that exploratory testing does not have a structure, we list five tasks in exploratory testing:
- Product purpose
- Product functions
- Areas of potential instability
- Test each function and record problems
- Design and record a consistency verification test (smoke test)
To test something, you first need to know what is the purpose of a product. For example, as at first, it could seem that throwing a kitchen chair from a rooftop of the ten-story building could be exploratory testing, this is not the case because the purpose of the chair is not to be thrown from the roof of a ten-story building. A more real-world example is opening a ten-gigabit file with Notepad. This is not the purpose of Notepad, so this is wasteful testing. Remember, your testing resources are limited.
You first need to find out product purpose in an exploratory manner. For that, you can use various sources:
- A developer
- Marketing person
- Requirements document
- Previous test plan
- Comparable product.
The product purpose statement consists of a verb, noun, and subject. The purpose of Windows Notepad (noun) is to open (verb) my weekly todo notes file (subject).
Once you know real product purpose, you are ready to explore product functions that fulfill that purpose. As a software tester, you need to be able to describe product function. If product purpose is to make exploratory session testing notes, then there must be a function that enables you, with clear input and outputs, to add exploratory session notes with all note attributes. Function interacts with the product environment and manipulates data. In exploratory notes, for example, data is a note (text, note type, and possible screenshot), and the environment is an application database and user interface (or REST API).
Each product has a primary and supporting functions. For example, saving note is a primary function, while storing note screenshot in S3 storage is a contributing function. There is also a hidden function. If we automatically crop the screenshot to a supported resolution to save storage space, this is a hidden function (there is no visible UI option to use that feature.)
You could also determine what essential functions are. For that, you would need to consult some authority source, do not use just your judgment.
Keep in mind what is your testing mission. For example, all primary and supporting functions are stable, or identified risk with using essential functions must be minimal. Remember that you will not have time to test all functions. It is a tester’s responsibility to note what was skipped. You note your testing result in function/stability matrix where you note pass/fail results.
Developers’ test coverage metrics could be a percentage of covered line statements, branches, loops, and os signals. Testers’ coverage could be the percentage of tested functions, data, or hidden data. With a testing mission and test design context, it is relatively easy to determine test coverage.
Oracles help us to know what program is supposed to do and to decide if the test passed or failed. The beauty of context-driven testing is that oracles could be wrong 🙂 Your responsibility is not to misuse this fact to hide your inadequate testing. For example, consistency oracle heuristics teaches us to compare products with comparable products, product purpose, other parts of the same product, and product history.
Exploratory testing is not a sequence of exploratory testing tasks. In skillful exploratory testing, you move back and forward between those tasks.
In the task sheet, you document your testing:
- describe your testing mission
- what oracles did you use
- results of test activities
- how you decided that you are done
- F.A.Q sections
Test Manager Role
You discuss your task sheet with your test manager.
You must be able to do exploratory testing tasks under time pressure. What to skip? What to do with hard tasks? Should you do them first or last? Should you move on if you are stuck? Make a pause and go through your notes.
Exploratory testing, when done by the skilled tester, is a structured activity. Your freedom is with five exploratory tasks where you do actual exploration.