Throughout a testers life, we would have asked ourselves the question ‘To automate or not to automate’.
Automation means taking your manual tests and automating them using a tool and language of your choice. There are myriad reasons to use test automation. Here are 7 key benefits that I've identified:
This is one of the biggest benefits for me, especially when it comes to regression testing. As we all know, regression testing is the retesting of the application when new features have been introduced or a change is made to an existing feature that has been previously tested (the change can be as a result of change request, defect fix, refactoring).
The aim of regression testing is to ensure the application still works as expected and in order for us to verify this, we need to run all test scripts associated with the change. There is a risk here, that due to time constraints we may not run all tests associated to the change which may result in undiscovered defects.
These issues can be overcome by setting up our automated tests to run over night or after each deployment – this creates time for the tester to perform exploratory testing, concentrate on areas which cannot be automated and concentrate on other tasks.
As automated tests are run by tools, these are run much faster than human users which adds to the first benefit of saving time.
The same tests can be re-run in exactly the same manner eliminating the risk of human errors such as testers forgetting their exact actions, intentionally omitting steps from the test scripts, missing out steps from the test script, all of which can result in either defects not being identified or the reporting of invalid bugs (which can again, be time consuming for both developers and testers to reproduce)
From my experience I have found myself in situations where the test suite has become out of date – new functionality has been introduced or existing features have been changed in the way they work and the test cases are no longer up to date as the tester(s) has had no time to go back and update the test scripts.
When tests are automated and run after each build, those that are out of date will fail hence, forcing the tester to go back and fix the test script – this process ensures the test scripts are kept up to date and quality of the software is maintained
The automated tests can be reused on different versions of the software, even if the interface changes.
Testers can create a test suite with tests to cover every feature within the application.
This can be of benefit when the number of resources required for regression testing are reduced.
In a nutshell, automation helps to save time by reducing the time taken to run tests; Increases the quality of the software and testing process through reliability, repeatability and comprehensiveness of the test suite; Utilising manpower more effectively by applying skills and time where they are needed most and increasing test coverage.
Of course, automating tests does not mean we are eliminating the testers role. There will always be a place for a human tester within a project team, as not every test associated with a feature can be automated and not every project is suitable for automated testing.
As a tester, automation is about making our lives easier, by using it to overcome problems such as time and testing more efficiently to ensure quality is maintained not just within the application being developed but also within the testing process.