Exploratory testing is an art. Compared to scripted testing, everything is left to the real-time perception of an application as the tester puts the application through its paces. The tester must keep track of all the possible branches within that process to make sure all parts of the application are being tested, not just a repetition of the same processes. Typically only the more experienced testers are good at exploratory testing as they may have developed the right skills to explore all aspects of an application. They recognize when a "standard" drop down menu contains "non-standard" menu options, for example. They know how to exercise a date field, to test amount fields with limit checks, and so on, without being prompted to do so by following a detailed predefined test script.
One of the challenges is to keep detailed records of where you have been and what has been tested in order to make some assessment of how well the application has been tested. Some people claim that by looking at the relative frequency of errors you can determine how complete the testing is, but we find that difficult to support. It is not as if you have a list of things to be tested, as for scripted testing, so that you can tally what portion of the test scripts has been completed. Even such basic feedback as where you stand with testing is more conjecture than an objective status report. That does not mean that there is no room for exploratory testing, it means that you must have a good reason to engage in testing without first writing the proper test scripts.
Among the more plausable reasons is the testing of potential conflicts with other applications, where you have no design specifications that tell you what specific conflicts the developer should avoid. In fact, the developer is generally unaware of any such conflicts, assuming instead that the application will work as expected regardless of what other applications may be running. Since you cannot prepare specific scripts you must be experienced to notice suspect behaviour and to dig deeper to find possible hidden issues that interfere with the application. For most software development, however, we prefer to develop scripts that itemize all potential test conditions.
|