Postman инструкция на русском

Уровень сложностиСредний

Время на прочтение14 мин

Количество просмотров201K

В мире современной разработки программного обеспечения, взаимодействие между различными приложениями через интерфейсы приложений (API) стало неотъемлемой частью разработки. Однако, прежде чем мы можем строить сложные взаимодействия, необходимо убедиться, что наш API работает корректно и предоставляет ожидаемые результаты.

И вот на сцену выходит Postman — мощный и интуитивно понятный инструмент, предназначенный специально для тестирования и разработки API. В этой статье рассказывается о самых базовых вещах, с которых следует начать свое знакомство с Postman.

Отправка HTTP-запросов, создание тестов, организация запросов в коллекции, работа с переменными — все это лишь часть функциональности Postman, которая облегчает процесс тестирования и повышает его эффективность. Если вы только начинаете свой путь в изучении этого инструмента, не волнуйтесь! Этот гайд поможет вам разобраться с базовыми принципами работы с Postman и покажет, как сделать ваш процесс тестирования API гораздо более эффективным и приятным.

Готовы начать? Давайте вместе погрузимся в увлекательный мир тестирования API с Postman!

Основные возможности и полезные функции Postman для QA-инженера:

  1. Отправка HTTP-запросов: Postman позволяет легко создавать и отправлять различные типы HTTP-запросов, такие как GET, POST, PUT, DELETE и другие. Тестировщик может настраивать параметры запросов, передавать заголовки, параметры и тело запроса.

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

  3. Коллекции и среды: Postman позволяет организовывать запросы и тесты в коллекции, что упрощает управление большим числом запросов. Коллекции также можно использовать для автоматизации тестов или их запуска в определенной последовательности. Среды позволяют переключаться между различными конфигурациями окружения (например, тестовое, разработка, продакшн).

  4. Работа с переменными: Postman поддерживает использование переменных, что облегчает тестировщикам управление и переиспользование данных в запросах, тестах и окружениях.

Возможностей у инструмента еще очень много, но в целом, Postman — это удобная программа для тестирования и работы с интерфейсами приложений (API). Тестировщик может создавать запросы к серверу и проверять полученные ответы. Postman также помогает организовать и автоматизировать тесты.

meme

meme

В этой статье мы:

  • поговорим про HTTP методы и Статус-коды запросов

  • познакомимся с интерфейсом программы

  • научимся писать свои запросы и работать на реальных данных

  • разберем запуск и автозапуск коллекций

  • узнаем, что такое переменные и научимся ими пользоваться

  • напишем первые автотесты

  • разберемся, как использовать переменные с помощью CSV и JSON файлов

HTTP методы в REST:

Каждый метод имеет разную семантику. В реальной практике, конечно, возможно использовать любой метод для любого действия (например, использовать метод POST для всех запросов). Однако, в дальнейшем мы будем рассматривать их с точки зрения их первоначальной задумки.

Как выглядит HTTP запрос/ответ:

HTTP запрос

HTTP запрос
HTTP ответ

HTTP ответ

Какие бывают методы:

  • Safe methods — никак не изменяем данные на сервере (своеобразный «read only»). Из-за этого называются безопасными. [Get; Head; Options; Trace]

  • Idempotent methods — последовательные одни и те же запросы (после первого) на один и тот же ресурс. Никак не изменяют состояние сервера. Все Safe-методы идемпотентны. [Get; Head; Put; Delete; Trace; Options]

  • Cacheable methods — поддаются кешированию. Большая часть идемпотентных методов кешируется хорошо, неидемпотентные — кешируются тяжело. [Get; Head; Options; Post; Patch]

HTTP методы:

  • GET — в методе GET нет body и Payload (хотя, при сильном желании данные можно запихнуть в хедеры, путь и т.д.). Метод отвечает за получение данных.

  • HEAD — проверяет состояние ресурса и ничего не возвращает. Кидаем HEAD, и если приходит код 200, можно спокойно отправить GET, и он вернет данные.
    Зачем? — HEAD легче и быстрее + HEAD не требует авторизации (потому что не возвращает никаких данных, а просто проверяет, что на сервер можно обращаться).

  • OPTIONS — отвечает за получение данных о том, каким образом можно коммуницировать с сервером. В ответе сервера получаем методы => сервер принимает только «эти» методы и никакие другие.

  • DELETE — удаляет данные/какую-либо сущность с сервера. В адресе он знает, кого именно удаляет (например, по id).

  • PUT — обычно создает сущность либо изменяет ее: 1-й вызов — создание, 2-й и последующие вызовы с тем же запросом не будут изменять состояние сервера. Работает со всеми данными сущности. В своем адресе знает, кого создает/удаляет (например, указан id).

  • PATCH — частичное обновление какой-то сущности. Не обязательно должны содержаться какие-то данные (например, «принять заказ», «отменить заказ»). Если содержит данные — пример: поменять значение поля «name» — изменит одно конкретное поле у сущности, но не затронет остальные.

  • POST — используется только для создания чего-то нового. Если сущности ранее не было, он создаст (например, создать заказ).

  • CONNECT — нужен, чтобы открыть каналы связи (например, SSL). Под капотом сейчас любой браузер делает это самостоятельно.

  • TRACE — цепочка запросов. С помощью TRACE восстанавливается цепочка в обратном порядке и приходит в виде ответа. По данным из ответа можно понять, что происходило «до» этого.

meme

meme

Статус коды:

  • 1XX — Informational (информационные) — указывают на то, что сервер получил и понял запрос, и клиенту стоит подождать немного дольше, чтобы сервер обработал информацию.

  • 2XX — Success (Успешные) — успешные запросы означают, что запрос на доступ к ресурсу/файлу был выполнен успешно.

  • 3XX — Redirection (Перенаправление/Редирект) — указывают на перенаправление. Означают, что клиент будет перенаправлен на URL, отличный от исходного.

  • 4XX — Client Error (Ошибка клиента) — возникает ошибка на стороне клиента. Это может быть связано с неверным форматом данных, несанкционированным доступом, ошибкой в запросе и т.д.

  • 5XX — Server Error (Ошибка сервера) — возникает ошибка на стороне сервера. Клиент сделал правильный запрос, но сервер не может сгенерировать запрошенный ресурс.

Подробнее про то, какие статус коды существуют и их значения можно прочитать в блоке «Дополнительно» в конце статьи

Начало работы

Postman приложение для пк можно скачать на официальном сайте. Также вы можете воспользоваться web версией.

meme

meme

Шаг 1: Для начала создадим свое «пространство».

Workspaces - data-lazy-src=

Workspaces -> Create workspace

Шаг 2: Знакомство с интерфейсом программы.

В левой боковой панели мы теперь можем организовывать свое пространство.

Коллекции, папки и запросы в боковой панели

Коллекции, папки и запросы в боковой панели

(1) — коллекции — отправная точка для нового API. Можно рассматривать коллекцию, как файл проекта. Коллекция объединяет в себе все связанные запросы. Обычно API описывается в одной коллекции, но если вы желаете, то нет никаких ограничений сделать по-другому. Коллекция может иметь свои скрипты и переменные, которые мы рассмотрим позже.

(2) — папки — используется для объединения запросов в одну группу внутри коллекции. К примеру, вы можете создать папку для первой версии своего API — «v1», а внутри сгруппировать запросы по смыслу выполняемых действий — «Order & Checkout», «User profile» и т. п. Всё ограничивается лишь вашей фантазией и потребностями. Папка, как и коллекция может иметь свои скрипты, но не переменные.

(3) — запросы — основная составляющая коллекции, то ради чего все и затевалось. Запрос создается в конструкторе.

Как выглядит конструктор:

Конструктор

Конструктор

(1) — вкладки с запросами

(2) — метод

(3) — URL

(4) — отправка запроса
(5) — параметры запроса
(6) — параметры ответа

Шаг 3: определимся с API.

Вы можете использовать свой API, API своей компании или API с открытой документацией(!). Да, самое главное, чтобы у вас была под рукой документация, ведь без нее ничего не получится. Если на вашем продукте ее нет, то попросите backend разработчиков помочь вам и написать ее (они не обрадуются, но, будьте убедительны!).

Вот несколько примеров public API, которые можно использовать для практики:

  • reqres (далее в гайде будем использовать этот ресурс)

  • httpbin.org

  • Petstore

  • Cat facts

  • Bored API

  • agify.io

  • nationalize.io

  • Random dog images

Шаг 4: Создадим первую коллекцию

meme

meme

Сделать это можно либо нажав на «+» в левой боковой панели навигации, либо при нажатии на кнопку «new» напротив названия воркспейса (по крайней мере, сейчас так. В будущем внешний вид интерфейса может быть изменен, но, думаю, все еще будет интуитивно понятен).

