The basic concept of unit testing is to ensure that the smallest unit of your system can be tested, such as: Functions, classes, methods and in some cases even modules.
WHY : is to guarantee code assertiveness
WHO : Developers and some technical testers.
WHAT : Functions, classes, methods and modules (Less testable part)
WHEN : New code is written
WHERE : Most often local.
HOW : Junit, PHPUnit, Jasmine, etc.
Testing API or Services
It is a type of test to validate and evaluate the response of a given service, it can be REST or SOAP.
WHY : is to guarantee that the services are communicable and the responses & requests are working as expected
WHO : Developers and testers.
WHAT : New services implemented
WHEN : As soon as changes occur or a new API is developed
WHERE : Local and in test environments
HOW : Postman / Newman, SoapUI or even query via http for any programming language of your choice.
It is a phase of the testing process responsible for validating system and user requirements, before being deployed.
WHY : is to guarantee that the system requirements and the customer’s expectations are met
WHO : Testers
WHAT : User Story verification, field validation and verification of new features
WHEN : When functionality is finalised and unit tested
WHERE : Test and homologation environments.
HOW : Cucumber, Protractor and Jasmine, Selenium, Katalon Studio etc.
It is the test phase when we apply a new version of the system and ensure that no new bugs have been found.
WHY : is to guarantee that every system is working when new versions are implemented in an integrated manner
WHO : Testers, in some cases more agile the Business Analyst and the Product Owner.
WHAT : User flow, Positive flow, some performance and security stuff
WHEN : When the acceptance test is completed
HOW : Exploratory testing & using automated testing tools.
For me, the biggest difficulties were understanding why and when each type of test had to enter. So I hope I can help more people who, like me, felt this need!