Testing is easy to do. As long as you don't do a really thorough job. Most of the systems that I work on do not need formal, rigorous testing as the cost of performing the tests would far outweigh the cost of the application not performing correctly.
However, I feel that this does not mean that the current quality of testing is acceptable: too long is spent refactoring systems that should never have been released in the first place.
As an example of the intellectual difficulty in compiling a thorough test case, the following excerpt from "The Art of Software Testing" is presented
Before beginning the book, it is strongly recommended that you take the following short test. The problem is the testing of the following program
The program reads three integer values from a card. The three values are interpreted as representing the lengths of the sides of a triangle. The program prints a message that states whether the triangle is scalene, isosceles, or equilateral.
On a sheet of paper, write a set of test cases (i.e. specific sets of data) that you feel would adequately test this program. When you have completed this look at the answers.