При переходе в нашу созданную коллекцию можно увидеть вкладки:

Authorization — если мы хотим применить авторизацию для всей коллекции. К примеру, у нас есть какой-то логин/пароль для входа в систему и, чтоб не каждый раз применять их по новой, можно добавить данные сюда. Тогда авторизация будет применяться для всех реквестов по умолчанию.

Окно создания коллекции

Окно создания коллекции

Pre-request script — можно добавить пре-реквест скрипты, которые отработают до момента отправки нашего запроса не сервер. (Код на JS).

Tests — автотесты, которые будут отрабатываться для всех реквестов (к примеру, проверка, что статус код 200).

Variables — переменные, которые будут доступны внутри коллекции.

Окно создания коллекции

Окно создания коллекции

Шаг 5: Создадим первый запрос!

Для этого используем public API из шага 3, а конкретнее reqres.in. Выберем метод GET, на место ссылки вставляем https://reqres.in/api/users и, судя по документации, можем указать желаемую страницу просмотра

Написание запроса

Написание запроса

Запуск всей коллекции Postman

Если мы хотим запустить не один запрос, а пройтись сразу по нескольким, либо же запустить даже всю коллекцию — переходим в опции коллекции/папки и выбираем «Run».

коллекция/папка - data-lazy-src=

коллекция/папка -> «Run»

Далее, выбираем, какие запросы мы хотим прогнать и можем поменять порядок их запуска.

В этом же открывшемся окне выбираем настройки нашего запуска. Можно настроить:

  • автоматизацию запуска. В нашем случае, выберем «Run manually» (Запуск произойдет тогда, когда мы сами нажмем кнопку старта). Помимо этого, можно настроить автозапуск выбранных запросов раз в какое-то время, или же настроить вызов прямо из терминала.

  • кол-во раз прогона запросов настраивается в поле Iterations.

  • задержка между запросами и другие прикольные штуки.

Окно запуска

Окно запуска

После запуска мы видим окно со статистикой, статус наших тестов, если были и, можем запустить весь тот же набор повторно. Полученные результаты можно экспортировать (например для отчета).

Результаты запуска

Результаты запуска
meme

meme

Переменные и окружения Postman

Переменные можно добавлять как локально для какой-то коллекции (другие коллекции ее видеть не будут), так и глобально для всего окружения.

Для добавления переменных к коллекции необходимо перейти в ее настройки (достаточно просто нажать на коллекцию) во вкладку «Variables».

Добавление переменных коллекции

Добавление переменных коллекции

Там мы придумываем какое-то наименование нашей переменной и в «Current value» добавляем значение (для примера, родительский адрес, чтоб не перепечатывать его постоянно).

Переменные коллекции: Для чего используется «Initial value» и «Current value»: если вы работаете командой, то внеся изменения в «Initial value» — их увидят все и, при шаринге коллекции все будут видеть именно это значение. Если же вы хотите что-то проверить, но менять значение для всех пользователей, имеющих доступ нельзя — вы можете локально изменить «Current value» (эту информацию будете видеть только вы). Так же, в «Initial value» не рекомендуется добавлять какие-то чувствительные данные (например, пароли), тк эта информация, в отличии от «Current value» хранится на серверах постмона + ее видят все участники команды. 

meme

meme

Чтобы использовать нашу переменную, начните вводить фигурную скобку «{», система сама предложит варианты, в которых будут отображены и наши переменные. Все переменные заключаются в двойные фигурные скобки.

Предложение переменных от Postman

Предложение переменных от Postman
Вид использованной переменной и окна доп. информации при наведении на нее

Вид использованной переменной и окна доп. информации при наведении на нее

Хочется отметить, что переменные можно использовать не только в ссылках. Например, для многих запросов может требоваться авторизация по токену, который мы добавим в переменную. После смены токена достаточно будет изменить значение переменной, а не ходить по всем ручкам и проверять «ничего ли не забыл».

Environment — это набор каких-то переменных глобальных или для определенного окружения (к примеру, стенд A, стена B, прод). Чтобы посмотреть все окружения, которые сейчас есть — необходимо нажать на кнопку списка с глазом. Там же мы можем создать новое окружение. 

Просмотр существующих окружений

Просмотр существующих окружений
  • Если мы выберем «Globals», то данные переменные могут применяться вообще ко всему. Они не привязаны к конкретному окружению и доступны всем. Как пример, можем занести туда информацию о логине (email + pass), если мы его будем часто использовать.

  • Мы можем создать свое окружение, к примеру, «stage», в которое занесем данные об email. При выборе этого окружения, на места всех переменных email поставится значение из окружения «stage». При этом, на проде могут быть совсем другие данные => при создании еще одного окружения «production» и занесении туда такой же переменной email с другим значением — мы можем в одно действие менять значения переменных всех запросов на нужное.

Еще одно место, где можно использовать окружения/переменные — при запуске папки/коллекции (можно выбрать окружение, для которого будет выполнен прогон запросов).

Предустановленные тесты от Postman

meme

Тесты можно прописывать во вкладке «Tests» для запроса. Здесь мы можем создавать свои скрипты, делать проверки, смотреть какие-то значение в респонсе (если мы знаем, что они там будут прописаны) и многое другое.

Вкладка "Tests" в конструкторе

Вкладка «Tests» в конструкторе

Предустановленные тесты находятся в блоке справа, который называется «Snippets». Мы их можем использовать и настраивать под себя. Один из распространенных тестов — проверка на статус код. Выбираем подходящий шаблон из списка и подставляем его.

Пример скрипта - проверки на статус код

Пример скрипта — проверки на статус код

Информация о прохождении наших тестов появляется во вкладке «Test Results». Успешные запросы — зелененькие. Если тест не прошел — ожидаемо, красненькие.

Пример не прошедшего теста

Пример не прошедшего теста

Теперь добавим тест на проверку того, что в ответе нам пришло какое-то значение. Из шаблонов выбираем «Response body: JSON value check». Вместо value пишем значение, которое хотим проверить.

Запрос, у которого в ответе будем проверять поле "name"

Запрос, у которого в ответе будем проверять поле «name»
Результаты проверки поля "name"

Результаты проверки поля «name»

Так же, теперь при запуске коллекции мы будем видеть все прошедшие и упавшие тесты:

Просмотр результатов тестов после запуска коллекции

Просмотр результатов тестов после запуска коллекции
meme

meme

Переменные в CSV и JSON файлах

CSV: Для начала создадим csv файл, в котором будет содержаться информация о нашем email и password. Вот несколько способов:

Способ 1: на windows можно создать обычный файл с расширением [.txt], которое мы изменим в последствии в проводнике. Либо, если у вас Mac — открываем TextEditor, вводим наши данные, сохраняем и при переименовании файла дописываем [.csv]. В всплывающем окне выбираем «использовать .csv».

Проверить, насколько корректно сохранился файл можно в любом редакторе кода* (открыть с помощью -> ваш редактор) и, если что, там же и подредактировать. [* если же у вас не стоит редактор кода — советую об этом позаботиться, тк ваша жизнь в IT еще ни раз вас подтолкнет им воспользоваться].

Способ 2: сконвертировать csv онлайн (не рекомендуется. В вашем файле могут появиться посторонние символы, которые будут мешать его правильному прочтению).

Способ 3: самый простой и надежный способ — создать файл сразу из редактора кода (далее рассмотрим «Visual Studio Code»). Открываем и выбираем «New File». Сразу вводим «Data.csv» и сохраняем. Далее там же редактируем сам файл и сохраняем изменения (На мой взгляд это куда проще, чем мучиться с созданием через обычный текстовый файл и переживать, а все ли хорошо сохранилось).

meme

meme

Теперь, как же правильно завести данные:

  • в первой строке через запятую и без пробелов вводим название наших переменных;

  • далее, в каждой следующей строке через запятую вводим комбинации-пары значений.

Пример структуры .csv файла через текстовый редактор

Пример структуры .csv файла через текстовый редактор

Далее переходим в Postman, создадим переменные (в нашем случае — email и password):

Создание переменных в коллекции

Создание переменных в коллекции

Давайте попробуем запустить нашу коллекцию! Перед стартом нажимаем на добавление файла и обязательно проверяем, что «Data File Type» выставился корректно. Если нет, можете поменять значение вручную. Так же здесь мы можем нажать на preview и посмотреть, правильно ли Postman прочитал наш файл.

Окно подготовки к запуску - выбор файла

Окно подготовки к запуску — выбор файла
Превью загруженного файла

Превью загруженного файла

Запускаем коллекцию и видим, что все 5 запросов успешно улетели. При нажатии на сам запрос можем посмотреть данные, которые мы как раз отправляли и убедиться, что ушло именно то, что хотели. (На статус код 400 в данном случае не обращайте внимания. Это из-за того, что мы используем OpenApi у которого есть свои внутренние ограничения).

Успешный запуск с помощью .csv файла

Успешный запуск с помощью .csv файла

JSON: по аналогии с созданием CSV файла — создадим JSON (способы описаны выше).

Как должен выглядеть JSON файл:

  1. Данные записываются в виде пар «ключ:значение»

  2. Пары данных разделены запятыми

  3. Объекты прописываются внутри фигурных скобок {}

  4. Массив (в том числе и из объектов) заключается внутри квадратных скобок []

Исходя из этого, заполняем наши тестовые данные.

Пример создания JSON файла через редактор кода

Пример создания JSON файла через редактор кода

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

Превью загруженного JSON файла

Превью загруженного JSON файла

Запросы успешно отправляются!)

