1. Введение в тестирование бэкенда и тестовая стратегия
Введение в тестирование бэкенда и тестовая стратегия
Бэкенд — это часть системы, которая обрабатывает запросы, выполняет бизнес-логику, работает с данными и взаимодействует с другими сервисами. Пользователь не видит бэкенд напрямую, но ощущает его качество через скорость, стабильность, корректность ответов и безопасность.
Тестирование бэкенда — это проверка того, что сервис:
Эта статья задаёт общий язык и рамки: какие виды тестов бывают, что именно мы проверяем в бэкенде и как собрать тестовую стратегию, которая выдержит рост продукта и команды.
Что именно мы тестируем в бэкенде
Типичный бэкенд-сервис состоит из нескольких слоёв:
Именно на этих границах чаще всего возникают дефекты: расхождение контрактов, неверная обработка ошибок, гонки в данных, неправильные таймауты, неучтённые сценарии.
!Упрощённая карта слоёв и зависимостей, где чаще всего нужны разные типы тестов
Почему нельзя ограничиться только end-to-end тестами
Проверять систему только через «пользовательские» сценарии (E2E) кажется логичным, но на практике это приводит к проблемам:
Поэтому в индустрии часто используют идею пирамиды тестирования как эвристику: больше быстрых тестов на низком уровне, меньше дорогих на высоком.
!Визуальная эвристика о балансе уровней тестов
Источник концепции и практических рекомендаций: The Practical Test Pyramid (Martin Fowler)
Уровни тестирования бэкенда
Ниже — базовая классификация, которую мы будем использовать дальше в курсе.
| Уровень | Что проверяем | Что обычно изолируем | Примеры для бэкенда | |---|---|---|---| | Unit | одну функцию/класс/модуль | БД, сеть, время, внешние сервисы | расчёт скидки, маппинг DTO, правила статусов | | Integration | взаимодействие нескольких модулей и инфраструктуры | часть внешних зависимостей | репозиторий + реальная БД, обработчик + очередь в тестовом контейнере | | Component / Service | сервис как «чёрный ящик» по API, но без реальных внешних систем | внешние API через стабы/моки | тесты REST/gRPC эндпоинтов с тестовой БД | | Contract | совместимость интерфейсов между сервисами | бизнес-реализацию другой стороны | consumer-driven контракт для внешнего API, схема сообщений | | End-to-End | пользовательский поток через всю систему | ничего (или минимум) | создание заказа → оплата → доставка с реальными интеграциями |
В разных командах термины могут отличаться. Важно, чтобы в вашей стратегии было явно прописано: какие тесты у вас есть и какие риски они закрывают.
Полезный словарь терминов: ISTQB Glossary
Что такое тестовая стратегия
Тестовая стратегия — это договорённость в команде о том:
Стратегия нужна не ради документа, а чтобы решения были последовательными: почему мы добавляем контрактные тесты, но не плодим E2E; почему для критичного модуля делаем больше интеграционных проверок; почему для каждого бага заводим регрессионный тест.
Из чего состоит практичная стратегия для бэкенда
Ниже — «скелет» стратегии, который можно применять почти в любом проекте.
Цели и критерии качества
Определите, что для продукта важнее всего:
Хорошая практика — формулировать проверяемо. Например: «все публичные API возвращают согласованный формат ошибок» или «критичные операции идемпотентны при повторе запроса».
Область тестирования и границы
Зафиксируйте:
Это помогает избегать ситуаций, когда тесты «случайно» начинают зависеть от нестабильной внешней песочницы.
Риски и приоритеты
Практичный подход — строить стратегию от рисков. Примеры типичных рисков в бэкенде:
Под риски выбираются уровни тестов: критичная логика получает больше unit и интеграционных тестов; интеграции — контрактные и компонентные проверки.
Набор тестов по уровням и их роль
Одна из рабочих конфигураций для микросервисного API:
Важно: стратегия — это не «чем больше тестов, тем лучше», а баланс скорости, надёжности и стоимости поддержки.
Тестовые данные и воспроизводимость
Бэкенд-тесты часто ломаются не из-за кода, а из-за данных. Стратегия должна ответить:
now, используем фейковые часыПринцип: тест должен быть воспроизводимым и независимым от порядка запуска.
Работа с внешними зависимостями
Для бэкенда критично определить политику:
Типичная ошибка — мокать слишком низко и получать тесты, которые «проходят», но сервис не работает в реальности.
Нефункциональное тестирование (минимальный обязательный набор)
Даже в первой версии стратегии стоит зафиксировать, как вы проверяете:
Дальше в курсе эти темы будут расширяться и встраиваться в CI/CD.
Автоматизация и CI/CD: где и что запускается
Стратегия должна явно отвечать, какие проверки где выполняются:
!Пример того, как уровни тестов раскладываются по этапам CI/CD
Мини-пример: как «перевести» требование в проверки
Требование: «Эндпоинт создания заказа должен валидировать входные данные и не создавать дубль при повторной отправке запроса».
Кандидатный набор тестов по стратегии:
POST /orders и повтор того же запроса, проверка одинакового результата и отсутствия дублейТак стратегия помогает не «угадывать», а системно выбирать тесты.
Типичные ошибки начинающих
Что будет дальше в курсе
В следующих материалах курса мы будем последовательно углубляться:
Эта статья — опорная. Возвращайтесь к ней, когда будете выбирать: какой уровень теста нужен и почему он должен жить именно в пайплайне, а не только локально.