Test automation can enable some testing tasks to be performed far more efficiently than could ever be done by testing manually. There are also other benefits, including those listed below.
1. Run existing (regression) tests on a new version of a program. This is perhaps the most obvious task, particularly in an environment where many programs are frequently modified. The effort involved in perform ing a set of regression tests should be minimal. Given that the tests already exist and have been automated to run on an earlier version of the program, it should be possible to select the tests and initiate their execution with just a few minutes of manual effort.
2. Run more tests more often. A clear benefit of automation is the ability to run more tests in less time and therefore to make it possible to run them more often. This will lead to greater confidence in the system. Most people assume that they will run the same tests faster with automation. In fact they tend to run more tests, and those tests are run more often.
3. Perform tests which would be difficult or impossible to do manually. Attempting to perform a full-scale live test of an online system with say 200 users may be impossible, but the input from 200 users can be simulated using automated tests. By having end users define tests that can be replayed automatically, user scenario tests can be run at any time even by technical staff who do not understand the intricacies of the full business application. When testing manually, expected outcomes typically include the obvious things that are visible to the tester. However, there are attributes that should be tested which are not easy to verify manually. For example a graphical user interface (GUI) object may trigger some event that does not produce any immediate output. A test execution tool may be able to check that the event has been, triggered, which would not be possible to check without using a tool.
4. Better use of resources. Automating menial and boring tasks, such as repeatedly entering the same test inputs, gives greater accuracy as well as improved staff morale, and frees skilled testers to put more effort into designing better test cases to be run. There will always be some testing which is best done manually; the testers can do a better job of manual testing if there are far fewer tests to be run manually. Machines that would otherwise lie idle overnight or at the weekend can be used to run automated tests.
5. Consistency and repeatability of tests. Tests that are repeated automatically will be repeated exactly every time (at least the inputs will be; the outputs may differ due to timing, for example). This gives a level of consistency to the tests which is very difficult to achieve manually. The same tests can be executed on different hardware configurations, using different operating systems, or using different databases. This gives a consistency of cross-platform quality for multi-platform products which is virtually impossible to achieve with manual testing. The imposition of a good automated testing regime can also insure consistent standards both in testing and in development. For example, the tool can check that the same type of feature has been implemented in the same way in every application or program.
6. Reuse of tests. The effort put into deciding what to test, designing the tests, and building the tests can be distributed over many executions of those tests. Tests which will be reused are worth spending time on to make sure they are reliable. This is also true of manual tests, but an automated test would be reused many more times than the same test repeated manually.
7. Earlier time to market. Once a set of tests has been automated, it can be repeated far more quickly than it would be manually, so the testing elapsed time can be shortened (subject to other factors such as avail ability of developers to fix defects).
8. Increased confidence. Knowing that an extensive set of automated tests has run successfully, there can be greater confidence that there won’t be any unpleasant surprises when the system is released (providing that the tests being run are good tests!).