Ответ
Уровни тестирования определяют что и когда тестировать в процессе разработки ПО. Основные уровни, расположенные по принципу «снизу вверх»:
-
Модульное тестирование (Unit Testing)
- Цель: Проверить корректность работы наименьших неделимых единиц кода (функций, методов, классов) в изоляции от других частей системы.
- Кто выполняет: Разработчики.
-
Пример (Python, pytest):
# Тестируемая функция def calculate_discount(price, discount_percent): return price * (1 - discount_percent / 100) # Модульный тест def test_calculate_discount(): assert calculate_discount(1000, 10) == 900 assert calculate_discount(0, 50) == 0
-
Интеграционное тестирование (Integration Testing)
- Цель: Проверить взаимодействие и корректность обмена данными между несколькими модулями, компонентами или внешними системами (API, базы данных, микросервисы).
- Пример: Тестирование работы контроллера веб-приложения с сервисным слоем и базой данных.
-
Системное тестирование (System / End-to-End Testing)
- Цель: Проверить целостную систему на соответствие функциональным и нефункциональным требованиям. Тестируется готовый продукт в среде, максимально приближенной к боевой.
- Пример: Автоматизированные UI-тесты, которые имитируют действия пользователя в браузере или мобильном приложении.
-
Приемочное тестирование (Acceptance / UAT Testing)
- Цель: Убедиться, что система готова к выпуску и удовлетворяет бизнес-требованиям и потребностям конечного пользователя или заказчика.
- Кто выполняет: Заказчик, продукт-менеджер или тестировщики на основе пользовательских сценариев.
Дополнительные, сквозные типы тестирования, которые могут выполняться на разных уровнях:
- Регрессионное тестирование — проверка после изменений.
- Дымовое тестирование (Smoke Testing) — поверхностная проверка стабильности ключевых функций перед запуском более глубокого тестирования.