День 2

REST API Testing Bootcamp

Углубленный обзор Postman и его расширенных возможностей.
Создание и исполнение более сложных запросов и коллекций.
Разработка и отладка снипетов для автоматизации тестирования.

Углубленный обзор Postman и его расширенных возможностей

Переменные и окружения (Variables and Environments):

Вы можете использовать переменные для хранения значений, которые могут быть переиспользованы в запросах и сценариях. Окружения позволяют вам хранить набор переменных для разных сред, таких как "Development", "Production", "Staging", и переключаться между ними.

Коллекции сценариев (Scripted Collections):

Вы можете создавать коллекции сценариев, где каждый запрос может зависеть от результата предыдущего запроса. Это полезно для тестирования сложных сценариев, таких как авторизация и последующие запросы.

Мониторинг и автоматизация (Monitoring and Automation):

Postman Monitor позволяет вам автоматически выполнять коллекции запросов по расписанию и отслеживать результаты. Вы можете интегрировать Postman с CI/CD системами для автоматического тестирования и мониторинга API.

Скрипты (Scripts):

Вы можете написать собственные скрипты для автоматизации различных задач в Postman. Postman поддерживает JavaScript, и вы можете создавать скрипты для тестирования, мониторинга и автоматизации задач.

Генераторы документации (Documentation Generators):

Postman позволяет создавать документацию для вашего API с использованием коллекций и комментариев. Вы можете экспортировать документацию в различные форматы, такие как HTML, Markdown и JSON.

Тестирование без подключения к интернету (Offline Testing):

Postman позволяет вам выполнять тестирование API без подключения к интернету, что полезно для защищенного тестирования и отладки.

Проверки и тесты (Assertions and Tests):

Postman позволяет вам создавать тесты для автоматической проверки ответов API. Вы можете использовать встроенную библиотеку Chai Assertion для создания проверок, таких как проверка статус-кода, наличие данных и т. д.

Cовместная работа (Teamwork):

Postman поддерживает совместную работу команды над коллекциями и тестами. Вы можете совместно использовать и синхронизировать коллекции с использованием Postman Workspaces.

Интеграции с различными сервисами (Integrations):

Postman поддерживает множество интеграций с другими сервисами, такими как GitHub, Slack, Jira, и многими другими.

Документация API

Изучим документацию, которую будем тестировать и распишим план.

Ознакомиться с документацией

https://restful-booker.herokuapp.com/apidoc/index.html

Просмотреть
Создать запрос, редактирующий бронирование

отредактировать его согласно примеру в документации: Booking-Update booking. Выполнить его.

Создайте запрос, создающий бронирование

Booking-Create booking. Выполнить его

Покрыть каждый запрос следующими тестами

1. Время ответа 2. Статус код 3. JSON схема 4. Поля в ответе, в которые вносились изменения, имеют значение те, которые мы задали

Создать запрос, удаляющий бронирование

Booking-Delete booking. Выполнить его

Создать коллекцию и наборы в Postman

Дадим название

Создать запрос, получивший токен

Auth-Create token. Записать токен в Environment

Начинаем

а вы продолжите дальше самостоятельно

Создать коллекцию и наборы в Postman

Запустите Postman.
В левой части приложения, щелкните на "Collections" (Коллекции).
Нажмите кнопку "New Collection" и дайте ей имя, например, "Restful Booker API". .
Для организации запросов внутри коллекции, вы можете создать наборы. Щелкните на коллекции и нажмите "Add Folder" (Добавить папку), затем дайте папке имя.

Создать запрос, получивший токен

Шаг 1: Создание окружения (Environment)

  1. Запустите Postman.

  2. Открыть окно “Manage Environments”.

  3. Нажмите “Add” для создания нового окружения. Дайте ему имя, например, “Restful Booker Environment”.

  4. Добавьте переменную для хранения токена. Например:

    • Имя: “authToken”.
    • Значение: Здесь пока ничего не нужно указывать.

Шаг 2: Создание запроса для получения токена

  1. В коллекции или наборе запросов (по вашему выбору), создайте новый запрос.

  2. Дайте запросу имя, например, “Get Auth Token”.

  3. В разделе “Request” выберите метод “POST”.

  4. В поле “Request URL” введите URL для получения токена:

    • URL: https://restful-booker.herokuapp.com/auth
  5. Перейдите в раздел “Body” и выберите опцию “raw”.

  6. Введите JSON-данные для запроса. Например:
    {
    “username”: “admin”,
    “password”: “password123”
    }

    Перейдите в раздел “Tests” запроса и внесите следующий код для извлечения и сохранения токена в окружение:

    var jsonData = pm.response.json();
    pm.environment.set(“authToken”, jsonData.token);

