Dynamic testing is conducted while executing a program and is done by levels (test activities are consolidated into groups to test software at certain developmental stages). Here we test both separated elements and the whole system. Test levels refer to different activities of the development lifecycle because system responses change during the development process.
Acceptance testing is needed to ensure the quality of the whole system, its behavior and capabilities, validate its work, and verify functional and non-functional requirements of the product or service to ensure the end customer can use the system correctly. It is usually done via user acceptance testing (UAT) and operational acceptance testing (OAT).
As acceptance testing, system testing is about the abilities and demeanor of the whole system concentrated on fixing security issues and defects and preventing them from occurring, verifying non-functional requirements, building trustworthy quality of product or service, and validating the working process.
Integration testing is a type of testing aimed at assessing the quality of interaction between components of a software system or an entire application with other components or software, e.g., API testing. This type of testing is designed to reduce risks, ensure the quality of the system interface, find and prevent defects, and verify the work of functional and non-functional requirements.
Unit (module or component) testing is focused on testing certain elements of the system separately to reduce risks, prevent bugs, fix those that have already occurred, and validate the behavior of the system (both functional and non-functional).