%% 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]].