It is always required for the software developers to test the products they have developed; however even after the preliminary testing has been provided, the software usually still has some bugs when it is delivered.
The main task of a quality assurance specialist is to find and destroy different types of bugs before the software products are released and users gain an access to these products. The software can be tested by the same person who has created it, by another programmer from the same company, or by the independent testing team which can be based in the same office or remotely.
The remote independent testing is believed to be much more effective because the independent quality assurance engineers look at the problem from aside without any prejudice and it involves more people, so it is more likely to find an error and to get rid of it much faster.
However even when the independent software testing is provided by high-qualified quality assurance specialists several times, it is still very difficult for the test engineers to guarantee that the users won’t face any bugs working with the software products in the future. So it is considered that manual testing is definitely not enough, however effective it may be. Automated testing is believed to be necessary because it helps to improve the quality of the developed software products in general, to increase the efficiency and coverage of these products, to make them work more effectively.
Manual testing is a term which refers to testing which is provided by a human (one person or a group of people), in contrast to automated testing which is defined as testing provided by means of different technical tools. To provide manual testing effectively a person (a developer, a tester, a quality assurance engineer) should have a deep insight into application screens. The task is to analyze all the possible ways to use the application and different types of input combinations empirically. The results of this analysis are compared to what was expected and then recorded to be worked on furthermore because the software products usually need to be tested more than once.
Manual testing is usually provided several times during the software development in order to change the source code, hardware configurations and working environment (there can be several ones. It means that the task becomes much more difficult for the quality assurance engineer to accomplish) and to provide some other kinds of changes if they appeared to be required during the previous stages of testing.
But no matter how many times manual testing has been provided, it is almost impossible for it to reach the same level of effectiveness which can be achieved by means of automated testing. An automated testing tool makes it possible to playback the actions before they are defined and recorded, comparing the results to the expected ones and sending the report to the quality assurance engineer. When such tools are created, there is an option to easily apply them over and over again, and the tasks which can be easily accomplished by means of automated testing are often too complicated or even impossible to be done by a human. That is why the specialists of quality assurance engineering admit the necessity of the automated testing to make the software development more successful.
Big software development companies believe the automated testing to be obligatory, whereas smaller firms consider them unaffordable from the financial point of view and too hard to use.