Модульное (unit) — проверяет отдельный кусок кода в изоляции: функцию, метод, класс. Зависимости подменяют заглушками. Быстрые, их много, пишут разработчики.
Интеграционное — проверяет, как части работают вместе: сервис и база, два микросервиса, приложение и внешний API. Ловит ошибки на стыках: разный формат данных, таймауты, неверные контракты.
Системное — продукт целиком в окружении, близком к реальному: сквозные сценарии, функциональные и нефункциональные проверки. Основная зона ручного тестировщика.
Приёмочное (acceptance, UAT) — проверка, что продукт решает задачу и его можно принимать: по критериям приёмки, часто вместе с заказчиком или бизнесом.
Пирамида тестирования (Майк Кон) описывает баланс автотестов: в основании много unit-тестов — дешёвых, быстрых и стабильных; выше — меньше интеграционных и API-тестов; на вершине — немного UI и e2e, потому что они медленные, дорогие и чаще ломаются из-за мелочей в интерфейсе. Если тестов UI больше, чем unit, говорят о «перевёрнутой пирамиде» или «рожке мороженого».