Skip to content

Глава 1.5: Тестирование API через Postman

Время изучения: 50 минут


1. Почему тестируем API? Предстартовая проверка

Представьте: перед запуском ракеты инженеры проводят тестовые включения систем. Пропустите проверку — и миссия может провалиться!

Тестирование API — ваши контрольные испытания:

  • ✅ Проверить работоспособность "стыковочных узлов"

  • 🛡️ Обнаружить уязвимости до боевого использования

  • 📊 Убедиться, что данные передаются без искажений

💡 Космическая аналогия: Postman — как тестовый пульт ЦУП для имитации всех сценариев: "Что если запросить данные о несуществующей планете? Выдержит ли сервер 1000 запросов/сек?"


2. Postman: "Центр управления полетами" для API

Возможности:

  • 📡 Отправка любых HTTP-запросов (GET, POST, PUT, DELETE)

  • 🔍 Анализ ответов (статус-коды, заголовки, JSON-тело)

  • 🧪 Написание автоматических тестов (JavaScript)

  • 🌐 Работа с переменными окружениями (тестовое vs боевое)

👉 Скачать Postman


3. Первый запуск: Тестируем API планет

Шаг 1: Создаем запрос

  1. Откройте Postman → New → Request

  2. Введите URL: https://api.spacexdata.com/v4/rockets

  3. Выберите метод: GET

Шаг 2: Отправляем "сигнал"

[ЦУП] -- GET /planets --> [Сервер SpaceX]

Шаг 3: Анализируем телеметрию: - Статус: 200 OK - Тело ответа (JSON): список ракет с параметрами

[
  {
    "name": "Falcon 1",
    "type": "rocket",
    "active": false,
    "stages": 2,
    "id": "5e9d0d95eda69955f709d1eb"
  },
  {
    "name": "Falcon 9",
    "type": "rocket",
    "active": true,
    "id": "5e9d0d95eda69973a809d1ec"
  }
]


4. Схема: Компоненты Postman

[Рабочее пространство]
├── Вкладка "Params" (Query-параметры)
├── Вкладка "Headers" (Заголовки)
├── Вкладка "Body" (Тело запроса для POST/PUT)
├── Вкладка "Tests" (Скрипты для проверок)
└── Панель ответа (Status, Time, Size, Body)

5. Создаем сложный сценарий: Запуск миссии

Тест: Добавление новой планеты в каталог

  1. Метод: POST

  2. URL: https://jsonplaceholder.typicode.com/posts (пример)

  3. В Headers:

     { "Content-Type": "application/json" }
    

  4. В Body (raw → JSON):
    {
     "title": "New Exoplanet Found",
     "body": "Proxima Centauri b shows signs of a stable atmosphere.",
     "userId": 1
     }
    

Автоматическая проверка в Tests:

// Проверка статуса
pm.test("Post created successfully", () => {
    pm.response.to.have.status(201);
});

// Проверка структуры и данных ответа
pm.test("Response contains the new post data", () => {
    const response = pm.response.json();
    pm.expect(response).to.have.property("id"); // Проверяем, что сервер присвоил ID
    pm.expect(response.title).to.eql("New Exoplanet Found");
});


6. Переменные окружений: Земля vs Марс

Как тестировать на разных серверах (тестовый/боевой)?

  1. Создайте окружения:
  2. Localhttp://localhost:3000
  3. Productionhttps://api.nasa.gov

  4. В запросах используйте переменные:

    {{base_url}}/planets  # Подставит текущий URL
    

⚠️ Важно! Никогда не тестируйте DELETE на боевом сервере!


7. Коллекции: Библиотека космических миссий

Группируйте запросы:

    📂 Коллекция "NASA"
    ├── GET Планеты
    ├── POST Новая планета
    └── DELETE Планета (тестовый режим)
Преимущества:

  • 🚀 Запуск всех тестов одной кнопкой
  • 📤 Экспорт/импорт конфигураций
  • 👨‍🚀 Совместная работа команды

8. Автоматизация: Регулярные проверки спутников

Настройте мониторинг API через Postman:

  1. Schedule → Каждые 2 часа

  2. Тесты:

    pm.test("Спутник онлайн", () => {
      pm.response.to.have.status(200);
      pm.expect(pm.response.json().signal).above(50); // Сигнал >50%
    });
    

  3. Уведомления в Slack/email при сбое


Квиз для закрепления

1. Postman используется для:

2. Какой статус ожидать при успешном создании объекта?

3. Где писать автоматические тесты в Postman?

4. Переменные окружений нужны для:

5. Что проверяют регулярные мониторинги?


🚀 Итог главы: Postman — ваш универсальный "пульт управления" для тестирования API. С ним вы: - Проверите работу "бортовых систем" до запуска - Создадите библиотеку тестовых сценариев - Автоматизируете мониторинг космических сервисов

📌 Практическое задание:

  1. Установите Postman
  2. Создайте запрос к SpaceX API: GET https://api.spacexdata.com/v4/launches/latest
  3. Напишите тест, проверяющий что:
  4. Статус ответа 200
  5. В поле name есть слово "Falcon"
  6. Время ответа < 500 мс

Поздравляем с завершением Главы 1!

Вы освоили основы работы с API. В следующих главах мы построим собственный "космический корабль" — веб-приложение, использующее космические API!

🌌 Дополнительные ресурсы: