День 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 для створення перевірок, таких як перевірка статусу коду, наявність даних і т.д.

Спільна робота (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-запит. Ваше тіло має містити дані для оновлення бронювання.
      {
          «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. Записати токен у 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

Продовжуємо навчання

Підтримка та питання

Якщо вам потрібна будь-яка підтримка або у вас виникли додаткові питання, не соромтеся зв'язатися з нами, ми готові швидко надати вам допомогу.

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