apitoolsautomation

API-тулы для QA в 2026 — Postman, Bruno, Insomnia, Hurl: что когда выбирать

Postman пять лет был дефолтом по умолчанию, и говорить «отправлю в Postman collection» в QA-команде значило что-то конкретное. К 2026 году ситуация развалилась: Postman всё агрессивнее тянет в облако (login обязателен, локальные collections без sync деградируют, бесплатный план зажат до 3 collections), Insomnia сначала ушёл в cloud-only и быстро откатился, Bruno вырос с нуля до серьёзной альтернативы за два года, а Hurl нашёл свою нишу в CI. У QA-команды появился реальный выбор — и реальные основания пересмотреть стек.

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

1. Postman — что осталось и что ушло

Где сильны: огромная экосистема (Newman для CI, мок-серверы, observability с дашбордами, API governance enterprise-уровня), монитор-runner, schema validation. История collection с версиями, code generation для 15+ языков.

Где зажали: на бесплатном плане сейчас лимит 3 collections, обязательный аккаунт даже для просмотра локальных коллекций, локальные scratch pad collections без облака деградировали, scripting tab закрыт за платным планом для команд > 3 человек, история запросов хранится в облаке (не локально).

Кому подходит: enterprise с уже встроенным Postman pipeline, командам которым нужен встроенный monitoring и API governance, командам которые делают public API documentation через Postman.

2. Bruno — git-friendly альтернатива

Главное архитектурное решение Bruno: collections это .bru файлы в открытом текстовом формате, лежат в твоём git-репозитории рядом с кодом приложения. Никакого облака, никакого аккаунта, никакой синхронизации. Bru DSL — простой, читается человеком, мерджится в git без конфликтов. bru run — CLI для CI pipeline.

Сильные стороны: open-source (MIT license), нет облака как класса, environment variables в файлах рядом, секреты через .env (или secret env-файлы вне git), нативная поддержка GraphQL и REST, тестовые скрипты на JS как в Postman.

Минусы: встроенный мок-сервер ещё в beta, scripting API меньше чем у Postman (часть pm.* нужно адаптировать вручную), мониторы как класс отсутствуют, плагинов меньше.

Кому подходит: любому QA или команде, где collection должна жить в git вместе с кодом; командам которые не хотят зависимости от внешнего сервиса; CI-pipeline’у где collection — это часть репозитория.

3. Insomnia — между мирами

После эксперимента с cloud-only в 2023 откатили решение, теперь поддерживают локальные workspaces. Сильны в OpenAPI/GraphQL — встроенная схема-валидация, генерация запросов из spec, импорт Swagger в один клик. Inso CLI — для запуска в CI. Плагины из коробки, marketplace плагинов.

Минусы: после Kong-acquisition экосистема смотрит больше в сторону enterprise API gateway, чем в QA-инструмент; коммьюнити меньше Postman’а; в команде sync через Insomnia Cloud или Git Sync (последний платный).

Кому подходит: OpenAPI/GraphQL-heavy стек, командам которые ценят плагины, разработчикам микросервисов с тяжёлой спецификацией.

4. Hurl — CLI-first для CI

Принципиально другой подход: один .hurl файл с plain-text DSL описывает запрос плюс ассерты плюс цепочки запросов. Запускается одной командой hurl, выводит результат как curl + assertions с цветным diff. Идеален для smoke-тестов и контракт-тестов в CI pipeline — мерджится в git, ревьюится как код, версионируется как код.

Пример .hurl файла:

POST https://api.example.com/login
Content-Type: application/json
{
  "email": "[email protected]",
  "password": "{{password}}"
}

HTTP 200
[Asserts]
jsonpath "$.token" exists
jsonpath "$.user.email" == "[email protected]"
[Captures]
auth_token: jsonpath "$.token"

GET https://api.example.com/me
Authorization: Bearer {{auth_token}}

HTTP 200
[Asserts]
jsonpath "$.role" == "qa"

