Analyzing and developing of different types of apps is not the same as reviewing and testing them. Developing applications is focused on building them in correspondence with users’ needs and problems that appear during the developing process are solved immediately (or should be). On the other hand, quality assurance is required for any kind of software and it is mostly provided through testing. The key point of quality assurance is to find the defects and failures of an application which has already been developed, that is why developers and testers have different duties and should cope with them in different ways.
It is necessary to note that the idea of separating tasks of programmers and testers does not mean that these obligatory should be 2 or more people. One person can be able to do both these jobs and it is required for a programmer to test all the codes he has developed (in other words, unit-testing is necessary) however it is always much harder to notice the mistakes of your own, the creators are always biased to what they’ve created. That is why developers often apply for help of their colleagues or invite professional testers for the quality assurance of the codes. It is called an independent testing which may be provided directly at the place where the software is developed or remotely. There are 4 levels of testing: unit-testing by the programmer, testing by another programmer, testing by a professional tester (from the same company), testing by a professional tester from another firm. Each of these levels provides more independence in comparison to the previous one which makes the results of the quality assurance more objective, especially if it is done remotely.
For testers, it is important to understand how to inform programmers about the mistakes they found in their software. It is a win for them to find a drawback, but for a developer, it usually means nothing good — nobody likes to be caught on a mistake. So, it is necessary to know that by sharing the results of your work you can easily annoy or irritate another person, so a tester should be polite and correct, his job is to criticize bugs, not people, and of course, it is needed to mention the advantages of the software for customers not to get disappointed in it completely because of some defects.
To sum up, it is necessary to understand that developers and testers have different goals and tasks and it is necessary to separate them even if there is only one person to do both these jobs. The developer’s goal is to create software and the tester’s goal is to detect mistakes, which should be done politely, respecting people and their work.