If you ask me that question, I would reply with just three words, “Return on Investment”. Below, I’ll explain why.
But before I start, how does manual testing work?
Manual software testing is, basically, having a human sitting in front of a computer carefully going through application screens. He or she is trying various usage and input combinations, comparing the results to the expected behavior and recording their observations.
Manual tests are repeated often during development cycles, for source code changes and other situations like multiple operating environments and hardware configurations.
Nowadays it’s common to deal with large systems, different platforms (web, mobile), different operative systems and different devices. This is wonderful if we think of the scope that we can reach with our application, but it is not that wonderful if we think of all the different scenarios, (basically platforms vs OS) that we have to deal with.
Here is when the Quality Control (QC) guys spring into action.
Making sure that everything works as expected before each release is an important task that every company must perform. This means testing all the “happy paths” and other scenarios, as well as making sure that everything works fine. It could take days, even weeks if the application is huge.
That runs up the cost, which is something that everyone definitely wants to avoid. ☺ So, we turn to automated QC. Below you will find a couple of key benefits to automating the QC process:
1. Decrease your regression testing time:
The cascade development method has not the same benefits than Agile process, so we are talking about iterations for the development process. Each sprint represents one iteration, so, the more iterations you do, the more scenarios you get to test. It’s an incremental process.
This means, basically, that the more time you spend on iterations, the more time the regressions will take (regressions are what ensures the continuous system stability and functionality after changes to the software were made).
And of course time equals money. Quite simply, automating the QC process will allow you to decrease your regression time, thus saving not only time but money as well.
Think about it this way: regression takes a full week if done manually. A continuous integration system, on the other hand, will have this done in a couple of hours. Sounds good, doesn’t it?
Increase your coverage:
Usually, sufficient test coverage of software projects is achieved only with great effort. Frequent repetition of the same or similar test cases means time spent performing them manually. Some examples are:
- Regression testing after debugging or further development of software
- Testing of software on different platforms or with different configurations
- Data-driven testing (creation of tests using the same actions but with many different inputs)
Test automation allows performing different types of testing efficiently, effectively and quickly.
Get more reliable results:
The automated testing programs don’t get tired, they’re not in a hurry to go home on Friday, they don’t get distracted while executing their tests, and they are not rushed (and therefore prone to mistakes) when a deadline is looming.
One thing that we love about automated QC is that when developed correctly, this system is less prone to human error. Unless the business rules change, you will get always the same result, 100% assured.
This is of utmost importance because your decision to go live is ultimately dependent on the results of QC testing.
Reusability and Scheduling:
You can always reuse your test to create others which are more complex. What’s more, you can reuse functions, classes and more.
Scheduling is something everyone loves, because you can set the test to run during the night and get the reports delivered to your inbox the morning after. Then, it’s simply a matter of scanning those reports to make sure everything went fine. If not, you can quickly fix the problem identified during the night.
Once you have the tests developed and your environment configured, you can run them as often and whenever you want for no extra cost.
Automated tests can run quickly and frequently, which is a cost-effective solution for software products that have a long maintenance life. When testing in an agile environment, the ability to quickly react to ever-changing software systems and requirements is necessary. In order to incorporate those changes, a good automated project can be easily scaled.
Functional scenarios aren’t the only aspects of your project that can be automated. Automation also applies to the following:
- your performance automated test case suit
- your stress test case suit
- your sanity test case suit
- your API test case suit
And of course each carries with it the same benefits as described above. By the way, for performance and stress testing you don’t have much choice, since the alternative is having thousands of manual testers working at the same time ☺.
So, what are the cons?
One possible downside is the cost of licences and hardware. Another is that automated tests cannot verify things which are only perceptible by a human, like UX concerns. You must consider whether the higher price per hour of an automated QC system is a cost-effective path for your business to take.
Aside from that, it’s important to decide what to test and here I have to be honest with you, it’s not always possible to automate everything. You and your QC team will need to decide what to automate.
There are different options to fulfill each need, but these options will require some investment, as will the infrastructure which will be running your automated test. Of course there are many different open source options as well. You simply need to evaluate your benefit vs cost for each of those, and see which will work better for you, your team, and the needs of your business.
That being said, it’s clear that we are talking about mid- to long-term investment. Keep in mind, as I noted earlier, it is not always possible to automate everything.
Please, however, understand that I’m not talking about getting rid of the manual testers altogether. They are still needed for more complex scenarios, or new features. You will always need to alter the automated test for various reasons, or you will need to test UX, or a new feature, complex scenarios, or edge cases. Again, here is where the human testers spring into action.
Automation will give you:
- lower regression time
- quick and reliable results
- a quick snapshot of the application’s state
Finally, remember that the decision to automate QC is business-specific. In other words, only you can decide, based on your needs, the future direction of your company, scalability and robustness.
My suggestion is to go with the best of both worlds: a good automated suite as well as a group of manual testers (the team’s size will depend on your app’s size plus your development team size) and use automated QC process in mid-long term stable projects.
Most importantly, remember that a 100% bug-free application doesn’t exist. The QC process aims to get it to a point where there are as few bugs as possible.The more you test, the fewer bugs you have, and the fewer bugs you have, the less time spent fixing them. The less time fixing those, the less development hours you spend. And so, we go back to the original concept I began with in this post: this is all about return on investment.