Exploratory Testing
Exploratory testing is simultaneous learning, test design, and test execution — a tester actively explores the application with a goal or charter in mind, adapting what they test next based on what they discover, rather than following a pre-written script. It's structured improvisation, not random clicking.
Unlike ad hoc testing's total lack of structure, exploratory testing is usually time-boxed and charter-driven — "spend 45 minutes testing the new checkout flow for edge cases around discount codes" — with the tester taking notes on what was covered and what was found as they go.
It's particularly effective at finding the kinds of bugs scripted testing misses: usability friction, unexpected interactions between features, and issues that only become apparent once a tester starts following their own curiosity about how the system actually behaves under real, non-linear use.