Automation does not do what testers used to do, unless one ignores most things a tester really does. Automated testing is useful for extending the reach of the testers work, not to replace it. – A quote attributed to James Bach, an expert in the field of computer software testing, author and trainer.
Automation testing is the use of specialized test automation tools to execute the test suite. It works best when employed to execute repetitive scenarios.
The process involves preparing test scripts and test data, executing the test suite, comparing the actual and expected results and reporting. Automation testing can be done for both functional as well as non-functional test suites such as stress testing, volume testing, and so on.
Automating testing in a project depends on the complexity as well as the tenure of the project. If the project is for a period of less than a year, then manual testing would be sufficient, as preparing automation scripts itself is time-consuming.
If the project duration is more than a year, automating the critical functional flows is a must to start with, and then you can enhance the test bed with more and more scenarios as and when required, or when changes in functionality are encountered.
Automated tests also play an important role in continuous integration, which is first step in automating the complete software release process.
Continuous integration is a software development practice where developers merge their code changes into a central repository, several times day. Each integration is then verified by automated build and tests. This process aims to improve the quality of the software, and to identify and fix bugs faster.
There are different tools are available for different automation requirements – functional and non-functional. Functional automation tools include Selenium, TestComplete, Coded UI, QTP and SoapUI.
Functional testing can be either through the UI or through API. SoapUI is an example of an API testing tool. Non-functional automation tools include JMeter, BlazeMeter, LoadRunner and NeoLoad.
In fast-paced development environments, automated testing can help the team in many ways – to execute more tests, identify and fix defects immediately, increase efficiency and coverage, ensure quality, and reduce manual intervention.