Why do we need QA Engineers if experienced developers with the right mindset can test their own code? The point is that delegation of test activities to testers brings considerable benefits such as an independent view by professional resources. Developers should provide unit testing of their code, but their main target is to resolve the task using the code. In return, the tester’s target is to find all probable issues that can be imagined. Lookers-on see most of the game – and this really works for software testing. The specialist with the different mindset is much more effective for paving the way to software’s excellence than its creator.
There is a term ‘level of test independence’ that answers the question: “Who should be the person to design tests for our software in the most objective way?” According to these levels of independence, the best choice is a test created by a person from a different organization or company. So, testing services outsourcing is one of the best decisions to make. And the lowest level of independence is granted to tests designed by a specialist who has created the software. Developers like their solutions, they love their code and the main objective for their tests will be to prove to the world, the small inner world of the team or company, that their code is perfect. Best self-control can’t totally save the developer from that, and even if emotions lose their key role in this deal the developer remains the same person who created this product and who is still thinking the same way about the task and its solution.
Other developers can also create tests for the code written by their teammate, and these tests are a little bit more objective than tests created by the author of the code. Professionals from the different team are even more independent. But still, the highest level of independence is granted by external testing teams. As we can see, the best choice is delegating testing (or at least test design) to people who are as far away from code writing as possible.
Testing as a part of QA has its own methodologies, techniques, and even philosophy that’s why it is important to delegate this part to testers. It doesn’t mean that developers shouldn’t test their code at all – unit testing should be run by them and they should also check whether fixes or improvements don’t crash the application. But, the most of test activities should be done by the specialist whose knowledge and mindset are trained for testing activities.
Developers look for a solution while testers look for an issue. And, as a result – developers find solutions while testers find bugs. We always find exactly what we are looking for, and how we do that determines our mindset, and our mindset determines how we are working. So, let developers think about coding, and let QA engineers think about testing.