День 3

REST API Testing Bootcamp

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

Введення в інструмент cURL та його можливостей

cURL (повна назва — «Client for URLs» або «cURL URL Request Library») — це потужний інструмент командного рядка, призначений для роботи з URL-адресами. Він дозволяє виконувати різноманітні операції, пов’язані з мережними запитами, включаючи надсилання та отримання даних через різні протоколи, такі як HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP та інші.

Надсилання HTTP-запитів

Можна використовувати cURL для надсилання запитів HTTP на сервер, що дозволяє взаємодіяти з веб-ресурсами. Наприклад, ви можете надіслати GET- або POST-запити для отримання або надсилання даних на веб-сервер.

Переадресація

cURL підтримує автоматичну обробку переадресації запитів HTTP.

Завантаження та скачування файлів

cURL дозволяє завантажувати файли з веб-ресурсів та зберігати їх на вашому комп'ютері.

Надсилання файлів

cURL дозволяє відправляти файли на сервер протоколами FTP, FTPS, SCP, SFTP та інших.

Заголовки

Ви можете переглядати та змінювати HTTP-заголовки запитів та відповідей.

Обмеження швидкості

Ви можете обмежити швидкість передачі даних під час завантаження або завантаження файлів.

Аутентифікація

Ви можете вказати облікові дані для HTTP-авторизації (Basic, Digest, NTLM), а також аутентифікації на FTP-серверах.

Опції проксі

cURL підтримує роботу через HTTP-проксі-сервери.

Інтеграції з різними сервісами (Integrations)

Підтримка численних протоколів: cURL працює з великою кількістю мережевих протоколів, що робить його універсальним інструментом для роботи в мережі.

Навіщо QA використовує cURL?

curl може служити інструментом для швидкої взаємодії з фронтендом і бекендом розробниками. Ми можемо використовувати його для надсилання запитів та отримання відповідей від серверів, що спрощує процес комунікації та спільного вирішення проблем.

Важливо, що curl може бути також використаний для демонстрації конкретних проблем та створення баг-репортів. Шляхом надання розробникам інформації про те, які запити надсилаються та які відповіді очікуються, ми можемо покращити процес налагодження та усунення помилок. Цей інструмент допомагає нам забезпечувати якість нашого програмного забезпечення та покращувати співпрацю між командами.

Тестування API

QA-інженери можуть використовувати curl, щоб відправляти HTTP-запити до API та перевіряти, які дані повертаються у відповідь. Вони також можуть перевіряти статус кодів відповідей, щоб переконатися, що API працює правильно.

Автоматизація тестів

curl може бути включений в автоматизовані тести, щоб перевірити, що веб-сервіси та API працюють як очікується. Це може допомогти виявити проблеми у додатку до його випуску.

Тестування веб-сторінок

Інженери QA можуть використовувати curl для отримання вмісту веб-сторінки. Це може бути корисним для перевірки, що сторінки повертають правильні дані або для аналізу HTML-коду сторінки.

Перевірка доступності

curl також може використовуватись для перевірки доступності веб-серверів та служб. QA-інженери можуть надсилати HTTP-запити до серверів та аналізувати відповіді, щоб переконатися, що сервіси доступні та працюють без збоїв.

Приклади використання cURL

				
					//Установка заголовков (headers):
curl -H "Authorization: Bearer your_token" -H "Content-Type: application/json" https://api.example.com/resource
				
			
				
					//Аутентификация (Basic Auth):
curl -u username:password https://api.example.com/resource

				
			
				
					//Передача данных в формате JSON:
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://api.example.com/resource
				
			
				
					//Отправка GET-запроса:
curl https://restful-booker.herokuapp.com/booking
				
			
				
					//Отправка POST-запроса с данными:
curl -X POST -d "param1=value1&param2=value2" https://example.com

				
			
				
					//Загрузка файла:
curl -O https://example.com/file.txt


				
			
				
					//Загрузка файла с ограничением скорости:
curl --limit-rate 100K -O https://example.com/largefile.zip



				
			
				
					//Загрузка файла через FTP:
curl -u username:password -O ftp://ftp.example.com/file.zip



				
			

//Запит із параметрами (query parameters):
curl «https://api.example.com/resource?param1=value1&param2=value2»

//Посилання файлу (наприклад, для завантаження файлу на сервер):
curl -X POST -F «file=@localfile.txt» https://api.example.com/upload

//Обмеження швидкості передачі:
curl —limit-rate 100K -X GET https://api.example.com/resource

//Очікування певного HTTP-статусу (наприклад, 201 Created):
curl -X POST -H «Content-Type: application/json» -d ‘{«key»: «value»}’ —write-out ‘%{http_code}’ https://api.example.com/resource

//Встановлення користувача User-Agent:
curl -A MyUserAgent https://api.example.com/resource//Визначення HTTP-заголовків відповіді:
curl -I https://api.example.com/resource

//Встановлення таймауту:
curl —connect-timeout 10 -m 60 https://api.example.com/resource

//Заголовок з куки (Cookie):
curl -H «Cookie: session=your_session_id» https://api.example.com/resource

Практичні вправи

з використанням cURL для створення запитів, надсилання даних та обробки відповідей.

Створити запит через cURL для отримання токену

Для створення запитуhttps://restful-booker.herokuapp.com/apidoc/index.html#api-Auth-CreateToken, вам слід використовувати наступну команду:

curl -X POST -H «Content-Type: application/json» -d ‘{«username»: «admin», «password»: «password123»}’ https://restful-booker.herokuapp.com/auth

