Just like people value independence for the unbiased and productive results it ensures, independent testing is crucial if quality of the product is required. If a programmer or integrated tester carries out the duty of testing there will be bias. Errors which are to be rooted out by means of testing will be missed. A team consisting of professionals not involved in the development of the product but who are a part of the program could be used to test the product and would ensure a level of independency, but would not provide a completely independent solution crucial for successful testing.
The importance of independence is unquestionable. Imagine a judge who visited parties held by those he had to prosecute. The influence would lead him to rule in favor as opposed to against the prosecution.
Independence ensures that there will be no bias. Independence ensures quality. Independence ensures that the customer gets value for their hard earned money.
The Programmer Conducting Development Tests
Imagine a programmer who writes a program and then tests it himself. He will not want to break his product. He will be eager to get it out into the market and earn money. When testing his program he will be biased, and will test it in ways which are safe. He will test it in ways which do not break it out of fear of having to spend more time on fixing it.
Instead, an independent team is needed who will have no feelings or regards toward the program and will act completely independently. They will try to find bugs and errors in the program from all angles. The independent team will not be concerned with getting the program out into the public to make money, but will be looking to break the product as that is their purpose and means of making money.
This is why Boris Beizer, who wrote the book Software Testing Techniques, said that only five percent of a programmer’s education is dedicated to learning how to find flaws in his program while he has to, in practicality, spend half of his time testing the program he creates.
Glenford Mayers, writer of The Art of Software Testing, accurately pin pointed the difference in the state of minds which exist in a person creating a program and that of a person testing it when he said that the mind of the former is like a builder and concentrates on building while the mind of the later is geared to finding the flaws which may lead the building to collapse if these flaws go unnoticed.
Rather, than have a totally independent team one could think that perhaps it would be more logical to get an integrated tester, who reports to the developmental manager, to test the program. While this would provide a level of independence, it is not the ideal solution because the development manager might instruct the integrated tester to forgo certain tests due to time and monetary restraints.
Since the integrated developer would be obliged to listen to the development manager independence would be lost in such cases. Once again complete independence would not exist.
Another problem with using this approach is that the environment in which the testing would take place would not permit certain forms of testing such as stress testing since there are only a few users in such developmental environments and integration is lacking.
Acceptance and Solution Testing
Another option would be to use a team of testers who are not related to the developmental team and are outside of it. They are only responsible of answering to the project manager. While this may seem like an option which provides independent testing, there is always the possibility that time restraints lead the project manager to influence the testers, once again, leading to bias. So while this solution would provide a dedicated environment free from the constraints present in a developmental environment, namely lack of users and full integration, a level of bias would remain.
The solution, therefore, rests in having a completely independent team for testing the product. The independent team of testers does not report to the development or project manager. It reports to an independent organization. The team of such testers would consist of product specialists, specialists in technology, security testers, certification testers, and test automation experts.
Such an independent team of experts would question everything. They would have the required mindset of seeking flaws and destruction of the product as opposed to preservation. They would leave no stone unturned and would not be influenced by time and monetary restraints. The chance of being told to cut corners due to vested interests would be virtually nonexistent.
All in all, independence is the key to product quality. A programmer, integrated tester or team obliged to report ot the developmental manager, or a team of testers outside the developmental team obliged to report to the project manager would all be likely to experience a degree of bias which would prevent them from truly exposing the flaws in a given product.
While the testing team outside the development team would have a dedicated environment freeing it from constraints of the environment, the bias toward the entire project would still be present. Thus, a truly independent solution rests in having a team of testing experts who report neither to the development manager or project manager but to a separate organization.