Нино закончила курсы программирования и сразу устроилась в аутсорсинговую компанию.
Первый проект — CRM для логистической компании. Техлид сказал написать тесты для модуля расчета стоимости доставки. Нино написала 50 тестов за неделю и считала задачу выполненной.
Проблема обнаружилась через два месяца
Клиент сообщил: система неправильно считает стоимость при выборе экспресс-доставки в определенные регионы.
Все 50 тестов Нино проходили успешно. Как такое возможно?
| Характеристика | Unit-тесты Нино | Интеграционные тесты |
| Что проверяют | Функцию расчета изолированно | Связку: БД + расчет + API + валидация |
| Скорость выполнения | 0.3 секунды все 50 штук | 8 секунд на 15 сценариев |
| Найденные баги | Логические ошибки внутри функции | Проблемы взаимодействия модулей |
| Сложность написания | Простые, понятные | Требуют настройки окружения |
Разбор полетов с сеньором
Старший разработчик Зураб показал Нино реальную картину.
Ее unit-тесты проверяли функцию calculateShippingCost с захардкоженными параметрами. Функция работала корректно. Но в реальной системе данные проходили через три слоя: валидацию форм, преобразование в API, запрос тарифов из базы.
Баг прятался на стыке модулей. API возвращал код региона в формате строки, а функция ожидала число. Unit-тесты этого не видели — они работали с чистыми данными.
Переписывание подхода
Нино потратила следующие две недели на изучение разницы.
Она создала новую таблицу тестового покрытия для своего модуля:
- 35 unit-тестов — быстрая проверка логики функций
- 12 интеграционных — проверка цепочек взаимодействия
- 5 end-to-end — имитация действий пользователя
Что изменилось на практике? Unit-тесты запускались при каждом сохранении файла — мгновенная обратная связь. Интеграционные — перед коммитом в репозиторий. E2E — перед релизом.
Второй кейс: модуль авторизации
Через три месяца Нино делала систему входа.
На этот раз она сразу разделила тестирование:
| Уровень | Количество | Что ловят |
| Unit | 28 | Хеширование паролей, валидация email |
| Интеграция | 9 | Связка БД-сервер-токены |
| E2E | 4 | Полный флоу входа пользователя |
Результат? Ни одного критического бага в продакшене за четыре месяца работы модуля.
Нино поняла главное: unit-тесты отвечают на вопрос работает ли функция, интеграционные — работают ли функции вместе
Теперь она начинает любой модуль с карты зависимостей. Видит изолированные функции — пишет unit-тесты. Видит взаимодействие компонентов — добавляет интеграционные.