В чем разница между модульным, интеграционным, системным и приемочным тестированием?

«В чем разница между модульным, интеграционным, системным и приемочным тестированием?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Это уровни тестирования, отличающиеся масштабом проверяемых компонентов и целями.

Уровень Объект тестирования Цель Пример
Модульное (Unit) Отдельная функция, метод или класс в изоляции. Проверить корректность работы минимальной единицы кода.

def test_calculate_discount():
    assert calculate_discount(100, 0.1) == 90  # 10% скидка
``` |
| **Интеграционное** | Взаимодействие нескольких модулей, систем или сервисов (например, приложение + БД + API). | Обнаружить дефекты на стыке компонентов. | Тест, что данные из формы корректно сохраняются в базе данных и возвращаются через API. |
| **Системное** | Полностью интегрированная система как единое целое. | Проверить соответствие системы техническим требованиям в среде, близкой к production. | Сквозной (E2E) тест полного пользовательского сценария в готовом приложении. |
| **Приемочное (UAT)** | Вся система с точки зрения бизнес-требований. | Подтвердить, что система готова к выпуску и удовлетворяет потребностям заказчика/пользователя. | Финальная проверка ключевых сценариев заказчиком перед релизом. |

**Пирамида тестирования** рекомендует иметь много модульных, меньше интеграционных и еще меньше системных/приемочных тестов.