All humans usually try to reach a given purpose directly. So if we are supposed to prove the accuracy of a program, we will un-deliberately run tests that are less likely to detect a fault. And if it is the purpose of a test to find a fault, we will automatically focus our exertions in this direction and produce better tests.
Well, psychology helps to clarify what is the reason that this field has been treated so step motherly. Many programmers begin to identify themselves with their programs when working on them for a long period. Since software testing is a destroying project which is aimed against their work they consider it as a direct personal bombard and aggression. That’s why many programmers did not help to develop and improve good techniques for software quality control; they sometimes even tried to hamper this progress.
Because of this misunderstanding a lot of western software developing organizations make use of external testers or at least of a separated testing team. In several organizations the project managers try to eschew a direct communication between the programmers and the testers. The reason is that this reduces the psychological barrier, and it compels the developers to make better documentations. Otherwise disagreements are unavoidable and may be the reason of supplementary work for the developers.
As you know, there is no rule without an exception: for example, such psychological troubles are not actual for Japanese software developers. In Japan software testers and the programmers put together one unit. As a rule, one of the top level programmers is usually answerable for testing and quality assurance.
Such model is possible according to a great difference between the Japanese and the western mentality. Our society hopes to improve by settling conflicts, whereas the eastern has a more total view. Each and every one feels answerable for the whole organization but not so much for his own work.