What is Automated Software Testing?
Automation Testing or Automated Testing means carrying out the execution of test cases automatically as opposed to manually - producing the test results without any human intervention. Automated testing is typically used in functional regression testing as well as non-function testing such as performance testing, load testing, network testing and security testing. Automated testing tools are very useful to speed up the test cycle as they can replicate manual testing processes at a much faster rate.
For functional testing, automation is a time, resource and cost-efficient way to automate manual testing that leaves no or very much less scope for human error in the test results. Having said that, not all manual testing is suitable for automation. Testing Performance can help calculate the return on investment to evaluate manual tests that are suitable for automation.
Once built, automated tests can be executed repeatably to test the same application thus minimizing redundant manual work, freeing up test resources, allowing testing to be scheduled for anytime (including overnight), increasing test coverage, decreasing app to market time and greatly reducing human error.
Continuous Integration (CI)
It is this repeatability that also makes automated testing so effective in Continuous Integration (CI). Traditionally, developers worked on their individual code assignments for an application, which would later be integrated with the rest of the team’s efforts manually. It could take days, weeks or longer for the build to be tested. This would often lead to duplication of code, multiple code strategies and creating very hard to find bugs. The developers, already moved on to the next assignment, had a harder time to fix issues.
Continuous Integration allows for new code to be tested using automation in a continuous code/test/release process. CI speeds up the development process and catches bugs early in the software development lifecycle. This is only made possible by automating testing. It would take a very large, highly efficient team of manual testers to keep up with the speed required for CI to work effectively. Automation allows sprints to move forward at the natural pace of development rather than manual testing holding up the process.
Non-Functional testing such as performance testing can also be automated. It is more complex and therefore needs to be targeted. It is not realistic to performance test all components of a system -There are just too many parts in play to be adequately accommodated by a single, high-level approach to performance test automation.
An end-to-end Performance Test Strategy that runs a sequence of these select component level tests is still critical to test the overall response of the application, but testing components at the early stages can reduce the testing time and help in early detection of performance issues. This is considered to be best practise for Agile, Shift Left, Continuous Integration, Test Early approaches. Detecting performance issues early on in the lifecycle leads to a reduction of risk, as well as project overrun in terms of budget and time.