Essentially testing is an exploratory task...
Exploratory testing is a structured process of investigating an application by learning and understanding its use, features, and operation in a series of logically constructed but ad hoc tests. By itself, exploratory testing can be useful, but when combined with other testing practices, it can be a powerful way to better understand the application, build more and better functional tests, and ultimately increase product quality.
Exploratory testing can take many forms. A tester might methodically execute a series of transactions as a user might do, recording the results and looking for discrepancies or inconsistencies. Or the tester might perform a series of actions that a real user would never do, such as press the return key multiple times or type nonsensical data into a field.
The goals of exploratory testing also vary. In some cases, it serves as a final reality check on the quality of the software before determining whether or not it is ready for release. In others, it serves as a beginning point, an analysis of application strengths and potential weaknesses before beginning formal testing. Ideally, it should be used throughout the testing process, alternative with other forms of testing to provide a high level of different types of interactions with the application.
The tester starts exploratory testing with one or more of these goals in mind. Exploratory testing is typically a relatively quick process, usually taking a few hours to a couple of days, so that a tester can quickly find useful information for a decision on further testing or release strategy.
Depending on the goals of specific testing processes, exploratory testing can initially provide testers with domain and operational knowledge of the application, along with determining areas that might require additional functional tests. If you can automatically record explorations, they can also be easily turned into functional test scripts, which support the traditional testing process. Eventually, exploratory tests can even be automated.
I will talk more about exploratory testing in future posts as I am keen on defining this for myself.