The aim of testing is often to demonstrate that a program works by showing that it has no errors. This is the opposite of what testing should be viewed as.
The basic purpose of the testing phase is to detect the errors that may be present in the program. Hence, one should not start testing with the intent of showing that a program works, but the intent should be to show that a program does not work. With this in mind we define testing as follows:
Testing is a process of executing a program with the intent of finding errors.