The process would be as follows:
Within this development methodology, we can distinguish between two types of tests:
Manual tests are those carried out by people who navigate and interact with the software. It requires the person in charge to set up an environment for testing and to have a good understanding of the software. These tests are exposed to human errors.
Automated tests run a code to verify that features work properly and return the expected results. They are faster and more reliable than manual ones, but they depend on your code being well developed.
There are many types of tests to apply TDD. Here we will name just a few:
|Unit tests||which I will talk about in more detail in another article, consist of individually testing functions, methods, classes, components, etc.; that are used in the project.|
|Integration tests||verify that the different modules or services work in harmony when they work together, interacting with each other.|
|Property tests||are those that validate properties of the code.|
|Functional tests||verify the output of an action, its result, without paying attention to the intermediate states while the execution is carried out.|
|End-to-end tests||replicate user behavior and verify that the flows followed by the user work as expected. It can be things as simple as logging in or loading a page, like checking email notifications or online payments..|
|Regression testing||checks a set of scenarios that worked correctly in the past to ensure that they continue running that way. A failure in one of these tests means that a new functionality has affected another operation that was working fine previously.|
|Smoke testing test||the basic and general functionality of an application ensuring that the most important features are executed as expected.|
|Acceptance testing||verifies that a system meets business requirements. They are usually carried out when the development phase has finished.|
|Performance testing||they verify how the system responds when it is under a high load. They are used, for example, to observe the response times when a high number of requests are executed and to see the reliability and stability of the system in the face of a significant amount of data.|