Нагрузочное тестирование API в браузере

Нагрузочное тестирование в PolyApiIDE запускается из того же расширения, где лежат ваши коллекции: профиль нагрузки, сценарий, метрики по перцентилям и PDF-отчёт, который можно отдать заказчику.

Между «отправил запрос руками» и «подняли стенд с распределённым генератором» есть большой разрыв. Чаще всего нужно понять простое: держит ли ручка десяток параллельных пользователей, не растёт ли задержка на пятом десятке запросов, не начинает ли сервис отдавать 429 и 503. Для этого разворачивать отдельную инфраструктуру незачем.

Что умеет встроенная нагрузка

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

По ходу прогона собираются метрики: количество отправленных запросов, доля ошибок, распределение статусов и задержки по перцентилям. Результат выгружается в PDF-отчёт — он намеренно сделан читаемым для нетехнического получателя, чтобы отчёт можно было приложить к письму заказчику, а не пересказывать своими словами.

Как провести прогон

1. Начните с одного рабочего запроса

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

2. Переключитесь на тестовый контур

Смените окружение — адреса и токены подставятся сами. Прогонять нагрузку по продакшену без согласования не стоит: чужие алерты и ваш забаненный IP того не стоят.

3. Выберите профиль нагрузки

Начните с малого: несколько параллельных потоков и короткий прогон. Так виден базовый уровень задержки, с которым потом сравнивать.

  • короткий прогон — проверить, что метрики вообще собираются;
  • длинный ровный — поискать деградацию и утечки;
  • ступенчатый рост — найти точку, где растут ошибки.

4. Добавьте сценарий, если одной ручки мало

Реальная нагрузка обычно это цепочка: авторизация, создание объекта, чтение, удаление. Сценарий связывает шаги, а скрипты до и после запроса переносят значения между ними — синтаксис описан в документации по скриптам.

5. Прочитайте метрики и сохраните отчёт

Смотрите не на среднее, а на p95 и p99 и на долю ошибок: именно там видно, что часть пользователей уже ждёт неприемлемо долго. Готовый прогон выгружается в PDF.

Что показывают метрики

  • Число отправленных запросов и фактический темп за время прогона
  • Задержка по перцентилям: p50 — типичный пользователь, p95 и p99 — худший опыт
  • Доля ошибок и распределение HTTP-статусов
  • Появление 429 и 503 — признак, что сработали лимиты или кончились воркеры
  • Рост задержки к концу ровного прогона — повод искать утечку или исчерпание пула соединений

Где границы браузерного прогона

ЗадачаPolyApiIDEk6, JMeter, Gatling
Проверить ручку на десятки параллельных запросов Подходит, запускается за минуту Избыточно для такой задачи
Прогнать сценарий из нескольких шагов Подходит Подходит, но нужен скрипт и окружение
Отчёт для заказчика PDF из расширения Собирается отдельно
Сотни тысяч запросов в секунду Не подходит Это их задача
Распределённая нагрузка с нескольких машин Не поддерживается Штатный режим
Прогон в CI без браузера Не поддерживается Штатный режим

Браузер — это одна машина, один процесс и общий с интерфейсом цикл событий, а на HTTP/1.1 Chrome держит не больше шести соединений к одному хосту. Для серьёзных объёмов берите k6 или JMeter: мы закрываем разрыв между ручной проверкой и полноценным стендом, а не заменяем его.

Частые вопросы

Входит ли нагрузка в бесплатный тариф?

Нет. На Free доступны отправка запросов, коллекции, окружения, скрипты и импорт. Нагрузочные профили, сценарии, QA-сценарии и PDF-отчёты открываются на платных тарифах: Месяц, Год или Lifetime.

Насколько точны измерения в браузере?

Относительные сравнения надёжны: до и после оптимизации, одна ручка против другой, рост задержки по мере нагрузки. Абсолютные цифры зависят от вашей машины, сети и загрузки браузера, поэтому как SLA-замер их приводить не стоит.

Можно ли нагружать WebSocket?

Нет, профили рассчитаны на HTTP-запросы. Для WebSocket есть отдельное пространство с логом кадров, но удержание тысяч одновременных сокетов — не задача браузерного расширения.

Что в PDF-отчёте?

Параметры прогона, метрики, перцентили, ошибки — в формулировках, понятных без знания инструмента. Отчёт рассчитан на того, кто принимает работу, а не только на автора теста.

Нужно ли что-то устанавливать на компьютер?

Нет. Всё работает внутри расширения для Chrome, Edge и Firefox, отдельный агент или JVM не нужны.