Software testing is a process which is designed to make sure that program performs according to the need and requirements and does not do anything which is harmful and unintended. Software testing is getting more importance with passage of time. It is very common that creativity and effort required for testing a software exceeds the effort required in designing that software. Applications like hadron collider, air traffic control system and complex operating system which you are using right now for reading this text, are good examples.
But the question is why a tester cannot trust on programmers. The answer is difference of attitude. Both programmer and tester have common agenda to improve the quality of the software and to make the application stable and bug free. Programmer writes the application with positive intention and positive attitude, on the other hand tester test application with positive intention but with negative attitude.
Tester does not trust on developer, his curiosity drives him to find the flaws in the application even if everything looks fine. Tester cannot trust on written test cases as well, he always executes those cases which are not written. Tester try his best to crash this application in the test environment before it would crash in the production.
What happens when tester and developer trust each other.
There was a war between Argentina and England for Falkland Islands. Argentina had very advanced missiles and England navy had state-of-the art defense system. Both technologies were supplied by the European countries. Argentina launched a missile towards British H.M.S. Sheffield, British radars immediately alarmed everyone about this attack, detected the missile, configured the type and name “Exocet” of the missile. Both missile and defense system were made by one manufacturer so defense system considered it as a “Friendly fire”. This fire was considered so friendly that system did not check anything not even trajectory.