Создания запроса, который создает бронирование на API

Для создания запроса, который создает бронирование на API “https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-CreateBooking“, выполните следующие шаги:

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

  1. Запустите Postman.

  2. В левой части приложения, выберите коллекцию или создайте новую коллекцию, в которой вы хотите создать запрос.

  3. Внутри выбранной коллекции, нажмите “Add Request” (Добавить запрос).

  4. Дайте запросу имя, например, “Create Booking”.

Шаг 2: Настройка запроса

  1. В разделе “Request”, выберите метод “POST”.

  2. В поле “Request URL” введите URL для создания бронирования:

URL: https://restful-booker.herokuapp.com/booking

  1. Перейдите в раздел “Body” и выберите опцию “raw”. Затем укажите данные для создания бронирования. Пример JSON-данных:
    {
    “firstname”: “John”,
    “lastname”: “Doe”,
    “totalprice”: 200,
    “depositpaid”: true,
    “bookingdates”: {
    “checkin”: “2023-11-01”,
    “checkout”: “2023-11-10”
    },
    “additionalneeds”: “Breakfast”
    }

Создание тестов для запроса "Create Booking"

  1. Откройте запрос “Create Booking” в Postman.

  2. Перейдите в раздел “Tests” этого запроса.

  3. Используйте JavaScript для написания тестов.

// Перевірка статусу відповіді
pm.test(“Status code is 200”, function () {
    pm.response.to.have.status(200);
});
// Перевірка, що тіло відповіді не є порожнім
pm.test(“Response body is not empty”, function () {
    pm.expect(pm.response.text()).not.to.be.empty;
});
// Перевірка часу відповіді, що він знаходиться в припустимому діапазоні
pm.test(“Response time is within acceptable range”, function () {
    pm.expect(responseTime).to.be.below(2000);
});
// Перевірка, що відповідь містить поле “bookingid”
pm.test(“Response has booking ID”, function () {
    pm.response.to.have.jsonBody(‘bookingid’);
});
// Перевірка, що “bookingid” є числом
pm.test(“Booking ID is a number”, function () {
    pm.expect(pm.response.json().bookingid).to.be.a(‘number’);
});
// Перевірка, що “firstname” відповідає “John”
pm.test(“firstname is correct”, function () {
    pm.expect(pm.response.json().booking.firstname).to.eql(“John”);
});
// Перевірка, що “lastname” відповідає “Doe”
pm.test(“lastname is correct”, function () {
    pm.expect(pm.response.json().booking.lastname).to.eql(“Doe”);
});
// Перевірка, що “totalprice” дорівнює 200
pm.test(“totalprice is correct”, function () {
    pm.expect(pm.response.json().booking.totalprice).to.eql(200);
});
// Перевірка, що “depositpaid” є true
pm.test(“depositpaid is correct”, function () {
    pm.expect(pm.response.json().booking.depositpaid).to.eql(true);
});
// Перевірка, що “checkin date” відповідає “2023-11-01”
pm.test(“checkin date is correct”, function () {
    pm.expect(pm.response.json().booking.bookingdates.checkin).to.eql(“2023-11-01”);
});
// Перевірка, що “checkout date” відповідає “2023-11-10”
pm.test(“checkout date is correct”, function () {
    pm.expect(pm.response.json().booking.bookingdates.checkout).to.eql(“2023-11-10”);
});
// Перевірка, що “additionalneeds” відповідає “Breakfast”
pm.test(“additionalneeds is correct”, function () {
    pm.expect(pm.response.json().booking.additionalneeds).to.eql(“Breakfast”);
});

Но это не все тесты)

Чтобы узнать больше о лекциях, материалах и тестах, перейдите на страницу нашего основного курса “Тестирование REST API”.

Создание запроса и написание тестов для "Get Booking"

Для создания запроса, который получает список бронирований (постов) с использованием API “https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-GetBooking“, выполните следующие шаги:

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

  1. Запустите Postman.

  2. В левой части приложения, выберите коллекцию или создайте новую коллекцию, в которой вы хотите создать запрос.

  3. Внутри выбранной коллекции, нажмите “Add Request” (Добавить запрос).

  4. Дайте запросу имя, например, “Get Bookings” или “Get Posts”.

