In software development, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes to predicted outcomes. Test automation can automate previous repetitive but necessary testing in a formalized testing process already in place, or add additional testing that would be difficult to perform manually. In other words, if an application has a robust automated test suite it is no longer necessary to actually run the application and test each new feature by clicking on links and buttons, creating or updating information, or uploading or manipulating assets.
Some software testing tasks, such as extensive low-level interface regression testing, can be laborious and time consuming to do manually. In addition, a manual approach might not always be effective in finding certain classes of defects. Test automation offers a possibility to perform these types of testing effectively. Once tests have been automated, they can be run quickly and repeatedly. Many times, this can be a cost effective method for regression testing of software products that have a long maintenance life. Even minor patches over the lifetime of the application can cause features to break which were working at an earlier point in time.