It is a human behavior to develop an attachment for the things which belongs to them. A Ferrari owner will have attachment for his Ferrari. The same applies to softwares.After all, we are all human beings influenced by emotions. Similarly, Software developers develop attachment for their code which they have written for a long time.This is what we call Psychology in Software Testing.
Suppose a developer was supposed to prove the correctness of a program, we will undeliberately run tests that are less likely to detect a faults.Due to psychological factors, he will be more inclined to prove his program is working right than wrong. On the other hand, if a tester is given an application he will automatically orientate his efforts in that direction and produce better tests.This is a proven fact. Due to this reason, many software companies have a completely different unit for software testing.
Do good and get evil
Software testing is a destructive activity where tester have to break developer’s code. Definitely this is the role of tester and that is what he gets paid for.
But there are other types of tests like performance test, load test, stress test which does not necessarily involve breaking developer’s code.
Tester in What to do State.
Consider a scenario where you as a tester got an application to test which is developed by your colleague friend, now you are in a dilemma, if you find any major defects, the developer may be screwed for not writing good enough code. On the other hand, if you do not found any defect, you might be screwed for not writing good enough test cases.
Due to this reason, most software developing companies make use of external testers or at least of a separated testing department.
In some companies the team leaders try to avoid a direct contact between the developers and the testers, because this reduces the psychological barrier, and tester is able to perform his best.
Self-testing and independent testing Perspectives
In the above section comparison made on mindset of software developer and software tester is just to compare and show different perspectives. It does not conclude tester cannot be a programmer or programmer cannot be a tester.
Both developer and tester has different role and responsibilities. In fact Programmers are testers because each time they test there developed component before sending it for testing.
Anyways no one will like to find our own mistakes. So the developers, project managers rely on other persons to get there work tested. The other person can be a developer from same organization or any other testing specialist from same or other organization.
There is several level of independence in software testing which is listed here from the lowest level of independence to the highest:
1. Tests by the person who wrote the code.
2. Tests by another person within the same team, like another programmer.
3. Tests by the person from some different group such as an independent test team.
4. Tests by a person from a different organization or company, such as outsourced testing.