Шаг 2: Настройка запроса

  1. В разделе “Request”, выберите метод “GET”.

  2. В поле “Request URL” введите URL для получения списка бронирований:

    • URL: https://restful-booker.herokuapp.com/booking

Шаг 3: Выполнение запроса

  1. Нажмите кнопку “Send” (Отправить), чтобы выполнить запрос “Get Bookings”.

  2. После выполнения запроса, вы увидите ответ от API, содержащий список бронирований.

// Перевірка статус-коду (має бути 200 OK)
pm.test(“Статус коду – 200”, function () {
    pm.response.to.have.status(200);
});
// Перевірка, що відповідь не є порожньою (містить дані)
pm.test(“Вміст відповіді не порожній”, function () {
    pm.expect(pm.response.text()).not.to.be.empty;
});
// Перевірка, що відповідь містить масив бронювань (постів)
pm.test(“Відповідь містить масив бронювань”, function () {
    const responseBody = pm.response.json();
    pm.expect(responseBody).to.be.an(‘array’);
});
// Перевірка, що кожне бронювання (пост) має очікувані поля
pm.test(“Кожне бронювання містить очікувані поля”, function () {
    const responseBody = pm.response.json();
    responseBody.forEach(function (booking) {
        pm.expect(booking).to.have.property(‘bookingid’);
    
    });
});

// Перевірка часу виконання (наприклад, менше ніж 2000 мс)
pm.test(“Час виконання в межах прийнятного діапазону”, function () {
const responseTime = pm.response.responseTime;
pm.expect(responseTime).to.be.below(2000);
});

Создание запроса и написание тестов для получения конкретного id "Get Booking"

Для создания запроса, который получает конкретный пост (booking) с использованием API “https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-GetBooking“, выполните следующие шаги:

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

  1. Запустите Postman.

  2. В вашей коллекции или наборе запросов (выберите существующую или создайте новую), нажмите “Add Request” (Добавить запрос).

  3. Дайте запросу имя, например, “Get Booking_ID”.

Шаг 2: Настройка запроса

  1. В разделе “Request”, выберите метод “GET”.

  2. В поле “Request URL” введите URL для получения конкретного поста (booking). URL может выглядеть, например, так:

    • URL: https://restful-booker.herokuapp.com/booking/100

    Здесь “100” – это идентификатор (ID) конкретного поста, который вы хотите получить. Замените “1” на нужный вам ID.

Шаг 3: Выполнение запроса

  1. Нажмите кнопку “Send” (Отправить), чтобы выполнить запрос “Get Booking”.

  2. После выполнения запроса, вы увидите ответ от API, содержащий данные о конкретном посте (booking) с указанным ID.

// Перевірка статусу відповіді
pm.test(“Status code is 200”, function () {
    pm.response.to.have.status(200);
});
// Перевірка, що тіло відповіді не є порожнім
pm.test(“Response body is not empty”, function () {
    pm.expect(pm.response.text()).not.to.be.empty;
});
// Перевірка часу відповіді, що він знаходиться в припустимому діапазоні
pm.test(“Response time is within acceptable range”, function () {
    pm.expect(responseTime).to.be.below(2000);
});
// Перевірка, що “firstname” відповідає “Fabio”
pm.test(“firstname is correct”, function () {
    pm.expect(pm.response.json().firstname).to.eql(“Fabio”);
});
// Перевірка, що “lastname” відповідає “Person”
pm.test(“lastname is correct”, function () {
    pm.expect(pm.response.json().lastname).to.eql(“Bonfanti”);
});
// Перевірка, що “totalprice” дорівнює 111
pm.test(“totalprice is correct”, function () {
    pm.expect(pm.response.json().totalprice).to.eql(111);
});
// Перевірка, що “depositpaid” є true
pm.test(“depositpaid is correct”, function () {
    pm.expect(pm.response.json().depositpaid).to.eql(true);
});
// Перевірка, що “checkin date” відповідає “2023-11-01”
pm.test(“checkin date is correct”, function () {
    pm.expect(pm.response.json().bookingdates.checkin).to.eql(“2018-01-01”);
});
// Перевірка, що “checkout date” відповідає “2019-01-01”
pm.test(“checkout date is correct”, function () {
    pm.expect(pm.response.json().bookingdates.checkout).to.eql(“2019-01-01”);
});
// Перевірка, що “additionalneeds” відповідає “Lunch”
pm.test(“additionalneeds is correct”, function () {
    pm.expect(pm.response.json().additionalneeds).to.eql(“Breakfast”);
});

Создание запроса и написание тестов для редактирования "Update Booking"

