In software projects, testing is crucial; it allows us to find defects in our product. When bugs are reported and solved, the result is a higher quality software product. Unfortunately in many projects, testing time is limited, leading to critical parts of the software being left untested. Testers need to optimize the usage of their resources: time and software tools. Depending on the project, certain tools can assist testers in their work and optimize testing time.
The typical test execution process in a software project has these steps:
- Tester executes a test
- Tester finds a defect
- Developer solves the defect
- Tester re-tests and defines if the defect was solved or not
Sometimes defects are not solved and tester needs to wait for a new fix and test again, this leads to a very repetitive process.
Additionally, testers need to do regression testing at different stages of the project, including: when an iteration is completed, when critical changes have been introduced, before launch, or as part of a product’s maintenance. Regression testing can be very time consuming, so sometimes we need to reduce the number of tests to be executed and test only very risky areas.
During confirmation testing and regression testing, software testers need to run the same test case several times. Some test cases are complex; they may require configuration and multiple steps and it could be hard to compare outcome with expected results. Let’s say we have a form in a website that contains more than 15 fields. Once the form is submitted, several calculations are made based on the input values and then the results are displayed in different sections of the site. Checking the results manually could be hard, take a lot of time and it is possible to make mistakes when verifying the results. Now, imagine running that test case in all your supported browsers! Though it’s possible to do, it would take too much time.
“Test automation means using a software tool to run repeatable tests against the application to be tested.”(SeleniumHQ, 2012) In many cases, Test Automation can significantly reduce the time running test cases; the saved time could be used to spend more time on test planning, analysis and design. Additionally, tests that are impossible to be performed by human being in a limited time are now achievable; a test automation tool allows to run the same test case hundreds of times.
Nowadays, many organizations are using the Agile model, where testing is continuous and regression testing is needed after every iteration. Test automation can improve the productivity and speed in sprints; since testers can focus on testing new code and test automation in testing previous code. (Impetus, 2011) Additionally, testers can provide results to developers faster and the reports are more accurate. Having good communication between testers and developers enhances collaboration, which is very important in Agile projects.
SeleniumHQ site, lists these advantages when using Test Automation to improve the long-term efficiency of software’s team testing processes:
- Frequent regression testing
- Rapid feedback to developers
- Virtually unlimited iterations of test case execution
- Support for Agile and extreme development methodologies
- Disciplined documentation of test cases
- Customized defect reporting
- Finding defects missed by manual testing
This is part 1 of a 3-part series on testing automation.