Успешный запуск коллекции с помощью .json файла

Успешный запуск коллекции с помощью .json файла

Заключение

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

Теперь, имея базовое представление о том, как использовать различные методы HTTP, создавать запросы, организовывать тесты в коллекции и работать с переменными, вы можете эффективно исследовать и тестировать разнообразные API.

Помните, что Postman предоставляет множество возможностей для улучшения вашего рабочего процесса, включая автоматизацию тестов, создание документации и мониторинг производительности API. Это значит, что вы можете не только тестировать, но и оптимизировать работу вашего API, обеспечивая его стабильность и надежность.

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

Надеюсь, что данная статья помогла вам понять, с чего начать свое знакомство с Postman, и вдохновила на дальнейшее исследование этого полезного инструмента. Удачи в тестировании и разработке вашего API с помощью Postman!

Дополнительно:

Как и было обещано, список статус-кодов (самые популярные выделены жирным).

1XX:

  • 100 — Continue — Продолжить — этот промежуточный ответ указывает, что запрос успешно принят и клиент может продолжать присылать запросы либо проигнорировать этот ответ, если запрос был завершён.

  • 101 — Switching Protocol — указывает, что сервер переключился на протокол, который был указан в заголовке.

  • 102 — Processing — сервер получил запрос и обрабатывает его, но обработка ещё не завершена.

  • 103 — Early Hints — Ранние подсказки/ранняя метаинформация — разрешение пользовательскому агенту начать предварительную загрузку ресурсов, пока сервер все еще готовит ответ.

2XX:

  • 200 — OK — запрос успешно обработан.

  • 201 — Created — сервер подтвердил создание ресурса.

  • 202 — Accepted — Принято — запрос клиента был получен, но сервер все еще обрабатывает его.

  • 203 — Non-Authoritative Information — Не авторитетная информация — аналогично 200, но в этом случае предоставленная информация была не от исходного сервера, а из стороннего источника.

  • 204 — No Content — Нет содержимого — сервер обработал запрос, но не предоставил никакого содержимого.

  • 205 — Reset Content — Сбросить содержимое — клиент должен обновить документ, который прислал запрос.

  • 206 — Partial Content — Частичное содержимое — клиент присылает заголовок диапазона, чтобы выполнить загрузку отдельно, в несколько потоков.

3XX:

  • 300 — Multiple Choice — этот код ответа присылается, когда запрос имеет более чем один из возможных ответов. И User-agent или пользователь должен выбрать один из ответов.

  • 301 — Moved Permanently — Перемещён на постоянной основе — искомый ресурс был перемещен по другому адресу. Все пользователи и ресурсы будут перенаправлены на него.

  • 302 — Found — ресурс временно перемещен на другой URL.

  • 303 — See Other — сообщает клиенту, что сервер перенаправляет его не на запрашиваемый ресурс, а на другой.

  • 304 — Not Modified — используется для кеширования. Означает, что запрошенный ресурс не был изменен с последнего посещения.

  • 305 — Use Proxy — клиент может получить доступ только через прокси, указанном в ответе.

  • 307 — Temporary Redirect — Временное перенаправление — искомый ресурс был временно перенесен на другой URL. Различия с 302 — нельзя изменять используемый метод HTTP.

  • 308 — Permanent Redirect — искомый ресурс был перемещен по другому адресу. Все пользователи и ресурсы будут перенаправлены на него.Различия с 301 — нельзя изменять используемый метод HTTP.

4XX:

  • 400 — Bad Request — Плохой запрос — сервер не понимает запрос из-за неверного синтаксиса.

  • 401 — Unauthorized — Неавторизованно — для получения запрашиваемого ответа нужна аутентификация. Статус похож на статус 403, но,в этом случае, аутентификация возможна.

  • 402 — Payment Required — Необходима оплата.

  • 403 — Forbidden — Запрещено — у клиента нет прав доступа к содержимому, поэтому сервер отказывается дать надлежащий ответ.

  • 404 — Not Found — Не найден — сервер не может найти запрашиваемый ресурс. 

  • 405 — Method Not Allowed — Метод не разрешён — сервер получил и распознал запрос, но отклонил конкретный метод запроса.

  • 406 — Not Acceptable — веб сайт/приложение не поддерживает запрос клиента с определенным протоколом.

  • 407 — Proxy Authentication Required — Требуется подтверждение протокола — аналог 401. Различие с 401 лишь в том, что аутентификации должна быть проведена через proxy.

  • 408 — Request Timeout — Время ожидания запроса истекло — срок запроса, отправленного клиентом серверу — истек.

  • 409 — Conflict — Этот ответ отсылается, когда запрос конфликтует с внутренним текущим состоянием сервера.

  • 410 — Gone — запрашиваемый контент навсегда удалён с сервера.

  • 412 — Precondition Failed — в заголовках запроса указаны условия, которые сервер не может выполнить.

  • 413 — Request Entity Too Large — Размер запроса превышает лимит, объявленный сервером.

  • 414 — Request-URL Too Long — URL запрашиваемый клиентом слишком длинный для того, чтобы сервер смог его обработать

  • 417 — Expectation Failed — ожидание, полученное из заголовка запроса Expect, не может быть выполнено сервером.

  • 418 — I’m a teapot — я чайник.

5XX:

  • 500 — Internal Server Error — Внутренняя ошибка сервера — сервер столкнулся с ситуацией, которую он не знает как обработать.

  • 501 — Not Implemented — Не реализовано — метод запроса не поддерживается сервером и не может быть обработан.

  • 502 — Bad Gateway — Плохой шлюз — сервер, во время работы в качестве шлюза для получения ответа, нужного для обработки запроса, получил недействительный (недопустимый) ответ.

  • 503 — Service Unavailable — Сервис недоступен — сервер недоступен и не может обработать запрос клиента.

  • 504 — Gateway Timeout — сервер действует как шлюз и не может вовремя получить ответ.

  • 505 — HTTP Version Not Supported — HTTP-версия, используемая в запросе, не поддерживается сервером.

  • 511 — Network Authentication Required — Требуется сетевая аутентификация — клиент должен пройти аутентификацию в сети, чтобы получить доступ к ресурсу.

Весь современный веб построен на использовании API, да и вообще бэкенд редко обходится без программных интерфейсов. При всём удобстве работы с ними, есть и небольшая сложность: под эти интерфейсы нужно создавать архитектуру и логику, писать документацию, тестировать и масштабировать их.

К счастью, есть много сервисов, призванных облегчить этот процесс. Один из них — Postman. О нём часто говорят исключительно как об инструменте тестирования API, но это далеко не всё, что умеет платформа.

Postman — это сервис для создания, тестирования, документирования, публикации и обслуживания API. Он позволяет создавать коллекции запросов к любому API, применять к ним разные окружения, настраивать мок-серверы, писать автотесты на JavaScript, анализировать и визуализировать результаты запросов.

Программа поддерживает разные виды архитектуры API: HTTP, REST, SOAP, GraphQL и WebSockets. Postman вовсю используют в Twitter, WhatsApp и Imgur, но благодаря удобному графическому интерфейсу разобраться в платформе может даже новичок.

Скачать Postman можно бесплатно на официальном сайте. Есть версии под Linux, Windows и macOS — правда, перед началом использования нужно зарегистрироваться.

Основная сущность в Postman — рабочее пространство (workspace). В бесплатной версии доступно три вида рабочих пространств:

  • личное — видно только владельцу;
  • командное — видно только членам команды, которые в нём работают;
  • публичное — доступно всем желающим.

В Pro-версии появляется доступ к приватным рабочим пространствам — такие пространства доступны не всем членам команды, а только приглашённым. В Enterprise-версии добавляются партнёрские — они видны не только членам команды, но и приглашённым партнёрам.