Внутри коллекции создайте новый запрос:

    • Щелкните правой кнопкой мыши на созданной коллекции и выберите “Add Request”.
    • Назовите запрос, например, “Update Booking”.
  • Настройте запрос:

    • Выберите метод запроса “PUT”.
    • Укажите URL, соответствующий документации: https://restful-booker.herokuapp.com/booking/{bookingid}, где {bookingid} – это идентификатор бронирования.
    • В разделе “Headers” добавьте заголовок “Content-Type” со значением “application/json”.
    • Добавьте заголовок “Cookie” с токеном (token={{authToken}}).
  • В разделе “Body”:

    • Выберите “raw”.
    • Вставьте JSON-тело запроса для обновления бронирования, как описано в вашем curl-запросе. Ваш JSON-тело должно содержать данные для обновления бронирования.
      {
          “firstname” : “James”,
          “lastname” : “Brown”,
          “totalprice” : 111,
          “depositpaid” : true,
          “bookingdates” : {
              “checkin” : “2018-01-01”,
              “checkout” : “2019-01-01”
          },
          “additionalneeds” : “Breakfast”
      }
// Перевірка статусу відповіді
pm.test(“Status code is 200”, function () {
    pm.response.to.have.status(200);
});
// Перевірка, що тіло відповіді не є порожнім
pm.test(“Response body is not empty”, function () {
    pm.expect(pm.response.text()).not.to.be.empty;
});
// Перевірка часу відповіді, що він знаходиться в припустимому діапазоні
pm.test(“Response time is within acceptable range”, function () {
    pm.expect(responseTime).to.be.below(2000);
});

// Перевірка, що “firstname” відповідає “James”

pm.test(“firstname is correct”, function () {
    pm.expect(pm.response.json().firstname).to.eql(“James”);
});

// Перевірка, що “lastname” відповідає “Brown”

pm.test(“lastname is correct”, function () {
    pm.expect(pm.response.json().lastname).to.eql(“Brown”);
});
// Перевірка, що “totalprice” дорівнює 111
pm.test(“totalprice is correct”, function () {
    pm.expect(pm.response.json().totalprice).to.eql(111);
});
// Перевірка, що “depositpaid” є true
pm.test(“depositpaid is correct”, function () {
    pm.expect(pm.response.json().depositpaid).to.eql(true);
});
// Перевірка, що “checkin date” відповідає “2023-11-01”
pm.test(“checkin date is correct”, function () {
    pm.expect(pm.response.json().bookingdates.checkin).to.eql(“2018-01-01”);
});
// Перевірка, що “checkout date” відповідає “2019-01-01”
pm.test(“checkout date is correct”, function () {
    pm.expect(pm.response.json().bookingdates.checkout).to.eql(“2019-01-01”);
});
// Перевірка, що “additionalneeds” відповідає “Lunch”
pm.test(“additionalneeds is correct”, function () {
    pm.expect(pm.response.json().additionalneeds).to.eql(“Breakfast”);
});

Завтра День 3

REST API

Ввод в инструмент cURL и его возможностей.
Основные команды и параметры cURL для взаимодействия с API REST.
Практические упражнения с использованием cURL для создания запросов, отправки данных и обработки ответов.

Задания

Сделать и отправить
  1. Ознакомиться с документацией https://restful-booker.herokuapp.com/apidoc/index.html
  2. Создать коллекцию в Postman
  3. Создать Environment
  4. Задать переменные в Environment 
  5. Создайте запрос, получивший токен: Auth-Create token. Записать токен в Environment
  6. Покрыть тест-кейсами. Создайте запрос, создающий бронирование: Booking-Create booking.
  7. Создайте запрос, редактирующий бронирование, отредактируйте его согласно документации: Booking-Update booking. 
  8. Создайте запрос, который частично редактирует бронирование, отредактируйте его согласно  документации: Booking-PartialUpdate booking. 
  9. Создайте запрос, удаляющий бронирование: Booking-Delete booking.
  10. Покройте каждый запрос следующими тестами:
    1. Время ответа
    2. Статус код
    3. JSON схема

    Для редактирования и удаления бронирования используйте только эндпоинт https://restful-booker.herokuapp.com/booking/1

Продолжаем обучение

Поддержка и вопросы

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.

Через чат-бот













    Мы также присутствуем в социальных сетях! Подписывайтесь на нас и получайте последние новости, акции, скидки, бесплатные тренинги и участие в марафонах.
    Будем рады видеть вас в нашем сообществе!

    Курсы

    Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков