Just as a physical product is tested to check whether it meets the desired behavior and specifications, so also is software tested. Software testing can be done manually by people, or by using tools. An automated testing tool is a piece of software used to test the target software, that is, the software under consideration. Such a tool executes various tests on the target software, and determines whether the tests are successfully passed.
Software needs to be tested to ensure that correct results are generated, valid inputs are accepted and correctly processed, and that invalid inputs are rejected. Testing is necessary to determine whether results are generated quickly, the software works well even if a large number of people access it simultaneously, and so on. Manual tests are often used, but they are dependent on the thoroughness of the people doing the testing. Testing software manually takes time and requires a significant number of people for most non-trivial applications thus adding to the cost. In addition, testing for thousands of simultaneous users or large volumes of data cannot be easily carried out in a manual manner.
Test automation is the use of tools to test software. An automated testing tool is itself software that could be developed, purchased or acquired. The tool typically starts executing the target software, and passes various inputs to the target software for testing various conditions. It evaluates the corresponding outputs of the target software and keeps track of the pass/fail outcome of each test. At the end of a series of tests, the tool typically gives a summary results so that one can quickly determine the number and severity of the defects.
An automated testing tool can work in two ways. Firstly, it can be code-driven, that is the tool can be tightly related to the written code so that it checks that the results for various inputs are correct. Secondly, it can be user interface based wherein activities from users such as mouse movements, keyboard inputs, voice inputs, etc. are mimicked, and the outputs provided to the users are examined for correctness. In the latter case, a person’s actual activities could be recorded and then replayed by the tool, or, such activities could be generated from a script of commands fed to the tool.
General purpose automated testing tools are available on the market. Most are quite expensive, but some tools are available for free. If the target software is highly specific or unique, then a testing tool probably needs to be custom developed by that software team itself. As with all software, the tools themselves have limitations, and work properly only when given good input data. If one does not feed a relatively complete set of tests, the tool will not help determine the quality of the target software.
An automated testing tool has many advantages. Once a series of tests is created, the tests can be executed more quickly than a person can execute them. The tests may be run overnight or at odd hours leaving people free to focus on what they do best. The tests can be run over and over again to determine whether errors have crept into the target software as it gets modified over time.