Посмотрим, из чего состоит рабочее пространство Postman:

Скриншот: Postman / Skillbox Media

Самое интересное здесь — боковая панель слева. Семь её вкладок соответствуют основным инструментам Postman.

  • Collections. Здесь хранятся коллекции запросов к API. Несколько запросов внутри одной коллекции можно объединять в папки.
  • APIs. В этой вкладке можно хранить целые API: их определения и коллекции.
  • Environments. Здесь создаются и хранятся окружения, в которых лежат переменные. Активное окружение можно менять из любой вкладки в правом верхнем углу (где на скриншоте написано No Environment). Также тут можно создавать глобальные переменные, с которыми можно работать везде вне зависимости от окружения.
  • Mock Servers. Здесь можно создавать фиктивные серверы, которые имитируют поведение реальных. Это полезно при тестировании.
  • Monitors. Мониторы позволяют визуализировать и отслеживать работу API: следить за производительностью, проверять доступность и корректность работы сервера по расписанию, отправлять уведомления о сбоях.
  • Flows. Это инструмент, с помощью которого можно настроить логику API-приложений в визуальном редакторе. На март 2023 года он всё ещё доступен только в тестовом режиме, чтобы его использовать, придётся отправить заявку.
  • History. Здесь хранится история всех отправленных запросов. Их можно сохранять, объединять в коллекции, создавать для них документацию, мониторы и мок-серверы.

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

У платформы есть и собственный API, на котором любой желающий может протестировать работу сервиса и разобраться в работе запросов. Этот эхо-сервер возвращает клиенту те же данные, которые тот ему прислал. Документацию к нему можно прочитать здесь.

Давайте попробуем написать собственный запрос к API и протестировать его работу.

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

Скриншот: Postman / Skillbox Media

Изменим название на Test Collection. Для этого нажмём на три точки справа от New Collection и во всплывающем окошке выберем пункт Rename.

Скриншот: Postman / Skillbox Media

В рабочей области коллекции есть пять вкладок:

  • Authorization. Здесь можно настроить метод и параметры авторизации, которые будут использоваться в каждом запросе внутри коллекции.
  • Pre-request Script. Здесь можно написать программу на JavaScript, которая будет выполняться перед каждой отправкой запроса внутри коллекции. Для наиболее распространённых алгоритмов Postman предлагает готовые сниппеты. Их можно использовать, чтобы не писать код с нуля.
  • Tests. Работает как Pre-request Script, но выполняет код после выполнения запроса. Именно этот раздел используют тестировщики для проверки API. Здесь тоже есть готовые сниппеты.
  • Variables. Здесь можно создать переменную и присвоить ей значение. Потом эту переменную можно использовать, указав её название в двойных фигурных скобках {{имя переменной}}.
  • Runs. Postman позволяет запускать запросы не по отдельности, а все сразу — внутри одной коллекции или папки. В разделе Runs хранится информация о таких прогонах и результатах их тестов.

Создать запрос можно несколькими способами:

  • нажать в левом верхнем углу кнопку New и выбрать нужный тип запроса;
  • нажать на плюс на панели вкладок в верхней части приложения;
  • нажать на три точки возле названия коллекции и во всплывающем меню выбрать пункт Add request.

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

Напишем GET-запрос к https://postman-echo.com и назовём его Test GET (названия у запросов можно менять так же, как и у коллекций). Для этого:

  • Создадим новый запрос.
  • Выберем в нём метод GET.
  • Введём URL: https://postman-echo.com/get/.
  • В разделе Params введём ключи test_key1, test_key2 и значения test_value1, test_value2 соответственно.
  • Нажмём кнопку Send.

Скриншот: Postman / Skillbox Media

Эхо-сервер вернул нам JSON-файл с заголовками и аргументами, которые мы ему передали (некоторые заголовки Postman отправляет автоматически).

Также после получения ответа можно отдельно посмотреть cookies, заголовки и результаты тестов, если они были. Кроме того, Postman указывает статус ответа, скорость его получения и размер возвращённого файла.

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

Авторизация по умолчанию наследуется от коллекции, но её можно переопределить в запросе. Скрипты же выполняются полностью: как общие для коллекции, так и написанные специально для запроса.

Теперь напишем к нашему GET-запросу простой тест: проверку кода ответа. Если код ответа 200 (то есть запрос выполнен успешно) — тест пройден.

Для этого перейдём во вкладку Tests и в правой колонке найдём сниппет Status code: Code is 200. Нажмём на него — появится скрипт.

Скриншот: Postman / Skillbox Media

Теперь отправим запрос ещё раз. В поле ответа во вкладке Test Results появится отчёт о тесте: PASS (то есть пройден успешно).

Скриншот: Postman / Skillbox Media

Теперь напишем ещё два теста, но не внутри отдельного запроса, а внутри коллекции. Первый тест будет проверять, есть ли в теле ответа строка test_value2, второй — есть ли там строка string_you_want_to_search.

Перейдём к Test Collection, на вкладку Tests. Выберем сниппет Response body: Contains string и нажмём на него два раза. В первом блоке кода строку string_you_want_to_search заменим на test_value2, во втором оставим как есть. Не забудем сохранить изменения, чтобы новые тесты применились к запросу.

Скриншот: Postman / Skillbox Media

Теперь отправим к эхо-серверу тот же GET-запрос. Он должен пройти первый тест (потому что мы передавали test_value2 в качестве одного из значений) и не пройти второй. Посмотрим на результат.

Скриншот: Postman / Skillbox Media

Всё как мы и предполагали. К запросу применились как его собственные тесты, так и тесты всей коллекции, один из которых он не прошёл. Причём тесты коллекции выполнились первыми — до тестов самого запроса.

Порядок выполнения скриптов, написанных в разных местах коллекции, таков:

  • Сначала выполняются скрипты коллекции.
  • Затем скрипты папки (там их тоже можно писать).
  • И уже потом скрипты запроса.

Это работает с любым кодом: как внутри Tests, так и внутри Pre-request Scripts.

Переменные, как и тесты, «живут» на разных уровнях Postman, и писать их можно в разных местах:

  • Глобальные переменные применяются ко всему рабочему пространству. Написать их можно во вкладке Environments в разделе Globals.
  • Переменные коллекции создаются внутри конкретной коллекции и работают только внутри неё.
  • Переменные окружения задаются на уровне окружения во вкладке Environments. Чтобы применить их к запросу, нужно напрямую связать его с окружением.
  • Локальные переменные существуют на уровне скриптов, которые выполняются при отправке запросов.
  • Переменные данных возникают, когда мы пользуемся Collection Runner — инструментом для запуска сразу всех скриптов внутри коллекции или папки.

Чем меньше область видимости переменной, тем выше её приоритет. То есть если где-то встретятся глобальная и локальная переменная с одинаковыми именами, то применится значение локальной переменной.

Создадим новое окружение Test Environment — сделать это можно по аналогии с созданием коллекции, но только во вкладке Environment.

Скриншот: Postman / Skillbox Media

Создадим переменную test_variable и присвоим ей значение test_value3. Сохраним изменения в окружении.

Скриншот: Postman / Skillbox Media

Затем перейдём к тестовой коллекции и применим к ней окружение, выбрав его в правом верхнем углу. Теперь мы можем использовать в этой коллекции все переменные окружения.

Скриншот: Postman / Skillbox Media

Усовершенствуем второй скрипт в тестах коллекции. Для этого строку «string_you_want_to_search» заменим на сниппет Get an environment variable. В нём variable_key заменим на название переменной test_variable. Сохраним изменения.

Таким образом, второй скрипт будет проверять, есть ли в ответе сервера соответствие не строке string_you_want_to_search, а содержимому переменной test_variable.

Скриншот: Postman / Skillbox Media

Теперь перейдём к GET-запросу и создадим новый параметр. Его ключом будет test_key3, значением — содержимое переменной test_variable. Для этого её название заключим в двойные фигурные скобки {{}}. Сохраним изменения и отправим запрос.

Скриншот: Postman / Skillbox Media

Как видим, все тесты пройдены. Значит, значение нашей переменной корректно извлекается и в параметрах запроса, и в тестах.

Скриншот: Postman / Skillbox Media

Postman — инструмент для работы API в течение всего его жизненного цикла. Но особенно часто им пользуются тестировщики из-за богатого инструментария запросов к API: в нём можно создавать и настраивать запросы, объединять их в коллекции и папки, применять к ним разные окружения со своими переменными, писать автотесты.

У Postman есть платные тарифы, но для начала работы, личных проектов и тестирования API подойдёт и бесплатная версия.

