"Test Automation" is automating the manual testing process currently in use. This requires that a formalized "manual testing process" currently exists in your company or organization. Minimally, such a process includes:
Detailed test cases, including predictable "expected results", which have been developed from Business Functional Specifications and Design documentation
A standalone Test Environment, including a Test Database that is restorable to a known constant, such that the test cases are able to be repeated each time there are modifications made to the application
The real use and purpose of automated test tools is to automate regression testing. This means that you must have or must develop a database of detailed test cases that are repeatable, and this suite of tests is run every time there is a change to the application to ensure that the change does not produce unintended consequences.
Why do we need automated testing?
Recent advances in software applications enable developers to build applications quickly and with increased functionalities. Quality Assurance must cope with software that has dramatically improved, but is increasingly complex to test. Each code change, enhancement, defect fix, or platform port necessitates retesting the entire application to ensure a quality release.
Manual testing can no longer keep pace in this dynamic development environment. Automation helps you automate the testing process, from test development to execution. You create adaptable and reusable test scripts that challenge the functionality of your application. Prior to a software release, you can run these tests in a single overnight run - enabling you to detect defects and ensure superior software quality.
Benefits of Automated testing
If you have ever tested software manually, you are aware of its drawbacks. Manual testing is time-consuming and tedious, requiring a heavy investment in human resources. Worst of all, time constraints often make it impossible to manually test every feature thoroughly before the software is released. This leaves you wondering whether serious bugs have gone undetected.
Automated testing addresses these problems by dramatically speeding up the testing process. You can create test scripts that check all aspects of your application, and then run these tests on each new build. It simulates a human user by moving the mouse cursor over the application, clicking Graphical User Interface (GUI) objects, and entering keyboard input and this is faster than any human user.
Advantages of Automated testing
Some of the pros of automated testing are
Disadvantages of automated testing
Some of the cons of automated testing are
Automated test development increases test planning and development time
May require programming skills not available among test team doing manual testing
May be seen as "magic bullet" to solving software quality/test issues - won't solve quality problems due to poor requirements management, design or coding practices
Effort to create and maintain automated tests is often underestimated
How to have a Cost-effective automated testing?
Automated testing is expensive. It does not replace the need for manual testing or enable you to "down-size" your testing department. Automated testing is an addition to your testing process. It can take between 3 to 10 times as long (or longer) to develop, verify, and document an automated test case than to create and execute a manual test case. This is especially true if you elect to use the "record/playback" feature (contained in most test tools) as your primary automated testing methodology.
Automated testing can be made to be cost-effective, however, if some common sense is applied to the process: Spend the required time and efforts to choose a test tool that best fits the testing requirements of the project.
Accept the fact that there may be scenarios which may not lend itself to automated testing. Overly complex tests are often more trouble than they are worth to automate. Concentrate on automating the majority of your tests, which are probably fairly straightforward. Leave the overly complex tests for manual testing.
Only automate tests that are going to be repeated. One-time tests are not worth automating.
Adopt a data-driven automated testing methodology. This allows you to develop automated test scripts that are more "generic", requiring only that the input and expected results be updated.
Progression of Automated testing
Automated testing can be taken up in stages as below
Each stage is further explained in the below table
While test automation sounds very attractive, one needs to spend the required time and efforts to
Objectively evaluate the need, keeping in mind the nature of the development that is underway. Those that are likely to be be completed in one go will not need test automation.
Select the right tool and technologies. Ensure test automation doesn't become so complex that this itself would involve complex testing to be done before deployment.
Objectively evaluate what can be automated and what cannot, what should be automated and what should not.