Is Automated Software Testing the Way to Go?

“I see the job of manual testers changing a great deal. Any tests that can be scripted should be automated. We don’t need humans doing something that a machine can do. What we do want the human testers doing is exploratory testing.“, by Bob Martin in an interview

Testing is a crucial part of software development projects which reveals the true quality of software products. If there are any bugs or coding errors in the system, software testing can reveal those flaws and help to deliver successful applications. Deciding whether to take the manual or automated testing route is usually a challenge. 

That being said, the testing approach you decide to adopt should be guided by the unique requirements of your project, what stage of software development you’re in and the available resources, to mention a few. While automated testing may not cover ALL your testing needs, it definitely has lots of advantages.

I’ll start by describing what manual tests are: A person goes through multiple application screens, executes different test cases, compares the results to the expected behaviour and records their observations. While manual testing allows a tester perform significant exploratory testing, it can be time-consuming. On the other hand, automated testing is more efficient and less prone to human errors, though it has its own cons.

Automated testing is about recording and running test cases with a few clicks of the mouse. It has however, been criticized on the grounds of being costly. While some testing teams consider it an absolute boon, some don’t like it at all.

Being a test engineer, I faced the same question and realized that I prefer test automation. Before we start the debate, let me point out the reasons behind my support for automated testing.

Automated Testing:

Saves Time & Cost - Testing is generally a time-consuming process but automation reduces the time spent testing drastically. Test cases can be run several times on different operating systems and browsers without compromising the results. With the help of test automation tools, tests can be run at night or after office hours to ensure work hours are better utilized. Moreover, test cases can be configured and run repeatedly which also saves time.

Makes Regression Testing Easier Regression testing is basically retesting an application when a new feature is added or a change is made to an existing feature. The main goal of regression testing is to ensure that the application works as expected after modifications. To verify this, you have to re-run all the test scripts potentially impacted by the change. Manual tests are more difficult to run in this instance, because of impending project deadlines which may cause testers to overlook or skip some tests. With automated testing however, you can run your regression tests without applying any extra effort.

Guarantees Repeatability - In cases where tests need to be repeated, the job can be done effortlessly with automated testing. You can run the same tests in exactly the same manner, eliminating the risk of human errors. Hence, automated testing seems more suitable for repeated testing. The greatest efficiency occurs with mature software products where the UI and workflow are locked down and unlikely to change.

Assists Developers and Testers - Functional and regression testing can be executed without human intervention, allowing developers to concentrate on key issues like the security and performance of their applications. Moreover, automated testing runs the source codes of applications and notifies developers and testers of bugs. This saves time and increases their confidence.

Increases Coverage - Automated testing allows the execution of lengthy tests that are often missed in manual tests covering data, files, memory, internal programs, etc. With automated testing, testers can increase the depth and scope of complex test cases which can result in increased test coverage and reduced errors.

Detects bugs - Automated testing tools often inherit inbuilt bug detection capabilities which help in identifying bugs without investing additional effort and time.

All the aforementioned aspects of test automation form the basis of my inclination towards it. If you have the benefit of technology, why not use it to increase your productivity level? Better still, if you can have both, why not?