Test types

As any developer know or should now, test is an important phase of the SDLC (Software Development Life Cycle) and it is an important step to check if the application matches the requirements, if it works properly and if it is bug free or, at least, it has the less bugs as possible.

To try to achieve these goals, there are some different types of test, each one of them usually associated with one main objective or purpose. In this post, I am going to list six of them. Maybe, someone else knows other types, but those I am going to list are those what I have seen more along the different projects I have been:

Unit test

This kind of tests are focus in a very small unit of functionality. These are the most basic tests we can perform. We try to find if a little piece of code is working as expected, maintaining it isolated from the rest of the pieces of our program. Generally, one unit test is written for each method and usually mock techniques are used to maintain this isolation, especially to avoid things like network, databases or file system influence our tests.

Integration Tests

This should be the next step. Once we are sure the little pieces of our system are working, it is time to put all of them together and to see how the system is working and how the different little pieces are interoperating. In this point, we are going to find network problems, database problems, file system problems and, the most important, if there are some problems with the communication among the little pieces.

Functional Tests

Once we now the system is working properly, we need to check the correctness of the system. That means to test if the system, given the input defined in the specifications, returns the correct output.

Smoke Tests

These are very simple and, generally, basic tests performed after an installation or a new version. They usually are quick and they are designed to check if everything is working after a deploy.

Regression Tests

Sometimes, to correct a bug we need to add a patch to the system that affects the core areas in our system. In this case, we need to be sure that this core functionally is working correctly. In this case, we perform the Regression Tests.

Acceptance Tests

These tests are the last step. They check from the customers perspective the application and the different features are marked as accepted or rejected. They check if everything works fine and it matches customer’s expectations.

More or less, as you can see, I have listed the test in the order that they are going to be executed in any development. Starting from the point of view of the developers and finishing with the customers point of view.

See you.

Test types