BENEFITS OF UNIT TESTS
Unitary tests or Unit testing, are part of the different procedures that can be carried out within the agile methodology. They are mainly pieces of code designed to verify that the main code is working as expected. Small tests created specifically to cover all the requirements of the code and verify their results.
The process that takes place consists of three parts. The Arrange, where the requirements that the main code must meet are defined. The Act, the creation process, where we are accumulating the results that we will analyze. And the Assert, which is considered the moment when we check whether the grouped results are correct or incorrect. Depending on the result, it is validated and continued, or repaired, so that the error disappears.
Characteristics of the unit tests
- Automatable; although the results must be specific to each unit test developed, the results can be automated, so that we can do the tests individually or in groups.
- Complete; the process consists of small tests on part of the code, but in the end, it must be checked completely.
- Repeatable; In the case of repeating the tests individually or in groups, the result must always be the same regardless of the order in which the tests are carried out, the tests are stored in order to perform these repetitions or to be able to use them in other occasions.
- Independent It is an isolated code that has been created with the mission of checking another very specific code; it does not interfere in the work of other developers.
- Quick to create; In spite of what many developers think, the code of the unit tests should not take more than 5 minutes to be created, they are designed to make the work faster.
Advantages of unit tests
- It provides an agile work; as an agile procedure, it allows you to detect errors in time, so you can rewrite the code or correct errors without having to go back to the beginning and redo the work. Since the small ones are made periodically and in small packs. Decreasing time and cost.
- Quality of the code; by continuously testing and detecting errors, when the code is finished, it is a clean and quality code.
- Detect errors fast; Unlike other processes, unit tests allow us to detect errors quickly, analyze the code by parts, doing small tests and periodically, in addition, the tests can be performed as many times as necessary until the optimum result is obtained.
- It facilitates changes and favors integration; unitary tests allow us to modify parts of the code without affecting the whole, simply to be able to solve bugs that we find along the way. Unit tests, being broken down into individual blocks allow the integration of new contributions to make a more complex code or update it depending on what the client demands.
- Provide information; Thanks to the continuous flow of information and the overcoming of errors, a great amount of information can be gathered to avoid future bugs.
- Debugging process; Unit tests help in the debugging process. When an error or bug is found in the code, it is only necessary to break down the piece of code tested. This is one of the main reasons why unit tests are done in small pieces of code, greatly simplifies the task of solving problems.
- The design; if the tests are first created, it is much easier to know in advance how we should approach the design and see what needs to be met. Testing a piece of the code, you can also know what requirements it must meet, and for that reason it will be much easier to achieve cohesion between the code and the design.
- Reduce the cost; based on the basis that errors are detected in time, which means having to write less code, design while creating and optimize delivery times, we see a clear relationship with an economic reduction.
It is necessary to know that the unit tests by themselves are not perfect, since they check the code in small groups, but not the total integration of the same. To see if there are integration errors it is necessary to carry out another type of joint software tests and in this way check the total effectiveness of the code.