Алекс Смит: Тестирование ПО с Нуля до Специалиста
February 11

8.3 Тестирование API. Основные методы в Postman. Проект №1

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

Интерфейс Postman

Панели Postman

Верхняя панель: тут находятся основные элементы настроек программы.

Верхняя панель

Боковая панель: тут находится список запросов, выполненных ранее и сохраненные в виде коллекции запросы.

Боковая панель

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

Панель вкладок

Рабочая область: здесь размещены основные настройки запроса и возвращенные им данные.

Рабочая область

Самые востребованные кнопки в Postman

Кнопка New: можно создавать новые запросы (request), коллекции (Collection) или окружение (Environment).

Кнопка Import: с помощью нее можно импортировать коллекцию или окружение из других источников.

Вкладки в Request

Params – сюда будут помещаться определенные параметры, которые будут добавляться к нашей URL, для того, чтобы можно было отправлять нужны нам запрос, то есть формировать его сущность.

Authorization – API использует авторизацию, чтобы убедиться, что пользователь имеет доступ к запрашиваемым данным. В этой секции описываются параметры авторизации: логин, пароль и тд. Мы будем работать с публичными API, где авторизация не нужна.

Headers – для работы с некоторыми API с каждым запросом необходимо отправлять специальные заголовки. Нужно, чтобы добавить дополнительные данные о типе операции, которую вы хотите провести.

Body – тело нашего запроса, в этой вкладке указываются данные, которые должны быть отправлены вместе с запросом.

Pre-request Script – в этой вкладке пишутся скрипты на JS, которые выполняются перед отправкой запроса.

Tests – здесь будут находиться скрипты, которые выполняются во время запроса. Тесты позволяют проверить API и убедиться, что все работает так, как было задумано.

Основные сущности, которыми оперирует Postman

Коллекция – группа запросов, аналог папки на ПК, в которой лежат наши запросы.

Запросы – комбинация URL, заголовков и тело запроса. Типы запросов:

CRUD - Create(C), Read(R), Update(U), Delete(D)

  1. GET(R) - получение информации от сервера
  2. POST(C, U, D) - добавление информации на сервер
  3. PUT(C, U) - изменение информации на сервере
  4. DELETE(D) - удаление информации с сервера

Окружение – позволяет запускать запросы и коллекции, используя разные наборы данных: окружение для разработчиков, тестировщиков и продакшн-серверов. В каждом окружении будут свои собственные настройки: URL, токены для авторизации, API ключи и т.д. Окружение представляет собой наборы пары ключ-значение.

Методы в Postman

Для того, чтобы тестировать API, необходимы 3 вещи:

  1. Сама API
  2. Postman (или любой другой инструмент, с помощью которой можно отправлять запросы).
  3. Документация от разработчика, которую составляли параллельно с разработкой API и в которой видно запросы и ответы, URL и прочие данные.

На данном занятии будем тестировать тестовую API Google Maps.

Рассмотрим документацию:

Метод POST

Запрос:
Base URL: https://rahulshettyacademy.com
Resource: /maps/api/place/add/json
Параметр для всех запросов: key=qaclick123
Body:
{
"location": {
"lat": -38.383494,
"lng": 33.427362
}, "accuracy": 50,
"name": "Frontline house",
"phone_number": "(+91) 983 893 3937",
"address": "29, side layout, cohen 09",
"types": [
"shoe park",
"shop"
],
"website": "http://google.com",
"language": "French-IN"
}

Ответ:
Статус: 200. Запрос прошел успешно
{
"status": "OK",
"place_id": "dea036e58d6773b3f8bfb256249a1593",
"scope": "APP",
"reference":
"1f71a23b1374071eecbb70eed1054cf91f71a23b1374071eecbb70eed1054cf9",
"id": "1f71a23b1374071eecbb70eed1054cf9"
}

Что включает запрос:

Базовую URL https://rahulshettyacademy.com, то есть URL, которая будет всегда в тестировании данной API. То есть в базовую URL всегда будем вводить именно этот адрес.

Ресурс (путь) /maps/api/place/add/json - та самая добавочная часть, которая покажет системе, что именно мы хотим выполнять. То есть тут будем выполнять добавление, так как в пути указано add (/maps/api/place/add/json).

Параметр для всех запросов: key=qaclick123. Это ключ с доступом к API, то есть без этого ключа мы не сможем выполнить добавление новой локации.

Тело Body: {
"location": {
"lat": -38.383494,
"lng": 33.427362
}, "accuracy": 50,
"name": "Frontline house",
"phone_number": "(+91) 983 893 3937",
"address": "29, side layout, cohen 09",
"types": [
"shoe park",
"shop"
],
"website": "http://google.com",
"language": "French-IN"
} - то есть та информация (то тело), которое будем добавлять.

Что представляет из себя API:

Google Maps API - это карта, на которой находятся те или иные объекты.

Т.к. это тестовый API, мы не сможем добавлять области на реальную карту. Но по факту это все так и происходит.

С помощью метода POST мы будем создавать новую локацию. Мы будем отправлять в Body информацию, в которой будем указывать широту, долготу, название, телефон, адрес и тд.

После того, как мы его отправили, мы получим ответ. Это должен быть статус-код 200 и некую place_id.

Как это выглядит на практике:

Шаг 1
Шаг 2
Шаг 3 Send и получение ответа

А теперь проверим, что локация действительно создана с помощью метода GET.

Метод GET

Base URL: https://rahulshettyacademy.com
Resource: /maps/api/place/get/json
Параметр для запросов: key=qaclick123, place_id

Так же можно сохранить ответ в файл:

Негативное тестирование данного API

Мы проверяли, существует ли данная локация. А теперь в запросе удалим последний символ и попробуем отправить запрос вновь.

Мы получили ошибку 404 и сообщение о том, что GET прошел не успешно и данное place_id не существует.

Метод PUT

С помощью метода PUT мы будем изменять данные локации. В частности будем изменять адрес локации.

Запрос:
Base URL: https://rahulshettyacademy.com
Resource: /maps/api/place/update/json
Параметр для запросов: key=qaclick123
Body:
{
"place_id":"c104d917f4b60e2c9a5feda6c9cbf279",
"address":"100 Lenina street, RU",
"key":"qaclick123"
}
Ответ:
Статус: 200. Запрос прошел успешно
{
"msg": "Address successfully updated"
}

Метод DELETE

Запрос:
Base URL: https://rahulshettyacademy.com
Resource: /maps/api/place/delete/json
Параметр для запросов: key=qaclick123
Body:
{
"place_id":"928b51f64aed18713b0d164d9be8d67f"
}
Ответ:
Статус: 200. Запрос прошел успешно
{
"status": "OK"
}