Postman API Platform — это популярный HTTP-клиент для создания, тестирования и документирования API. Он позволяет отправлять запросы различным сервисам и работать с их ответами. Настоящая палочка-выручалочка для тестирования бэкенда.

Давайте сразу договоримся: в комментариях вы можете предлагать любой аналогичный сервис и расписывать его плюсы. Но поскольку статья у нас о Постмане, то и дифирамбы будем петь ему.

Для начала держите ссылку на Postman, чтобы иметь возможность изучать его параллельно со статьёй. Дальше перекатываемся к преимуществам сервиса:

  1. Бесплатный.
  2. Он интуитивно-понятен, а потому предельно прост в использовании и подходит даже новичкам.
  3. Поддерживает REST, SOAP, GraphQL.
  4. Расширяемый с помощью Postman API.
  5. Интегрируемый в CI/CD с помощью консольной утилиты Newman.
  6. Большое комьюнити, что позволяет получить ответ практически на любой вопрос.

Загрузка и установка Postman

Поскольку теперь вы знаете о приложении и ознакомились с принципами его работы, пришло время установить приложение. В этой статье мы рассмотрим, как загрузить и установить Postman на ОС Windows.

Стоит отметить, что Postman доступен для Windows, Linux и MacOS в виде отдельного приложения. Вы можете установить приложение двумя способами:

  1. Как отдельное десктопное приложение
  2. Как расширение Google Chrome

Мы подробно рассмотрим оба способа.

Скачать Postman как отдельное приложение

Десктопный вариант — это стандартное ПО, которое вы устанавливаете на ПК. Такое приложение пользуется поддержкой только вашей операционной системы, а не другого приложения, потому что оно как раз и написано для конкретной ОС.

Большой гайд по работе с Postman API Platform 1

  1. Перейдите по ссылке https://www.postman.com/downloads/.
  2. Выберите операционную систему, на которую вы хотите установить Postman, и нажмите кнопку «Загрузить». Поскольку у меня машина с Windows 64-бит, то и устанавливать я буду версию для x64-Windows.
  3. Тыкаем на загруженный файл .exe и устанавливаем.
  4. Установка не требует никаких дополнительных действий. После завершения установки автоматически начнется открытие инструмента Postman.
  5. Создаёте учётную запись и пользуетесь инструмерегис

Большой гайд по работе с Postman API Platform 2

Скачать Postman как расширение Google Chrome

  1. Перейдите по ссылке на расширение в веб-магазине Chrome и добавьте Постман в список своих расширений.
  2. Тыкайте на свежеустановленный extension.
  3. После этого вы увидите страницу регистрации.

Но следует отметить, что в расширении доступны не все родные функции приложения. Например, расширение не позволяет нормально работать с прокси. В этом случае для прокси потребуется установить ещё одно расширение, которое называется Postman Interceptor.

Навигация в Postman API Platform

Теперь, когда Postman установлен (а в моём случае установлен он как полноценное приложение), начинаем изучение пользовательского интерфейса.

Навигацию Postman можно разделить на четыре основных блока пользовательского интерфейса, как показано ниже:

Большой гайд по работе с Postman API Platform 3

  1. Сайдбар → Фильтр, по которому можно найти запрос, который создавали; История запросов; Коллекции запросов.
  2. Хедер → Кнопка New, которая отвечает за создание нового запроса, коллекции и окружения; Импорт документов; Раннер, с помощью которого запускается тестирование запросов; Меню для работы со вкладками; Переключение рабочей области; Кнопки настроек, уведомлений, авторизации, etc.
  3. Билдер → Окружения и менеджер окружений; Вкладки; HTTP-метод; URL; Прочие Builder-элементы, которые позволяют работать с запросами.
  4. Ответы → Заполняется только при вызове REST-запроса. Этот раздел будет заполнен деталями полученного ответа.

Это краткое описание навигации, но и его достаточно, чтобы более-менее ориентироваться в интерфейсе данного инструмента.

Создание запроса в Postman

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

1. Кликаем по кнопке New, которая находится в хедере:

Большой гайд по работе с Postman API Platform 4

2. В появившемся меню выбираем Request:

Большой гайд по работе с Postman API Platform 5

3. Вводим осмысленное имя запроса, например, First API, который мы используем. Вы также можете использовать описание API для более подробных сведений, но это поле не является обязательным.

Большой гайд по работе с Postman API Platform 6

4. Теперь вводим имя коллекции, например, First Collec, и выберем +Create Collection, как показано на скрине. После нажимаем на Save.

Большой гайд по работе с Postman API Platform 7

5. В сайдбаре кликаем по табу Collections, выбираем только что созданную коллекцию и First API:

6. В поле URL вводим www.google.com и нажимаем Send:

Большой гайд по работе с Postman API Platform 9

7. В завершение либо нажимаем Save, если хотим перезаписать текущий запрос, либо выбираем Save As и сохраняем, как новый запрос:

Большой гайд по работе с Postman API Platform 10

Таким образом, мы создали запрос и сохранили его в нужной коллекции.

Отправка GET-запроса в Postman API Platform

Вспомним основы. Существует 4 основных метода НТТР, которые мы используем в запросах для взаимодействия с ресурсами в системе REST:

  • GET — получение конкретного ресурса (по id) или коллекцию ресурсов;
  • POST — создание нового ресурса;
  • PUT — обновление конкретного ресурса (по id);
  • DELETE — удаление конкретного ресурса по id.

Грубо говоря, на первом этапе мы ставим перед собой не самую сложную задачу, а именно запрос на получение данных.

Запрос GET содержит всю информацию внутри URL-адреса, и, поскольку URL-адрес виден всё время, рекомендуется не использовать этот тип запроса при отправке конфиденциальной информации, такой как пароли.

Например, когда вы нажимаете поиск после ввода чего-либо в поле поиска google.com, вы на самом деле выполняете GET-запрос, потому что там нет конфиденциальной информации, и вы просто запрашиваете страницу с нужными вам результатами поиска.

Теперь разберём отправку GET-запроса пошагово.

1. В выпадающем меню выбираем GET:

Большой гайд по работе с Postman API Platform 11

2. Как мы уже делали выше, в поле URL вводим www.google.com и нажимаем Send. Только в этот раз давайте посмотрим, что будет в статус-коде и теле ответа:

Большой гайд по работе с Postman API Platform 12

Подробнее о кодах ответа. Если кратко, то код 200 в нашем случае означает, что данные были успешно извлечены и переданы в теле ответа. Другими словами, мы достучались до EndPoint и получили желаемый результат. При этом тело ответа подаётся в трёх возможных вариантах:

  • Pretty — понятная структура ответа с окрашенными символами и, в ряде случаев, отступами для удобства.
  • Raw — то же самое, но без цветов, отступов и разбития на строки.
  • Preview — показывает предварительный просмотр отправленной страницы.

Вот и всё, ничего сложного.

Построение POST-запроса в Postman API Platform

Итак, данный метод используется, когда нужно отправить на сервер дополнительную информацию внутри тела запроса. Как правило, когда мы отправляем запрос POST, мы ожидаем каких-либо изменений на сервере, таких как обновление, удаление или вставка.

Одним из лучших примеров использования POST-запроса является вход на сайт. При регистрации вы отправляете на сервер свою личную информацию, такую как пароль. Сервер создает новую учетную запись с той же информацией, что и у вашей учетной записи.

Запрос POST является основным методом, и этот метод в основном используется, когда пользователь хочет отправить на сервер конфиденциальные данные.

Важные моменты POST-запроса:

  1. Запросы POST не будут принимать файлы cookie.
  2. POST-запросы не добавляются в закладки и не отпечатываются в истории браузера.
  3. В запросах POST нет ограничений на длину данных.

В Postman каждая конечная точка REST API связана со своим HTTP-запросом. Когда конечная точка указывает, что ее следует вызывать с помощью HTTP-запроса POST, то для вызова конечной точки требуется только HTTP-запрос POST.

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

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

  1. Для типов данных формы и URLencoded body Postman автоматически прикрепит правильный заголовок.
  2. Если вы используете raw для данных body, Postman установит заголовок на основе выбранного вами типа (например, текст или json).
  3. Если вы вручную выберете заголовок типа, он будет иметь приоритет над тем, что устанавливает Postman.
  4. Postman не устанавливает тип заголовка для типа binary.
  5. По умолчанию будет выбран тип none.

Form-data

Формы веб-сайтов часто отправляют данные в API как multipart/form-data. Вы можете воспроизвести это в Postman, используя вкладку Form-data Body. Данные формы позволяют отправлять пары ключ-значение и указывать тип содержимого.

Большой гайд по работе с Postman API Platform 13

