In the validation of a new functionality, nobody questions that manual tests are the best option for the detection of defects. Now, what nobody can question is that they are slow and, therefore, repeating them is quite expensive both economically and temporarily.
In addition, as time goes by, new functionalities are added to the applications and there are
more features to try.
Because you have limited time and resources to test, only the new features are tested. But what happens if the development of a new feature causes a failure in parts of the application that had already been developed and tested and that previously worked correctly? Regression testing is required. This is precisely what automated tests are used for.
Creating automated tests allows you to expand your test coverage, detect defects earlier, and focus manual testing on what you really care about.
The main advantages of test automation are:
Repetitive work, which is transmitted to the computer, is eliminated.
Errors are reduced, since each repetition will be exactly the same each time it is executed, eliminating human error. This increases the reliability of the testing process.
They allow you to test both the visible and non-visible parts of the code.
They allow end users to verify that the software works as it should.
Its execution is significantly faster and more tests can be executed in less time.
But it also has some drawbacks:
The dependence on specialized personnel increases.
The return on investment manifests itself more in the long term.
Test equipment specialization.
High dependence on automation tools.
So, to automate or not to automate?
This simple question deserves deep reflection. Responses can range from "Automate everything" to "It's not worth automating anything." The first answer seems the most appropriate, but difficult to obtain, since it involves a lot of time and requires a budget. The second answer is never appropriate. So what should we automate?
To make this decision, we can look for answers to these questions:
Is the work involved in automation going to pay off in the future?
If it takes 10 hours to automate a 2-minute test that is only going to run about 10 times in the future, automation may not be a good idea.
Tests that can be automated quickly and easily are the best candidates, while complex tests that take a long time to automate are generally not a good choice.
Is the functionality to be tested going to change a lot in the future?
If there is a high probability that the functionality to be tested will undergo many changes, this is not a good candidate for automation, because it will require a lot of maintenance work.
Is the part of the application to be tested used frequently?
In general, the most used parts of an application are not good candidates for automation due to the maintenance costs that they can incur if users want to make changes to them. However, if the functionality is used often and remains stable, it can be a good candidate for automated testing.
Will you be able to detect regression errors with automated tests?
Detecting errors in parts of the application that have not been modified is one of the main reasons for creating automated tests. Regression errors can of course be found anywhere, but they are more likely to be detected in core parts of the application that are shared by different functionalities that have the same business logic. In this case, the best course of action is to create an automated unit test suite.
How many software versions do I need to maintain?
If only one or two versions of the application are kept in production, automation is recommended. If you keep longer, you should focus on manual testing, as maintenance costs can be quite high.
Is this a critical application functionality?
Critical parts of the application should be tested every time a small change is made to the application. Therefore, they are excellent candidates for automation (Smoke Test).
Conclusion
To automate or not to automate? The best answer to this dilemma is: "It depends." Of course, it is the best solution for the repetitive tests that must be carried out every time a new version of the application is received, but it is not always possible. Therefore, to make the decision, it will be necessary to take into account what is the cost and what is the benefit of the automation of the tests, weighing, among other issues, the knowledge of the tools to be used and the time available for the tests.
Comments