Минусы: нет UI вообще (для ad-hoc дебага неудобен — нужен curl или Postman/Bruno), коммьюнити маленькое (~12k stars), плагины отсутствуют, нет встроенных моков.

Кому подходит: smoke-тесты в CI, контракт-тесты, синтетический мониторинг production endpoints, любому workflow где «один файл = один тест-кейс» как у unit-тестов.

5. Сравнительная матрица

Легенда: ✅ — есть из коробки, ⚠️ — есть с ограничениями, ❌ — нет/недоступно на free плане.

  • Полностью офлайн: Postman ❌ (login required) · Bruno ✅ · Insomnia ✅ · Hurl ✅
  • Collections в git: Postman ⚠️ (JSON export) · Bruno ✅ (.bru native) · Insomnia ⚠️ (Git Sync платный) · Hurl ✅
  • Environment variables: все ✅
  • Встроенный mock-сервер: Postman ✅ (paid) · Bruno ⚠️ (beta) · Insomnia ❌ · Hurl ❌
  • Pre/post-request scripts (JS): Postman ✅ · Bruno ✅ · Insomnia ✅ · Hurl ❌ (есть captures и asserts вместо)
  • OpenAPI import: Postman ✅ · Bruno ✅ · Insomnia ✅ (лучше всех) · Hurl ❌
  • CLI для CI: Postman → Newman · Bruno → bru · Insomnia → inso · Hurl → hurl (native)
  • Team sync: Postman ✅ (paid) · Bruno → git · Insomnia ✅ (paid) · Hurl → git
  • Free плана хватает соло QA: Postman ⚠️ (3 collections лимит) · Bruno ✅ · Insomnia ✅ · Hurl ✅
  • Сложность входа: Postman низкая · Bruno низкая · Insomnia низкая · Hurl средняя (нужно понять DSL)

6. Когда что выбирать

  • Solo QA на любом проекте: Bruno. Бесплатный, git-friendly, нет облачной зависимости, всё локально.
  • Маленькая команда без CI: Bruno (всё в git) либо Postman free (до 3 collections достаточно).
  • Команда с CI-фокусом: Bruno для UI-дебага + Hurl для regression в CI. Bruno экспортирует или ты руками копируешь запрос в .hurl.
  • Enterprise с governance и monitoring: Postman team — встроенный monitoring, dashboards, API governance, audit log.
  • OpenAPI-heavy stack (микросервисы со spec): Insomnia — лучшая работа со схемой.
  • Smoke-тесты production endpoints: Hurl. Один .hurl файл = один тест-кейс, ревьюится в PR как код.

7. Migration: Postman collection → Bruno

Bruno имеет нативный импортер Postman collection v2.1, миграция в три команды:

# 1. Экспорт из Postman: File → Export → Collection v2.1
#    Сохрани как collection.json

# 2. Установи Bruno CLI
npm install -g @usebruno/cli

# 3. Импорт + запуск
bru import postman --source collection.json --destination ./api-tests
bru run ./api-tests --env dev

Подводные камни конверсии:

  • pm.environment.set(key, value)bru.setEnvVar(key, value)
  • pm.test(name, fn) → Bruno использует отдельный tests блок в .bru файле с другим синтаксисом
  • pm.sendRequest (вложенные запросы из скрипта) → в Bruno делается через цепочку pre-request hooks
  • Postman dynamic variables ({{$randomEmail}}) → Bruno faker-аналоги, имена другие, проверяй каждое
  • Pre-request scripts работающие с request.headers напрямую — синтаксис Bruno чуть отличается, ревьюй после импорта

Итог

Postman остаётся сильным enterprise-инструментом если ты уже встроен в его экосистему — monitor, dashboard, API governance, code generation. Для всех остальных в 2026 ответом всё чаще является Bruno: бесплатно, локально, в git, без облачной зависимости. Hurl закрывает CI-нишу и контракт-тесты как код. Insomnia остаётся хорошим выбором при OpenAPI-heavy стеке. «Всегда работало в Postman» больше не аргумент — у тебя есть реальный выбор, и в большинстве случаев он не Postman.