%%
date:: [[2023-02-22]], [[2023-02-23]]
%%
# [[Exploratory testing]]
Exploratory testing is an approach to [[Software Testing]] that involves the use of [[Play]] to identify defects in a more creative and intuitive way. It is in contrast to other more traditional methods of testing that are more procedural.
## Goals of exploratory testing
- To improve application quality by finding defects.
- To understand the broader context, use cases, and [[Affordances]] of an application.
- To share knowledge about the application among a team. [^marie]
- To lower the risk of shipping code.
## Benefits of exploratory testing
- It utilises a tester's [[Fast Thinking]], industry experience, and intuition to find defects.
- It improves test coverage by allowing testers to stray from the [[Happy path]], even though [[Exhaustive testing is impossible and impractical]].
- It can be faster to implement, which means it can also be done earlier.
- It adds a touch of realism that scripted test cases sometimes fail to take into consideration.
- It can break testers out of cognitive ruts that result from the [[Beware of the pesticide paradox|Pesticide paradox]].
- It encourages [[Good testing is context-dependent and risk-based|Risk-based testing]] by directing test effort on high-risk areas.
## Techniques for exploratory testing
- [[Timeboxing]] or session-based testing: Time-delimited use of the application with recordings (written, visual, or video).
- Testing tours: Stepping through a certain flow with a defined start and end but leaving the journey unplanned.
- [[Mental models]] or heuristics: Using known cognitive shortcuts to engage [[Fast Thinking]] when testing.
- [[Mind maps]]: Creating a diagram of the application to better understand it in context.
- [[Pair programming]] or testing: Using the [[Rubber Duck Method]] to talk through an application with someone else.
- [[Roleplaying|Roleplaying]]: Assign user personas and use the application accordingly.
- [[The Six Performance Testing Hats]]
- [[Randomness as a creative reboot]]: Compile a list of random tables or cards of related elements that might spark your imagination.
- [[Bottom-up approach]] and [[sources/Book/Emergence|Emergence]]: What if we could write scripts that respond in unpredictable ways? [[Chaos Engineering]] could help us with this.
## Test heuristics
- [Test Heuristics Cheat Sheet](https://www.ministryoftesting.com/articles/ab1cd85c) [^mot]
- [[Performance test heuristics]]
[^mot]: Tomes, S. (2022). *Test Heuristics Cheat Sheet.* Retrieved from https://www.ministryoftesting.com/articles/ab1cd85c
[^marie]: Cruz, M. (2022). *A brief introduction to exploratory testing.* Retrieved from: https://www.testingwithmarie.com/post/a-brief-introduction-to-exploratory-testing . [[A Brief Introduction to Exploratory Testing|My highlights]].