Ця команда надішле запит на сервер із вказаним ім'ям користувача («admin») та паролем («password123»). Якщо облікові дані вірні, ви отримаєте токен доступу у відповіді.

Тепер розглянемо, як виконати цю команду на різних операційних системах:

Windows (через Git Bash):

Скачайте Git (https://git-scm.com/downloads) Відкрийте Git Bash.

Вставте команду cURL та натисніть Enter

Linux і macOS:

Відкрийте термінал.

Вставте команду cURL та натисніть Enter

Після виконання команди cURL ви отримаєте відповідь із токеном доступу.

Зверніть увагу, що для успішного виконання цієї команди потрібно встановити cURL, якщо він не встановлений. У більшості дистрибутивів Linux та macOS cURL встановлюється за умовчанням. У Windows можна використовувати Git Bash, який поставляється з Git, щоб виконувати команди cURL.

Важливо! Сервер має обмеження кількості запитів, тому можливий код 403 Forbidden.

Створення запиту через cURL, який створює бронювання

Для створення запиту на cURL, який створює бронювання (booking) https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-CreateBooking, Ви можете використовувати наступну команду:

curl -X POST -H «Content-Type: application/json» -d ‘{
«firstname»: «Name»,
«lastname»: «Lastname»,
«totalprice»: 100,
«depositpaid»: true,
«bookingdates»: {
«checkin»: «2023-11-01»,
«checkout»: «2023-11-05»
},
«additionalneeds»: «Addition information»
}’ https://restful-booker.herokuapp.com/booking

У цій команді:

  • -X POST вказує, що це запит POST.

  • -H "Content-Type: application/json" встановлює заголовок Content-Type в application/json, що вказує на те, що дані надсилаються у форматі JSON.

  • -d '{ ... }' відправляє JSON-дані, що описують бронювання, в запиті. Замініть дані у фігурних дужках на власні значення.

  • https://restful-booker.herokuapp.com/booking - URL для створення бронювання.

Ця команда надішле запит на сервер, і якщо дані коректні, API створить бронювання із зазначеними даними.

Важливо! Сервер має обмеження кількості запитів, тому можливий код 403 Forbidden.

Створення запиту через cURL, який редагує бронювання

Для створення запиту cURL, який змінює (редагує) бронювання на https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-UpdateBookingви можете використовувати наступну команду. Ця команда виконує PUT-запит із оновленими даними для бронювання:

curl —location —request PUT ‘https://restful-booker.herokuapp.com/booking/1’ \
—header ‘Cookie: token=9387edc91b259e5’ \
—header ‘Content-Type: application/json’ \
—data ‘{
«firstname» : «James»,
«lastname» : «Brown»,
«totalprice» : 111,
«depositpaid» : true,
«bookingdates» : {
«checkin» : «2018-01-01»,
«checkout» : «2019-01-01»
},
«additionalneeds» : «Breakfast»
}’

token необхідно перегенерувати, оскільки має термін придатності.

Важливо! Сервер має обмеження кількості запитів, тому можливий код 403 Forbidden.

Більше про cURL?)

Щоб дізнатися більше про лекції, матеріали та тести, перейдіть на сторінку нашого основного курсу «Тестування REST API».

Створення запиту через cURL для отримання списку бронювань

Для створення запиту cURL, який отримує список бронювань з API https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-GetBookings, Ви можете використовувати наступну команду:

curl -X GET https://restful-booker.herokuapp.com/booking

У цій команді:

  • -X GET цій команді:.
  • https://restful-booker.herokuapp.com/booking - URL-адреса для отримання списку бронювань.

Просто виконайте цю команду в командному рядку (Windows) або терміналі (Linux і macOS), і вона поверне список бронювань із сервера.

Важливо! Сервер має обмеження кількості запитів, тому можливий код 403 Forbidden.

Створення запиту через cURL для отримання обраного ID бронювання

Для створення запиту через cURL та отримання обраного ID бронювання на API https://restful-booker.herokuapp.com/apidoc/index.html#api-Booking-GetBookings, Ви можете виконати наступну команду:

curl https://restful-booker.herokuapp.com/booking/{booking_id}

Тут {booking_id} - це ідентифікатор бронювання, який ви бажаєте отримати. Замініть його на конкретне значення, яке вам цікаво.

Приклад запиту на отримання інформації про бронювання з ідентифікатором 123:

curl https://restful-booker.herokuapp.com/booking/123

Ця команда надішле GET-запит на сервер для отримання інформації про бронювання із зазначеним ідентифікатором. У відповіді ви отримаєте дані про бронювання із вибраним ID.

Важливо! Сервер має обмеження кількості запитів, тому можливий код 403 Forbidden.

Зробити та відправити
  1. Ознайомитись з документацією в частині cURL https://restful-booker.herokuapp.com/apidoc/index.html
  2. Створіть кілька запитів cURL (позитивних та негативних), який отримав токен: Auth-Create token. 
  3. Створіть декілька запитів cURL (позитивних та негативних), які створюють бронювання: Booking-Create booking.
  4. Створіть декілька запитів cURL (позитивних та негативних), що редагують бронювання, відредагуйте його згідно з документацією: Booking-Update booking. 
  5. Створіть декілька запитів cURL (позитивних та негативних), які частково редагують бронювання, відредагуйте його згідно з документацією: Booking-PartialUpdate booking. 
  6. Створіть декілька запитів cURL (позитивних та негативних), що видаляє бронювання: Booking-Delete booking. 

Повернутись назад

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

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

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