Уровни: модульное, интеграционное, системное, приёмочное
От одной функции до всей системы глазами заказчика — четыре уровня проверки.
Уровни тестирования — это масштаб проверяемого: от отдельного модуля (unit) через связки (integration) и всю систему (system) до приёмки заказчиком (acceptance).
Четыре уровня по нарастанию масштаба
| Уровень | Объект проверки | Вопрос |
| Модульное (unit) | Одна функция или класс в изоляции | Правильно ли работает кирпичик? |
| Интеграционное (integration) | Взаимодействие нескольких модулей | Правильно ли они стыкуются? |
| Системное (system) | Готовая система целиком | Соответствует ли система требованиям? |
| Приёмочное (acceptance) | Система глазами заказчика/пользователя | Принимает ли заказчик результат? |
Модульное
Проверяет наименьшую единицу — функцию, метод — отдельно от остального. Зависимости заменяют заглушками. Быстрое и точное.
Интеграционное
Когда отдельные модули по-отдельности работают, важно проверить их стыки: правильно ли функция оплаты вызывает функцию начисления бонусов, верно ли код общается с базой. Многие баги живут именно на границах.
# Два модуля: расчёт цены и расчёт бонусов
def price_with_tax(price):
return round(price * 1.2, 2) # модуль 1: +20% налог
def bonus(price_paid):
return int(price_paid // 100) # модуль 2: 1 бонус за каждые 100
# Интеграционная проверка: связка двух модулей вместе
def checkout(price):
paid = price_with_tax(price)
return paid, bonus(paid)
paid, pts = checkout(1000)
assert paid == 1200.0 # цена с налогом
assert pts == 12 # бонусы с уже оплаченной суммы
print(f"Интеграция ок: оплачено {paid}, начислено {pts} бонусов")
Вывод:
Интеграция ок: оплачено 1200.0, начислено 12 бонусов
Системное и приёмочное
Системное проверяет всё приложение целиком против требований — функциональность, производительность, поведение в реальных сценариях. Приёмочное (acceptance) отвечает на вопрос «готов ли продукт к сдаче»: его часто проводит заказчик или формулирует в виде пользовательских сценариев (UAT). Приёмочное — это уже валидация: то ли мы построили.
Итог
- Unit — отдельный кирпичик; integration — стыки модулей.
- System — вся система против требований; acceptance — приёмка заказчиком.
- Много багов прячется на границах между модулями — отсюда важность интеграционного уровня.