Indeed, now a days Automation testing is becoming a major part of the software development process to overcome repetitive and complex testing tasks. Automation testing is using automation tools to execute the test cases. Manual testing is performed by a human whereas Automation testing is performed by using automation tools such as Selenium, Cucumber, Sikuli, QTP, RFT for web automations and Appium, Selendroid, Robotium etc for mobile automations. It enables testing team to verify functionality, various regression tests and run various test cases simultaneously. Nowadays, many companies has almost quit the traditional approach of manual testing and started automating each and every web as well as mobile based applications, subsequently automation testing is rapidly overcoming manual testing work. As a result, each and every organization moving towards or relying on automation tools for web and mobile platform.
Software testing is a very important phase in software development life cycle. It helps to find defects in the software, missing requirements, improve software quality and usability of the product and lower maintenance cost. Most of the companies use ‘Agile Methodology’ to develop a software product. In this methodology software development process is divided into various sprints which will lead to delivering multiple builds to testing team. So the testing team has to perform testing activity for every build received to them. Here each build consist some new functionality or some changes but for regression testing, some test cases are repeatedly executed by testing team.
Let’s take a simple example of ‘Calculator’ software which will be developed with ‘Agile Methodology’. The first sprint consist ‘Addition’ and second sprint will consist ‘Subtraction’ functionality. So testing team will receive at least two build and for the builds received testing team have to test all the functionality as well as impact of one functionality on other functionality. In such cases there can be some repetitive work for testers which will cause more time for testing.

When to Automate?
There are various situations when Automation testing will be useful. Following are some characteristics of the project when Automation testing can be used:
– Critical specifications.
– Repetitive testing of same modules.
– Requirements are stable and do not change frequently.
– Need of load and performance testing.

Automation testing life cycle:
1. Discussion about why to Automate and decision about Automation.
2. Identify the modules within the software to automate.
3. Choose an automation tool.
4. Test planning and design.
5. Write test scripts.
6. Develop test suites.
7. Execute test scripts and test management.
8. Generate test reports.
9. Test program review.

Automation tool selection:
Though automation tool can lead to project success it doesn’t mean it will give same results as expected for the project. It is really very important to choose a proper test automation tool by considering the project requirements, system requirements and functioning environment. Acquisition of automation tool is carried out after researching for various available tools, license cost, features of this tool and ease of use.

Automation tools:
Following are some of the automation tools which are mostly used by the companies:

For Web Automations:
1.Selenium open source)
2.QTP (license tool)
3.Cucumber (open source)
4. Sikuli (open source)

For Mobile Automations:
1.Appium – Android and iOS (open source)
2. SeeTest – Android and iOS (license tool)
3. Selendroid – Android (open source)
4. Robotium – Android (open source)

Some risks involved in Automation testing:
1. Tester needs a programming language to write scripts.
2. 100% test coverage may not be achieved using automation tools.
3. Starting cost is high in case of license product.
4. Unstable UI and requirements.
5. Changes in test environment.

Advantages of Automation testing:
1. Running test cases 24×7. Test team can start test case execution while leaving the office, test cases will run overnight and test team can check the results on next day. It saves lot of test cases execution time.
2. Test scripts written once can be reused next time also. It is very useful for regression testing.
3. Automation testing is more reliable and quicker. As some test cases are repetitive, human may get bored of this work which may lead to mistakes while test execution.
4. Various test cases can be run simultaneously.
5. No doubt the initial cost is high, but automation testing also helps companies to save cost as automation testing will reduce the amount of time required to run test cases as well as less resources.
6. With test automation higher test coverage can be achieved.
7. Optimization and no security glitches in the software.

Let’s consider the real time scenario of importance of automation testing in case of both web and mobile platform. Suppose, there is an e-Commerce application, and we need to test end to end flow of e-Commerce transaction where multiple users are getting registered and completes entire transaction. In this case there obviously exists lot more scenarios to test and more importantly it should be tested iteratively as per every build. It is not easy to test this scenario using manual testing approach in agile process. So the solution to this is to automate it. Simply automate each and every scenarios, run script and generate test report for every pass-fail test case. That is it.