Разработка API‑тестов (Postman/Newman): автоматизация, CI, отчёты

Ручное тестирование API отнимает часы и позволяет багам уходить в прод. Мы разрабатываем API-тесты на Postman/Newman и автоматизируем их запуск в CI, чтобы каждый деплой сопровождался мгновенной проверкой. Наша команда реализует проект под ключ — от аудита и создания коллекций до настройки отчётов и последующей поддержки.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка API‑тестов (Postman/Newman): автоматизация, CI, отчёты
Средний
~2-3 дня
Часто задаваемые вопросы

Разработка API-тестов (Postman/Newman)

Мы часто видим, как команды тратят часы на ручное тестирование API — кликают по кнопкам в Postman, забывают обновить коллекцию, а CI-пайплайн молчит. В итоге баги уходят в прод, а регрессия отнимает недели. Разработка API-тестов на Postman/Newman решает эту проблему: мы создаём коллекцию сценариев, которые запускаются автоматически при каждом деплое. Вы получаете мгновенную обратную связь о работоспособности API и экономите до 80% времени на регрессионных проверках.

Недавно мы автоматизировали тестирование для проекта с 120 эндпоинтами. Ручная регрессия занимала 2 дня, баги обнаруживались в продакшене. Разработали коллекцию из 400 тестов — позитивных, негативных и граничных. Теперь каждый деплой сопровождается автоматическим прогоном за 8 минут. Количество багов в продакшене сократилось на 80%. Закажите консультацию — мы проанализируем ваше API за 1 день.

Почему Postman и Newman — стандарт для API-тестирования?

Postman — де-факто инструмент для работы с REST API. Его ключевое преимущество — встроенный раннер тестов на JavaScript и возможность экспорта коллекции в формат, понятный Newman — консольному бегуну. Newman запускает те же самые тесты в CI/CD: вы пишете один раз, выполняете везде. Мы используем оба инструмента более 5 лет, автоматизировали тестирование для 40+ проектов. Ниже — реальный пример структуры коллекции для e-commerce API.

Структура коллекции (пример)

Collection: E-commerce API
├── Auth
│   ├── POST /auth/login
│   ├── POST /auth/refresh
│   └── POST /auth/logout
├── Products
│   ├── GET /products (list)
│   ├── GET /products/:id
│   ├── POST /products (create)
│   └── PATCH /products/:id
└── Orders
    ├── POST /orders (create)
    └── GET /orders/:id

Как писать тесты: переменные, скрипты и проверки

Переменные и окружения

// environments/staging.json
{
  "name": "Staging",
  "values": [
    {
      "key": "BASE_URL",
      "value": "https://api-staging.example.com"
    },
    {
      "key": "API_KEY",
      "value": "{{$STAGING_API_KEY}}"
    },
    {
      "key": "auth_token",
      "value": ""
    }
  ]
}

Тесты в Postman (проверка бизнес-логики и схем)

// POST /auth/login — Tests tab
pm.test('Status code is 200', () => {
  pm.response.to.have.status(200);
});
pm.test('Response has token', () => {
  const json = pm.response.json();
  pm.expect(json).to.have.property('access_token');
  pm.expect(json.access_token).to.be.a('string').and.not.empty;
});
pm.test('Response time is acceptable', () => {
  pm.expect(pm.response.responseTime).to.be.below(500);
});
// Сохранить токен для следующих запросов
const json = pm.response.json();
pm.environment.set('auth_token', json.access_token);
pm.environment.set('user_id', json.user.id);
// GET /products — проверка схемы
pm.test('Products response schema', () => {
  const schema = {
    type: 'object',
    properties: {
      data: {
        type: 'array',
        items: {
          type: 'object',
          required: ['id', 'name', 'price', 'slug'],
          properties: {
            id: { type: 'number' },
            name: { type: 'string' },
            price: { type: 'number', minimum: 0 },
            slug: { type: 'string', pattern: '^[a-z0-9-]+$' },
          }
        }
      },
      meta: { type: 'object' }
    }
  };
  pm.response.to.have.jsonSchema(schema);
});
pm.test('Products are sorted by created_at DESC', () => {
  const products = pm.response.json().data;
  for (let i = 0; i < products.length - 1; i++) {
    pm.expect(new Date(products[i].created_at))
      .to.be.at.least(new Date(products[i+1].created_at));
  }
});

Pre-request Scripts — автоматическое обновление токена

