To Err is Human is the fact which drives the need for automation testing. Because manual testers may not execute the test cases correctly. There will be a lot of possibilities for making mistakes. They may give wrong input data due to typo, or they may not notice the actual behavior of the system correctly, or they may not report the test result correctly, or they may miss executing some test cases, or they may forget to run some preconditions, or they may change the sequence of test case execution in case sequence is important.
Another important factor is, Automation test scripts will be used as a way of storing domain/project/task knowledge gained by the Test Engineers. Say, for example, if a Tester works in the project for one year, he might have spent more time learning the domain, purpose of the project, modules in the project, flow of all functionalities. He will be familiar with known issues and challenges.
If this Tester leaves from the project, the knowledge gained by him also will leave.
It is very difficult for the newly joining Tester to understand everything from the Test Case document.
If automation test scripts are already available then the new Tester can just start the testing by running the automation scripts, without gaining much knowledge about the project.
He can understand the flow/data by seeing the execution of the automation test scripts. But anyway, he should gain project/domain knowledge to enhance/update the automation scripts further. So we can say that test automation is a way of storing knowledge.
Automation tool such as QTP (Quick Test Professional) has a feature for storing screenshot of every page navigated during the execution. So it can be used as a proof for completion of testing, and also we can refer the screenshots of previous executions if there is any need to refer them.
The test report can be automatically written to a customized report page which will ensure the accuracy of the report and also it can improve the look & feel of the report.
The very important advantage of automation testing over manual testing is execution speed. Test execution can be completed quickly and also we can execute the scripts in night time also without human direction. So ultimately total time needed for testing can be reduced which will significantly help for timely project completion. There may be a requirement of doing some testing at a specific time. It can be easily achieved by putting execution of those automation test scripts in a task scheduler/crone job. The tool such as QTP supports the automation object model to achieve this.
The functional test automation scripts will be useful for doing performance testing also. Because many performance test tools will support reusing/calling of these test scripts.
Some type of testing involves comparing a large amount of data between the previous version and the current version as part of regression testing. Practically it may not possible for doing it manually. This problem can be easily solved by a simple shell script or any other scripts such as VBS, wsh.
As the automation test tools support Data-Driven Testing, Test execution can be done repeatedly with many different data sets.
There are a lot of automation test tools available for doing Functional, Regression and Performance Testing. Test complete, SilkTest, SilkPerformer, QARun, QALoad, TestPartner, WinRunner, LoadRunner, QTP, Rational Robot and OpenStack are some of them. QTP is most widely used now as it supports VBScript and it can be used for testing many different applications just by adding required add-ins.