24 сентября 2025
Блог
Снижение API-хаоса: наш опыт унификации для тестирования
Когда автоматизация тестирования превращается в «хаос инструментов», компания теряет не только часы работы инженеров, но и уверенность в качестве продукта. Наш опыт перехода с Postman на Cypress показал: консолидация — это стратегический шаг, который напрямую влияет на скорость релизов и стабильность бизнеса.
Проблема: разрозненность инструментов
В компании имелся зрелый проект с высоким уровнем автоматизации. Часть его автоматизирована с помощью API и E2E тестов в Cypress. Но так было не всегда: до недавнего времени API-тесты и E2E-тесты существовали в двух параллельных мирах.
- Postman использовался для API-тестов, которые исторически пришли от аналитиков (они описывали требования именно так, и на первых этапах это было удобно).
- Cypress применялся для E2E-тестов.
На практике это разделение означало лишнюю операционную нагрузку и скрытые издержки:
1) Риск ошибок и устаревших данных
Коллекции Postman приходилось постоянно импортировать и экспортировать. Даже с интеграцией в Git возникали ситуации, когда инженеры тратили до 20% времени на работу с неактуальной версией тестов. В итоге появлялись ложные срабатывания или, что хуже, риск того, что дефекты уйдут в прод.
2) Потери времени на синхронизацию
Чтобы добавить новый тест, инженеру нужно было:
- Импортировать свежую коллекцию в Postman;
- Написать тест и обновить коллекцию;
- Сделать экспорт и загрузить ее обратно в репозиторий.
Этот процесс занимал до 1–2 часов в день, отрывая команду от написания новых проверок и развития покрытия.
3) Неудобное ревью и дублирование логики
Коллекции представляли собой длинные «портянки» кода без явной структуры, за счет чего проводить ревью было сложно, а переменные могли задаваться в трех местах сразу (окружение, коллекция, сам тест). Такая гибкость часто оборачивалась неожиданными результатами и «плавающими» багами.
4) Лицензионные ограничения
В бесплатной версии Postman существует лимит на количество прогонов коллекций (25 в месяц), при достижении которого вводится 30-секундное ожидание перед очередным запуском. Соответственно появляются дополнительные затраты на лицензирование.
Каждый по отдельности фактор не фатален, но в совокупности скорость проверок существенно теряется. Именно это подтолкнуло нас к решению - перенести API-тесты в Cypress и объединить все в единой экосистеме.
Решение
Стратегия миграции
Мы подошли к задаче не как к банальному переписыванию тестов, а как к стратегической миграции. Главная цель - создать единое тестовое пространство, где API- и E2E-тесты живут по одним правилам и работают в общей инфраструктуре.
Для осуществления данной задачи было необходимо:
- Подготовить инфраструктуру для запуска API тестов.
- Адаптировать написанный в Postman API тест под Cypress
- Перенести тесты и заглушки к ним
Чтобы минимизировать риски, мы начали с пилота: перенесли один API-тест и адаптировали его под Cypress. На этом этапе проверили, насколько реалистичен подход, и показали результаты команде - техлиду и SDET. После утверждения прототипа подключились все QA, работая по готовому шаблону и ускоряя процесс.
Техническая адаптация
Для запуска API-тестов в Cypress была подготовлена новая инфраструктура:
- автоматическая загрузка заглушек на Wiremock,
- очистка кэша перед каждым запуском,
- единый сценарий авторизации.
Мы отказались от «портянок» Postman-коллекций и разбили каждый тест на отдельный файл с понятной структурой. Это позволило унифицировать подход к окружениям: теперь параметры задаются единым механизмом, а не через несколько независимых уровней, как это было в Postman.
(Тест в json коллекции Postman. Моки для теста находятся тут же и в целом данный тест занимает 260 строк кода)
(Пример того же теста в Cypress. Моки хранятся отдельно, прогружаются на этапе preparatoryStepsApi. Тест занимает 52 строки.)
Масштабирование
После успешного пилота к миграции подключились пять инженеров QA. В результате в Cypress было перенесено 50+ API-тестов вместе со всеми заглушками.
В итоге мы не просто «переехали» с одного инструмента на другой. Мы переосмыслили процесс тестирования, сделали его частью единой экосистемы и убрали узкие места: ручные операции, дублирование переменных и разрозненность контуров. Cypress стал центральной точкой для всей автоматизации.
Результат
- Ускорение CI/CD: теперь тесты запускаются напрямую из кодовой базы, без ручных шагов импорта/экспорта, что устранило задержки и снизило вероятность ошибок синхронизации.
- Единый механизм окружений: параметры передаются централизованно. Мы устранили до 90% «плавающих» багов, связанных с разными наборами переменных в Postman и Cypress.
- Удобный Code Review: каждый тест - это отдельный файл с понятной структурой, что сократило время ревью почти вдвое.
- Гибкость и экономия: использование Cypress снимает лицензионные ограничения, которые есть при использовании бесплатной версии Postman: запуски тестов делаются без ожидания. Тесты можно запускать столько раз, сколько необходимо бизнесу, без дополнительных затрат.
- Прозрачность для всей команды: результаты прохождения выглядят более наглядно. Анализ ошибок стал быстрее, а коммуникация между ролями - проще.
Инвестиция в инфраструктуру тестирования
Переезд API-тестов из Postman в Cypress доказал, что унификация инструментов приносит пользу не только команде, но и бизнесу. Инвестиции в инфраструктуру окупились, мы получили:
- более быстрый и предсказуемый процесс поставки,
- снижение рисков выпуска с дефектами,
- рост эффективности QA и разработчиков,
- повышение прозрачности на всех уровнях.
Также большим плюсом переезда API-тестов стала возможность оптимизировать pipeline. Время прохождения stage API-тестов сократилось с 22 минут до ~7-8 минут и укрепило главный результат миграции - баланс скорости и качества.