URL-encoded

Данные в URL-encoded используют ту же кодировку, что и параметры URL. Если для вашего API требуются данные в кодировке URL, выберите x-www-form-urlencoded на вкладке Body вашего запроса. Введите пары ключ-значение для отправки вместе с запросом, и Postman закодирует их перед отправкой.

Raw

Используйте raw-данные для отправки всего, что вы можете ввести в виде текста. Используйте вкладку raw и раскрывающийся список типов, чтобы указать формат, например: текст, JavaScript, JSON, HTML или XML. Таким образом Postman включит подсветку синтаксиса, а также добавит соответствующие заголовки к вашему запросу.

Большой гайд по работе с Postman API Platform 14

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

Для удобства в raw JSON вы можете добавить комментарии: они будут удалены при отправке запроса. Однострочные комментарии с // и многострочные комментарии с /* */ не будут учтены в запросе.

Binary

Кажется, здесь всё понятно, но проговорим ещё раз. Вы можете использовать тип binary для отправки информации, которую нельзя ввести вручную в редакторе Postman вместе с телом запроса, например изображения, аудио- и видеофайлы. Вы также можете отправлять таким образом и текстовые файлы.

GraphQL

Вы можете отправлять запросы GraphQL, выбрав соответствующую вкладку. Введите свой код в области запросов и любые переменные в разделе GraphQL Variables.

Большой гайд по работе с Postman API Platform 15

Более подробно о работе с GraphQL в Postman вы можете ознакомиться здесь.

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

Не стоит забывать и о том, что в инструменте предусмотрены специальные переменные. Что это такое?

Переменная в Postman — это символическое представление данных, которое позволяет получить доступ к значению без необходимости вводить его вручную, где бы оно вам ни понадобилось. Это крайне полезно в тех случаях, когда вы используете одни и те же значения в нескольких местах. Переменные делают запросы более гибкими и читабельными, абстрагируя детали.

Предположим, у вас есть один и тот же URL-адрес в нескольких запросах, но URL-адрес может измениться позже. Чтобы не менять его руками во всех запросах, можно сохранить URL-адрес в переменной base_url и ссылаться на него в своих запросах, используя конструкцию {{base_url}}. Если URL-адрес изменится, вы можете изменить значение переменной, и оно будет отражено во всей вашей коллекции, где бы вы ни использовали имя переменной.

При этом рандомных переменных в Postman много. Если при написании кода начать вводить парные фигурные скобки, Postman сам подскажет, какие из них доступны.

Большой гайд по работе с Postman API Platform 16

Максимально подробно о переменных в документации к Postman API Platform.

Заключение

Если хотите узнать больше о других методах запросов, таких как POST, PUT, DELETE, обязательно прочитайте эту статью: она доступно ответит на все ваши вопросы.

А для желающих самостоятельно построить API, у нас также есть полезный материал:

Остались вопросы? Смело задавайте их в комментариях к данной статье.

Postman — программа, которая проверяет работу API с помощью запросов. Они могут содержать файлы, cookie, HTTP-заголовки, параметры форм. В статье покажем основные бесплатные функции программы и расскажем о нескольких простых действиях, которые можно в ней выполнять.

В онлайн-университете Skypro есть программа «Инженер по тестированию» — на ней ученики осваивают профессию с нуля за 12 месяцев, делают четыре проекта для портфолио. Преподаватели — руководители отделов тестирования и старшие разработчики в ВТБ, Skyeng и других крупных компаниях. 95% выпускников выходят на работу в течение четырех месяцев: в этом помогает центр карьеры.

Скачайте бесплатную версию Postman с официального сайта. Приложение адаптировано для Windows, MacOS и Linux.

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

В статье будем использовать бесплатный сервис {JSON} Placeholder. Он предоставляет бесплатный API с фейковыми данными, чтобы тестировать приложения.

Интерфейс

Главное окно состоит из четырех рабочих блоков:

  1. основное меню;
  2. сайдбар;
  3. выбор типа запроса и сам URL;
  4. рабочая область.

Интерфейс Postman

Как выполнить запрос

В Postman запросы — основная рабочая единица. Чтобы выполнить запрос, нажмите «+» и выберите его тип. Например: «основной — GET». После укажите URL в адресной строке и щелкните Send.

Выполняем запрос

Выполняем запрос

Как передавать параметры

Чтобы проверить передачу параметров, используйте онлайн-сервис postman-echo.

GET-параметры

Нажмите «+», чтобы создать новый запрос → в поле запроса пропишите https://postman-echo.com/get → метод GET.

GET-параметры указывают в разделе Params. Откройте этот раздел под строкой запроса и наберите название параметра в графе Key (например, Foo), а его значение — в Value (например, Bar). Теперь кликните Send и смотрите результат.

Передаем GET-параметры

Передаем GET-параметры

Параметры формы

Параметры формы передаются с помощью POST-запросов. Нажмите «+» → POST → в адресную строку добавьте https://postman-echo.com/post. В теле запроса (Body) выберите вкладку form-data и заполните необходимые поля → отправьте (Send).

Передача файла

Для этого в form-data поменяйте тип параметра с Text на File. Полученный ответ будет храниться в разделе Files.

Заголовки

Чтобы отправить данные в заголовке, перейдите в раздел Headers, затем введите сам заголовок и его значение.

Передаем заголовок

Передаем заголовок

Авторизация

Есть много методов и способов, чтобы зарегистрироваться и авторизоваться на сервере. Рассмотрим базовую схему авторизации. При такой схеме логин и пароль передаются в заголовке «Authorization» в незашифрованном виде. С помощью Postman можно убедиться, что протокол работает правильно и, главное, безопасно.

Для примера возьмем URL-адрес https://postman-echo.com/basic-auth.

Поменяйте метод на GET. Откройте вкладку Authorization → Нажмите Type → Basic Auth. Введите имя пользователя — postman, пароль — password → Send. Если протокол авторизации работает корректно, сервер выдаст: authenticated: true.

Проверяем авторизацию Basic Auth

Проверяем авторизацию Basic Auth

История запросов

Если некоторые запросы используете чаще других, необязательно раз за разом вводить новые данные. Можно воспользоваться списком в разделе History. Он хранит предыдущие запросы.

Коллекции запросов

Чтобы хранить запросы, есть специальные архивы — коллекции. Здесь можно структурировать, организовывать запросы, раскладывать по папкам, чтобы их было проще найти. Это полезно для средних и больших проектов.

Чтобы создать коллекцию: в разделе Collection нажмите «+» → дайте ей название → заполните запросами (Add request).

Как тестировать запросы

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

Запрос состоит из URL-адреса и HTTP-метода. Последний указывает тип действия, который запрашивается у API. Вот наиболее распространенные методы:

  • GET — получить данные;
  • POST — добавить новые данные;
  • PUT — заменить данные, которые имеются;
  • PATCH — обновить некоторые поля данных;
  • DELETE — удалить данные.

Например, если вы тестируете API онлайн-планировщика дел, можете использовать: GET-метод — чтобы получить текущий список задач; POS — чтобы создать новую задачу; PUT или PATCH — чтобы редактировать существующую; DELETE — чтобы удалить задачу.

Правильно формулировать запросы с помощью Postman и других инструментов и создавать нагрузочные тесты для API можно научиться на курсе «Инженер по тестированию» в Skypro. За девять месяцев освоите все основные инструменты тестировщика и сможете устроиться на престижную и высокооплачиваемую работу.

GET-запросы

В качестве примера возьмем API:

Нажмите «+» → Выберите GET-запрос → Задайте URL-адрес https://jsonplaceholder.typicode.com/users → Send.

GET-запросы

Если запрос выполнен корректно, в нижней панели появится надпись: «Status: 200 ОК».

POST-запросы

POST-запросы позволяют отправлять новую информацию. Например, данные о пользователе:

Кликните «+» → Выберите POST-запрос → Задайте URL-адрес https://jsonplaceholder.typicode.com/users → Перейдите в раздел Body → Выберите Raw > JSON → Введите данные пользователя → Send.

Если запрос выполнен корректно, вы увидите статус «201 Created».
[webinars]

Создание переменных окружения

Переменные окружения чаще используют, чтобы хранить части URL-адреса. Для работы с ними используют простой синтаксис. После того как создадите переменную, к ней можно обратиться через двойные фигурные скобки, например: {{param}}. При этом появится автозаполнение: программа покажет вам все доступные переменные с таким именем.

