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

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

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка API-тестов (Postman/Newman)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

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

Postman — GUI-инструмент для работы с API с возможностью написания тестов на JavaScript. Newman — CLI-раннер коллекций Postman для интеграции в CI/CD. Удобны для тестирования REST 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));
    });
}

Newman — запуск в CI

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 run collection.json \
    --environment environments/staging.json \
    --iteration-count 3 \
    --delay-request 200

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 напрямую.

Срок реализации

Разработка коллекции с тестами для типового REST API (30–50 эндпоинтов): 4–7 дней.