Software test automation is not a new concept, however it is a very important practise with a vast range of benefits when implemented correctly.
In the world of software development, there is a constant race to release new versions of software with new functionality, greater stability, and bug fixes. Companies are now increasing the frequency of their releases from monthly to fortnightly, or even daily.
With the increase in pace, it just isn’t practical for software to be thoroughly tested manually, ready for each release. In an industry where computing resource is cheap compared to the time of personnel, the need for automation is clearly obvious.
Software Test Automation
Test automation is the process of testing software automatically using scripts written by a test automator. These scripts run through the software simulating a user’s actions, reducing the need for a QA to manually test through the software. The scripts look at data to check that they match the expected values, checks the functionality of the software, and also monitors performance.
During the development of scripts, any bugs impeding the development of the script are fixed, leaving the script to run without any issues. The automated script will remain to test that same area for any regression issues that may occur.
Automated tests are consistent (no human error), repetitive, accurate and fast, really fast, especially when compared to going through a list of the same test cases manually.
There are many different ways in which software tests can be automated. They can be written purely by code, or they could use various tools/applications like Smartbear’s Testcomplete, Ranorex or Selenium to assist in the creation of your test scripts.
Some available tools are a simple capture replay tool, recording the actions a user makes and recreating those when required, and some use a more intuitive language, reducing the level of programming knowledge required to write the test scripts. When choosing best practise for implementing software automation, a lot of the decision will come down to the level of expertise you have available, as well as the environment in which the application is being tested.
Test Automator Skill
Automated test scripts do require a stable environment to run. If a change is made to the software, the script may fail to run. This is often where the skill of a test automator is defined; are the scripts robust enough to survive a small change in the UI?
It is important for the test automator to work closely with the software developers to help in making the scripts robust. If the scripts are frail, they will fail, resulting in increased maintenance costs.
The convenience of automating your tests is that it can run autonomously, with minimal intervention and so freeing up hours of valuable QA time. Test automation can run as often as you like and at anytime you like, even overnight. This allows test results to be returned to developers while their code is still fresh in their mind. The sooner any bug is found and fixed, the lower the cost of the bug.
The downside to test automation is that it does come with high upfront costs. This is the time required to write the test cases for the script as well as the time required to write the code and develop the script itself, (compared to manual testing where a QA can start testing almost immediately). Hence, automated tests only become beneficial offering a return on investment if the tests are going to be run repeatedly over time.
Manual testing is always going to feature in the software development life cycle, whether to test a newly developed enhancement, attempting to replicate a reported issue, or conducting ad-hoc exploratory testing around any areas of concern. With manual testing, different areas of the software are being explored in different ways to how a user would generally use the software.
It is important then to note that test automation does not eliminate the requirement for manual testing. In line with best practise, it is suggested incorporating a combination of both testing environments to ensure the best possible coverage of the software. A combined use of both methods will provide good feedback and results to your developers much faster. Again, freeing up your QA team to test different areas of the software that wouldn’t otherwise get tested as often, and in turn increasing the quality of your product.