There has been a recent surge in test automation within the software development industry, especially for those that have adopted the Agile development methodology. But why waste your time?
Why waste your time manual testing?
Manual testers are relatively cheap and easy to train. So in the short term, it's understandable why manual testing would seem advantageous for a greenfield project or a small start-up. But as the product grows, more manual testers are hired, and the cost to test software goes up exponentially. Not only is it then costly, but it is also time consuming, and prone to human error. Before too long, a project will require so many hours to manually regression test, that it either slows down the development process, and/or software is released with a lot of bugs that could end up costing even more money. One of the most costly bugs in recent memory was less than a year ago when Google's DoubleClick for Publishers Ad server, which accounts for just under $1,900 per second of revenue ($60 billion annually), was down for almost 2 hours. Thankfully, there is another option...test automation!
Why waste your time developing test automation?
Although it may already be clear which camp I am rooting for, there are a few obstacles that other companies will have to consider. The most obvious being money. Hiring someone with the skill-set to develop test automation is as costly as hiring another software developer, and in fact, their skill-sets are almost identical. There is also the obstacle of time. It takes time to set up a framework, create and or convert manual test plans into re-usable and repeatable domain specific code, and to create coded page support to have fully functioning test automation. But the advantages outweigh these at almost every turn. Once test automation is complete, automated smoke tests can be inserted into the existing CI process as a safety net to catch upstream code changes that could break your project. Full regression tests can be scheduled to run during off-hours, which generates reports that ensure a quality product. Developers and Testers can quickly kick off the test automation locally to ensure a code change won't impact their team, or another team. The benefits could go on and on, especially with the iterative nature of Agile development. And automating the core functionality of a project will free up manual testers to focus their energy on edge or fringe scenarios, further hardening the code.
I hope that this post helps someone see the advantages of software test automation. I will be continuing this series, speaking more specifically to test automation as it relates to mobile software; from setup, to coding, to integrating with a current CI process, and many of the tips and trick I have learned along the way, so stay tuned!