Testing is a process, which shows a program does what it is intended to do and it helps to discover program defects before it is put into use.
It is not necessary for a program to be completely free of defects before it is delivered to its customers because it is not always (99% of the time) possible to deliver a defect free product to the customer which is of 100% quality.
And testing cannot completely validate that a system is fit for its intended purpose as this requires a detailed knowledge of what that purpose will be and exactly how the system will be used. As these details inevitably change between deciding to procure a system and deploying that system, the testing will be necessarily incomplete.
In addition, it is practically impossible for all except trivial system to have a complete test set that covers all possible ways that the system is likely to be used.
A program need not be completely free of defects before delivery if:
1. Remaining defects are minor defects that do not cause system corruption and which are transient i.e. which can be cleared when new data is input.
2. Remaining defects are such that they are recoverable and a recovery function that causes minimum user disruption is available.
3. The benefits to the customer's business from the system exceed the problems that might be caused by the remaining system defects.