With the different stages or levels of the software development life-cycle, testing can be performed on unit, integration, system, or acceptance levels.
Unit testing helps to verify independent system components as for how they cope with the assigned tasks.
Conducting integration testing, QA specialists focus on the connections between functional blocks, the degree of their interaction with each other, the connection order, fault tolerance, and the impact they have on the system functioning. The key goal here is to verify the components' interaction and the operation of the functional subsystems.
System testing is run on the system level to check the entire system operation and whether the product fulfills the tasks it was created for.
Finally, acceptance testing is done to check software for acceptability, define its compliance with the business requirements, and readiness for the final release stage.