Как создать переменную:

  1. Слева выберите раздел Environments.
  2. Чтобы создать глобальную переменную — Globals. Если нужны локальные переменные, нажмите «+» сверху, чтобы создать свое окружение.
  3. В графе VARIABLE введите имя переменной, в INITIAL VALUE — ее значение. Для примера создадим глобальную переменную, назовем json, а в качестве значения зададим базовый URL — https://jsonplaceholder.typicode.com.
  4. Сохраните (Save).

Чтобы воспользоваться переменной, в адресной строке откройте две фигурные скобки и наберите json. Вы увидите список доступных переменных, включая ту, которую мы только что создали: {{json}}/posts — для списка постов, {{json}}/users — чтобы получить список пользователей.

Создание переменной

Создание переменной

Подробнее о доступных методах и конечных точках для этого API смотрите на официальном сайте.

Как создать тесты в Postman

В Postman тесты нужны, чтобы определить ошибки в работе API и переписать неправильные фрагменты кода. Чтобы запустить тест, откройте запрос и перейдите в раздел Tests.

Введите следующий код:

pm.test("Status test", function () {
pm.response.to.have.status(200);
});

Нажмите Send, чтобы Postman запустил тестовый сценарий. Выходные данные появятся на вкладке Tests Results. Если всё выполнено верно, будет написано:

PASS: «Status code: Code is 200».

Как запускать коллекции тестов

В Collection Runner

В разделе Collections найдите кнопку Run.

В новом окне выберите окружение и задержку. Если тест будет выполняться без задержки, его результат может быть ошибочным, поэтому лучше указать хотя бы минимальное значение.

Установите значение iterations равным десяти и нажмите Send.

Откроется отчет, который можно экспортировать (Export Results).

В Newman

Это приложение, которое использует командную строку вместо графического интерфейса. С его помощью можно запускать тесты с консоли.

  1. Установите NodeJS по ссылке: http://nodejs.org/download/.
  2. Введите в командной строке:
    npm install -g newman.
  3. В разделе Collections нажмите значок «⋮».
  4. Выберите Export → Export Collection as Collection 2.1 (Recommended) → Export.
  5. Выберите папку для экспорта и нажмите Save.
  6. Теперь нужно экспортировать окружение, которое используется в этой коллекции. Выше мы использовали глобальное окружение. Зайдите в Environments → Globals → выберите Export (рядом с Save). Затем выберите нужную папку и кликните Save.
  7. В терминале откройте папку, куда сохранили коллекцию с переменными окружения.
  8. Запустите коллекцию командой:
newman run [название файла коллекции].json -e [название файла с переменными].json

Инженер по тестированию — важный специалист в сфере IT: без его внимания не обходится ни один программный продукт. В онлайн-университете Skypro обучиться этой профессии можно с нуля за 12 месяцев. За это время вы научитесь проводить ручное и автоматическое тестирование, работать с системами баг-трекинга и Git. В конце учебы получите диплом о профессиональной переподготовке.

Главное о Postman

  • Postman — самый популярный сервис, чтобы тестировать API. Его используют более семнадцати миллионов разработчиков.
  • В Postman есть бесплатная версия. Ее функций вполне достаточно, чтобы решать базовые задачи.
  • Приложение работает по принципу запросов. Они могут включать данные, которые приложение будет запрашивать у API. Данные могут передаваться не только в виде текста, но и файлов.
  • Основные преимущества Postman: простой интерфейс, поддерживает разные типы API, интегрируется и поддерживает расширения, которые позволяют настроить программу, чтобы решать конкретные задачи.

Тестирование API может превратиться в настоящую головную боль для тестировщика: нужно как-то слать запросы, стандартные инструменты структуризации тестирования для API работают плохо, не все функции API могут быть задокументированы. Postman создан для того, чтобы решить все эти проблемы: у программы Postman есть своя структуризация, Постман позволяет слать любые запросы (в том числе с файлами и ключами авторизации), внутри программы есть инструменты для документирования внешнего API. Поскольку API есть у любого более-менее крупного проекта, вам обязательно нужно знать, как пользоваться Postman, если вы собираетесь стать QA. Ниже – Постман для чайников: гайд о том, как пользоваться базовыми функциями инструмента + набор фишек для придвинутых пользователей.

Тестирование API – что такое и зачем нужно

Где учат работе с Postman?

Для начала разберемся с API. API – это интерфейс взаимодействия приложения с другими приложениями. Например, у вас есть веб-приложение, которое выдает текущую погоду в разных городах. Вы собираете данные из какой-то базы (в этом примере источник значения не имеет), после чего эти данные форматируются и отправляются на какой-то сайт. Сайт взаимодействует с приложением, и делает он это с помощью интерфейса (набора допустимых команд), определенного приложением. Этот интерфейс и есть API. 

На практике это выглядит так – есть сервер, который принимает HTTP-запросы на порт. Внутри сервера написана следующая логика:

  • Если приходит GET-запрос, в теле которого написано «Pls send data all current» – нужно взять всю информацию из базы данных по текущему времени и отправить.
  • Если приходит GET-запрос, в теле которого написано «Pls send data Moscow current» – нужно взять текущие данные по погоде в Москве и отправить.
  • Если приходит GET-запрос, в теле которого написано «Pls send data Moscow all» – нужно отправить из базы все данные по Москве за последние 100 лет.
  • Если приходит запрос, который не подходит под шаблон «Pls send data [город] [период]» – нужно отправить ошибку 404.

Вот этот интерфейс, при котором мы определяем допустимые запросы и допустимые ответы – это и есть API.

Тестирование API – это когда мы убеждаемся в том, что API:

  • Принимает все допустимые запросы.
  • Принимает только допустимые запросы.
  • Выдает все допустимые ответы.
  • Выдает только допустимые ответы.

Для того, чтобы провести тестирование API, нам нужно: знать, что API может принимать и выдавать; иметь возможность посылать запросы. Кроме того, серьезное тестирование имеет ряд дополнительных требований, нужно иметь возможность: посылать файлы, проводить авторизацию, раскидывать тесты по папкам, запускать сразу несколько тестов из какой-либо категории, настраивать автоматическое тестирование через определенные промежутки времени, вести документацию тестирования. Если делать все это вручную – на написание скриптов уйдет много времени и сил, но есть другой выход.

Постман – что это такое

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

Одно из центральных отличий Postman от других программ для тестирования – возможность создания Mock-сервера. Когда вы работаете с API, обычно вам нужно не просто послать запрос откуда-то, вам нужно послать запрос с сервера, и в запросе должны быть указаны данные запрашивающего сервера. Если вы пытаетесь создать запрос вручную, вам все эти параметры приходится постоянно прописывать или копировать. Postman избавляет вас от этой проблемы – он создает Mock-сервер, который имитирует настоящий сервер, вам нужно один раз прописать параметры – и все, можете писать любые запросы.

Установка Postman

Устанавливается он очень просто, как и любая программа:

  1. Идете на страницу загрузки официального сайта.
  2. Скачиваете установочник.
  3. Запускаете его, устанавливаете программу.
  4. Регистрируете бесплатный аккаунт.

  5. Выставляете настройки в конце установки. Рекомендуем слева оставить все как есть, справа выбрать цвет темы.

Работа с Postman

Запросы и коллекции

Запросы – это основа Postman, потому что именно с помощью запросов мы можем тестировать API. Со временем количество запросов будет увеличиваться, и в их списке будет очень легко потеряться, поэтому запросы нужно сортировать по коллекциям. Если говорить грубо, то коллекции – это папки для хранения запросов. Организация коллекций – это отдельная большая тема, про которую вас вполне могут спрашивать на собеседовании, но если вкратце: коллекции должны иметь логичную структуру, их нужно выделять на основе какого-то признака: версия тестируемого API, отдельный блок функциональности и так далее.

И запросы, и коллекции создаются с помощью кнопки «New» в левой верхней части интерфейса:

Жмете на «Коллекции» – создается новая коллекция:

Из параметров на данный момент вам нужно задать только имя, все остальное можете оставить стандартным:

Теперь нужно создать запрос – наведите мышь на коллекцию слева, нажмите на 3 точки, выберите «Добавить запрос»:

Теперь вам нужно задать параметры запроса. Укажите имя, тип и URL (мы для примера используем тестовый API самого Postman). Для тестирования чаще всего используется GET-запрос, поэтому он выставлен по умолчанию. Параметры запроса можно писать как в центральном окне параметров, так и прямо в URL – в этом случае Postman сам подхватит все параметры и занесет их в таблицу.

Все, жмите на Send справа от строки URL. В нижнем окне вы увидите ответ от API – статус HTTP-ответа (200 означает, что все прошло успешно) и сам ответ в том формате, в котором API его высылает (чаще всего используют JSON). При желании можете посмотреть куки, которые были сформированы в процессе работы.

