Testing is one of the most important elements of producing a software product. It's also the least fun, and as you will see later, foolproof testing is impossible.
As the old saying goes, testing is never done--it's simply the customer who ends up doing most of it. As the producers of software, we will only have so much available time and resources to put into testing our products. We must use those resources wisely. Once we've done all the testing we can, we must pass our product on to the customer, and be prepared to deal with the bugs the customer will find....
BUT--how do we know when we've done "enough" testing?