Shrini Kulkarni (@shrinik) tweeted that a friend told him if exploratory testing finds bugs not found by scripted testing, it may be due to insufficient or incorrect test planning and review.
Perhaps there aren’t enough test cases. Perhaps testing techniques weren’t applied properly. Perhaps the review of tests was done wrong.
However, perhaps — just perhaps — people are fallible and can’t completely understand or work through the complexity of their customer’s problems and the technical implementation of a solution with finite knowledge, finances, and time.
If it is reasonable to expect testers to design enough tests to exercise near-infinite paths with near-infinite data variations in a software system, then I think it should be reasonable to expect software designers and coders to anticipate everything that could go wrong and prevent all threats to the value of the software they produce — all with finite finances and time.
If this were reasonable, then it would be reasonable to skip testing altogether.
In the real world, it is just as unreasonable to expect perfection from test case designers as it is to expect perfection from all the other people involved in developing software. Is it not?
One of the things exploratory testing helps avoid is locking in our level of ignorance that exists at the start. An explorer can use information gained as they explore to help guide where they go and what they do next.