Теперь разберемся со вторым по популярности инструментов – POST-запросами. Post в переводе с английского – это когда мы что-то куда-то пишем, следовательно в запросе мы будем указывать какую-то информацию, которую API должен куда-то записать. Сначала создадим POST-запрос.

В качестве URL укажем адрес API, проверяющего JSON на корректность. После этого нам нужно выбрать вкладку «Body» запроса и вписать туда наш тестовый JSON.

Жмем на Send – нам приходит ответ 201 от сервера (успешно создана новая запись), в окне ответа API указана информация, которую мы получили от сервера.

Параметризация и переменные окружения

Когда тестов станет очень много, появится проблема: есть много одинаковых данных, которые вам нужно раз за разом вводить в каждый новый запрос. Чтобы с этой проблемой справиться, вам нужно использовать глобальные переменные (плохой вариант) или переменные окружения (хороший вариант). Переменная – это заданное вами имя, которому присваивается заданное вами же значение. Например, вы тестируете API сайта sravni.ru. Вам нужно создать 200 запросов, и каждый раз вам нужно писать https://sravni.ru/api/, после чего уже идет тело самого запроса к API. Вместо того, чтобы раз за разом вводить имя сайта, вы можете создать переменную site, которой присвоите значение https://sravni.ru/api/. В этом случае в запросе нужно будет писать не https://sravni.ru/api/get?foo1=bar1&foo2=bar2, а {{site}}/get?foo1=bar1&foo2=bar2 – короче и проще (все переменные в Постман указываются в двойных фигурных кавычках, {{переменная}}).

Такие переменные могут быть либо глобальными, либо переменными окружения. Глобальные переменные – допустимая, но плохая практика, поскольку с увеличением количества коллекций и запросов может случиться так, что переменные начнут перекрывать друг друга. Переменные окружения – это набор переменных, добавленных в конкретное именованное окружение. Вы просто переключаете окружение при необходимости – и ко всем запросам начинают применяться переменные выбранного окружения.

Для того, чтобы создать переменные окружения, сначала нужно создать само окружение. Для этого у Postman есть специальный раздел.

Здесь редактируются и глобальные переменные (вкладка Globals), и переменные окружения. Чтобы создать новое окружение, вам нужно нажать на плюсик над Globals, после чего – указать имя окружения и задать переменные.

Создадим переменную site, которая будет указывать на стандартный тестовый API Postman. Тип оставьте Default, есть еще Secret, но он вам сейчас не нужен (он используется для секретных данных, вроде паролей и ключей зашифрованного соединения). Не забудьте нажать на Save, чтобы сохранить новую переменную.

Теперь переходим в наш GET-запрос, изменяем URL, жмем на «Послать» и… не работает.

Почему не работает? Потому что мы не назначили окружение, в правом верхнем углу так и написано: «No environment». Жмем на эту надпись, выбираем наше окружение.

Запускаем – теперь работает так, как надо.

К слову, переменные можно добавлять и для коллекции – нажмите на коллекцию левой кнопкой мыши и перейдите в Variables.

Создание тестов

Автоматизация – это то, что делает Postman практически незаменимым. Автоматизация начинается с тестов. Тест – это когда вы задаете запрос и ответ на него, если ответ совпадает с тем, что вам нужно – загорается зеленая лампочка (все хорошо), если ответ не совпадает – загорается красная (все плохо). Тесты для каждого запроса задаются в отдельной вкладке.

Тесты создаются либо скриптами, либо через готовые сниппеты. 

Когда выбираете сниппет, в окно скриптов автоматически добавляется нужный тест. Выберем сниппеты «Response time is less than 200ms», «Status code: code is 200» и «Status code: successful POST request»

Запускаем – получаем 2 пройденных теста и 1 заваленный.

Третий тест завалился, так как мы послали GET-запрос, который возвращает код 200 при успехе, а POST-запрос возвращает коды 201 или 202 при успехе.

Файлы и авторизация

Вкратце о том, как их использовать. Файлы посылаются через вкладку Body запроса, выбираем тип тела – Form-data, выбираем тип ключа – файл.

Авторизацию можно настроить на соответствующей вкладке запроса. Выбираете тип авторизации и вводите/указываете ее параметры. Базовая авторизация по логину-паролю – Basic Auth.

Автоматизация

На тестах автоматизация не заканчивается – Postman позволяет вам запускать наборы запросов/коллекций вручную или автоматически. Делается это с помощью специального тула, Collection Runner.

Для эксперимента мы добавили в наш второй запрос (POST) 2 теста: код ответа 200 или 201 и скорость ответа – менее 200 мс. Теперь жмем на меню программы в левом верхнем углу, выбираем File -> New Runner Tab.

Вы увидите интерфейс Раннера.

Теперь вам нужно перетащить интересующие вас запросы из левого окна в центральное (можно перетащить всю коллекцию), а в правом окне нужно выбрать тип проверки и настроить его. Выберите Schedule runs, чтобы проверки проводились время от времени (так настраивают регрессионное тестирование). Укажите имя, задайте таймер и окружение с переменными.

Когда настанет указанное время, Runner автоматически запустит тест и покажет вам:

  1. График успешности проведенного теста.

  2. Результаты по каждому тесту.

Полезные фишки

Вкратце о других полезных функциях Postman:

  • Ведение документации API. У программы есть мощные инструменты для создания и ведения документации по API, гайд можно найти здесь.
  • Создание Mock-сервера. Про это есть детальная статья на Хабре, в блоге Ростелекома.
  • Поиск переменных по окружениям. Вы можете написать скрипт, который будет автоматически искать переменные, поднимаясь выше по иерархии области видимости при неудаче.
  • Написание запросов на JS. Если вы знаете JavaScript, вы можете писать многие вещи (в том числе и запросы) исключительно на этом языке. Ознакомьтесь с детальным гайдом от Postman.
  • Получение ответов в JSON. Опять же, если вы знакомы с JS и JSON – вы можете писать сложные тесты, которые включают в себя получение ответа от API в JSON-формате с последующим анализом этих ответов скриптами.
  • Вcтроенные библиотеки. Postman имеет несколько встроенные JS-библиотек, которые вы можете использовать в своей работе – валидация JSON, конвертер из XML, библиотеки для шифрования/дешифрования и так далее.
  • Глобальные скрипты. Если вы часто используете какой-либо скрипт или он должен использоваться вообще везде – вы можете создавать глобальные скрипты, которые можно будет быстро вызывать из любой строки локального скрипта.

Плюсы и минусы Postman

Из плюсов:

  • Есть автоматизация.
  • Понятный интерфейс.
  • Широкие возможности для написания скриптов.
  • Детальный мануал по работе со всеми компонентами программы от разработчиков.

Минусы:

  • Нужно учить JS, чтобы пользоваться самыми полезными функциями.
  • Подходит только для тестирования REST API.
  • Нет встроенной системы контроля версий.
  • Если пользуетесь десктопной версией – нужно постоянно держать ее открытой, чтобы была возможность автоматического тестирования через равные промежутки времени.

Где учат работе с Postman?

Postman – это один из инструментов тестировщика, причем им пользуются как мануальные тестировщики, так и те, кто занимается автоматизацией тестирования. А тестировщиков обычно учат на курсах:

Курс «Инженер по тестированию: расширенный курс» от Нетология

Школа

Нетология

Стоимость

130 500 руб

Цена в рассрочку

3 816 руб/мес

Длительность курса

14 месяцев

Программа трудоустройства

Есть

Формат

Запись лекций, Онлайн занятия с преподавателем

Курс «Тестировщик ПО» от Eduson Academy

Школа

Eduson Academy

Стоимость

83 912 руб

Цена в рассрочку

3 995 руб/мес

Длительность курса

6 месяцев

Программа трудоустройства

Есть

Формат

Запись лекций

Курс «Инженер по тестированию» от Skillbox

Школа

Skillbox

Стоимость

97 995 руб

Цена в рассрочку

3 920 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Запись лекций

Подведем итоги

Тезисно:

  • API приложения – это способ его взаимодействия с другими приложениями.
  • Тестирование API – это когда вы проверяете, что API принимает только описанные в документации запросы и логично выдает описанные в документации ответы.
  • Postman – это программа для тестирования API.
  • Одно из основных преимуществ Postman – автоматизация тестирования.
  • Для того, чтобы пользоваться всеми функциями Postman, вам нужно изучить JavaScript, но основными функциями можно пользоваться и без знания JS.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Фосфокреатинин инструкция по применению
  • Пункт 167 инструкции 191н
  • Калмабен инструкция по применению
  • Таблетки каниквантел плюс для собак инструкция по применению
  • Siemens siwamat 8080 инструкция на русском