24 сентября 2025

Блог

Тестирование

Снижение API-хаоса: наш опыт унификации для тестирования

Когда автоматизация тестирования превращается в «хаос инструментов», компания теряет не только часы работы инженеров, но и уверенность в качестве продукта. Наш опыт перехода с Postman на Cypress показал: консолидация — это стратегический шаг, который напрямую влияет на скорость релизов и стабильность бизнеса.

Проблема: разрозненность инструментов

В компании имелся зрелый проект с высоким уровнем автоматизации. Часть его автоматизирована с помощью API и E2E тестов в Cypress. Но так было не всегда: до недавнего времени API-тесты и E2E-тесты существовали в двух параллельных мирах.

  • Postman использовался для API-тестов, которые исторически пришли от аналитиков (они описывали требования именно так, и на первых этапах это было удобно). 
  • Cypress применялся для E2E-тестов. 

На практике это разделение означало лишнюю операционную нагрузку и скрытые издержки:

1) Риск ошибок и устаревших данных

Коллекции Postman приходилось постоянно импортировать и экспортировать. Даже с интеграцией в Git возникали ситуации, когда инженеры тратили до 20% времени на работу с неактуальной версией тестов. В итоге появлялись ложные срабатывания или, что хуже, риск того, что дефекты уйдут в прод. 

2) Потери времени на синхронизацию

Чтобы добавить новый тест, инженеру нужно было:

  1. Импортировать свежую коллекцию в Postman;
  2. Написать тест и обновить коллекцию;
  3. Сделать экспорт и загрузить ее обратно в репозиторий.

Этот процесс занимал до 1–2 часов в день, отрывая команду от написания новых проверок и развития покрытия.

3) Неудобное ревью и дублирование логики

Коллекции представляли собой длинные «портянки» кода без явной структуры, за счет чего проводить ревью было сложно, а переменные могли задаваться в трех местах сразу (окружение, коллекция, сам тест). Такая гибкость часто оборачивалась неожиданными результатами и «плавающими» багами.

4) Лицензионные ограничения

В бесплатной версии Postman существует лимит на количество прогонов коллекций (25 в месяц), при достижении которого вводится 30-секундное ожидание перед очередным запуском. Соответственно появляются дополнительные затраты на лицензирование.

Каждый по отдельности фактор не фатален, но в совокупности скорость проверок существенно теряется. Именно это подтолкнуло нас к решению - перенести API-тесты в Cypress и объединить все в единой экосистеме.

Решение

Стратегия миграции

Мы подошли к задаче не как к банальному переписыванию тестов, а как к стратегической миграции. Главная цель - создать единое тестовое пространство, где API- и E2E-тесты живут по одним правилам и работают в общей инфраструктуре.

Для осуществления данной задачи было необходимо:

  1. Подготовить инфраструктуру для запуска API тестов.
  2. Адаптировать написанный в Postman API тест под Cypress
  3. Перенести тесты и заглушки к ним 

Чтобы минимизировать риски, мы начали с пилота: перенесли один API-тест и адаптировали его под Cypress. На этом этапе проверили, насколько реалистичен подход, и показали результаты команде - техлиду и SDET. После утверждения прототипа подключились все QA, работая по готовому шаблону и ускоряя процесс.

Техническая адаптация

Для запуска API-тестов в Cypress была подготовлена новая инфраструктура:

  • автоматическая загрузка заглушек на Wiremock, 
  • очистка кэша перед каждым запуском, 
  • единый сценарий авторизации. 

Мы отказались от «портянок» Postman-коллекций и разбили каждый тест на отдельный файл с понятной структурой. Это позволило унифицировать подход к окружениям: теперь параметры задаются единым механизмом, а не через несколько независимых уровней, как это было в Postman.

Сай

(Тест в json коллекции Postman. Моки для теста находятся тут же и в целом данный тест занимает 260 строк кода)

Сай2

(Пример того же теста в Cypress. Моки хранятся отдельно, прогружаются на этапе preparatoryStepsApi. Тест занимает 52 строки.)

Масштабирование

После успешного пилота к миграции подключились пять инженеров QA. В результате в Cypress было перенесено 50+ API-тестов вместе со всеми заглушками.

Сай3

В итоге мы не просто «переехали» с одного инструмента на другой. Мы переосмыслили процесс тестирования, сделали его частью единой экосистемы и убрали узкие места: ручные операции, дублирование переменных и разрозненность контуров. Cypress стал центральной точкой для всей автоматизации.

Результат

  • Ускорение CI/CD: теперь тесты запускаются напрямую из кодовой базы, без ручных шагов импорта/экспорта, что устранило задержки и снизило вероятность ошибок синхронизации.
  • Единый механизм окружений: параметры передаются централизованно. Мы устранили до 90% «плавающих» багов, связанных с разными наборами переменных в Postman и Cypress. 
  • Удобный Code Review: каждый тест - это отдельный файл с понятной структурой, что сократило время ревью почти вдвое. 
  • Гибкость и экономия: использование Cypress снимает лицензионные ограничения, которые есть при использовании бесплатной версии Postman: запуски тестов делаются без ожидания. Тесты можно запускать столько раз, сколько необходимо бизнесу, без дополнительных затрат. 
  • Прозрачность для всей команды: результаты прохождения выглядят более наглядно. Анализ ошибок стал быстрее, а коммуникация между ролями - проще. 

Сай4

Инвестиция в инфраструктуру тестирования 

Переезд API-тестов из Postman в Cypress доказал, что унификация инструментов приносит пользу не только команде, но и бизнесу. Инвестиции в инфраструктуру окупились, мы получили:

  • более быстрый и предсказуемый процесс поставки, 
  • снижение рисков выпуска с дефектами, 
  • рост эффективности QA и разработчиков, 
  • повышение прозрачности на всех уровнях. 

Также большим плюсом переезда API-тестов стала возможность оптимизировать pipeline. Время прохождения stage API-тестов сократилось с 22 минут до ~7-8 минут и укрепило главный результат миграции - баланс скорости и качества.