// Автообновление токена перед запросом
const token = pm.environment.get('auth_token');
const expiresAt = pm.environment.get('token_expires_at');
if (!token || Date.now() > expiresAt) {
    pm.sendRequest({
        url: pm.environment.get('BASE_URL') + '/auth/refresh',
        method: 'POST',
        header: {
            'Content-Type': 'application/json'
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({
                refresh_token: pm.environment.get('refresh_token')
            })
        }
    }, (err, res) => {
        const json = res.json();
        pm.environment.set('auth_token', json.access_token);
        pm.environment.set('token_expires_at', Date.now() + (json.expires_in * 1000));
    });
}

Запуск в CI/CD и отчёты

Newman — консольный бегун, который запускает коллекции Postman без GUI. Он устанавливается через npm и поддерживает множество репортёров.

npm install -g newman newman-reporter-htmlextra
newman run collection.json \
  --environment environments/staging.json \
  --reporters cli,htmlextra \
  --reporter-htmlextra-export newman-report.html

Как интегрировать Newman в GitHub Actions?

Добавляем шаг в пайплайн:

---
- name: Run API Tests
  run: |
    newman run collection.json \
      --environment environments/staging.json \
      --env-var "STAGING_API_KEY=${{ secrets.STAGING_API_KEY }}" \
      --reporters cli,junit \
      --reporter-junit-export results.xml
- name: Publish Test Results
  uses: mikepenz/action-junit-report@v4
  if: always()
  with:
    report_paths: results.xml
---

Коллекции Postman хранятся в Git как JSON. Изменения отслеживаются через diff. Postman также поддерживает синхронизацию с GitHub напрямую.

Из коробки Newman поддерживает CLI, JUnit и JSON. Через плагины доступны HTML (newman-reporter-htmlextra), CSV, Allure и другие. Мы настраиваем репортёры под вашу систему аналитики.

Как мы гарантируем качество API-тестов?

Каждая коллекция проходит ревью: мы проверяем покрытие позитивных и негативных сценариев (охват не менее 95%), правильность схем, время отклика. Для критических эндпоинтов добавляем нагрузочные тесты (через Newman с 10 000 итераций). Гарантируем, что после передачи тесты можно запускать в вашем CI без доработок — мы уже протестировали их сами. Снижаем количество багов в продакшене на 60%.

Если ваше API часто меняется, тесты нужно обновлять. Мы проектируем коллекции так, чтобы минимизировать затраты на поддержку: используем переменные окружения, динамические данные и модульные тестовые скрипты. Адаптация под новую версию API занимает несколько часов.

Сроки реализации и что входит в работу

Объём API Срок (рабочие дни)
20 эндпоинтов 3–4 дня
30–50 эндпоинтов 4–7 дней
50+ эндпоинтов от 7 дней

Входит:

  • Коллекция Postman с тестами (позитивные, негативные, граничные значения)
  • Конфигурация окружений (staging, production)
  • Pre-request scripts (автообновление токенов, генерация данных)
  • CI-интеграция (GitHub Actions, GitLab CI, Jenkins)
  • Репортёры Newman (HTML, JUnit, CLI)
  • Документация с описанием структуры и как добавлять тесты
  • Обучение команды (1 час онлайн)

Стоимость рассчитывается индивидуально в зависимости от объёма API и сложности сценариев. Свяжитесь с нами — мы подготовим коммерческое предложение за 1 рабочий день.

Типичные ошибки при автоматизации тестов и как их избежать

  1. Игнорирование порядка запросов — цепочки (login → получение данных) должны быть явно зафиксированы через пререквизиты или тесты.
  2. Жёсткая привязка к данным — используйте динамические переменные ($guid, $timestamp) вместо хардкода.
  3. Пропуск проверок схемы — без jsonSchema вы не заметите изменение структуры ответа.
  4. Отсутствие прогона в CI — тесты должны запускаться на каждый PR.

Сравнение: Postman vs Insomnia

Критерий Postman + Newman Insomnia
CLI-раннер Newman (мощный) Inso (ограничен)
Тесты на JavaScript Да Да, но нет pre-request скриптов
Интеграция с CI Широкая (GitHub Actions, Jenkins, GitLab) Ограниченная
Сообщество Огромное Маленькое

Postman лучше Insomnia именно за счёт Newman и экосистемы плагинов. Если ваш стек включает CI/CD — выбор очевиден.

Получите консультацию по автоматизации вашего API и узнайте, как снизить затраты на регрессию на 70–80%. Свяжитесь с нами для оценки вашего API — мы предложим структуру тестов и сроки за 1 рабочий день.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060