logo
Ещё

Как пользоваться Postman для тестирования API

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

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

Для начала разберемся с 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 – это один из инструментов тестировщика, причем им пользуются как мануальные тестировщики, так и те, кто занимается автоматизацией тестирования. А тестировщиков обычно учат на курсах:

  • Тестировщик ПО. На курсе сначала дают всю базу (версионирование, SQL, стандартное ПО тестировщика), а затем начинают учить конкретным вещам: как тестировать API, как тестировать интерфейсы, что делать с приложениями и так далее. Дают личного куратора, который отвечает 7 дней в неделю. Стоимость курса: 5 450 рублей при рассрочке на 12 месяцев.
  • Инженер по автоматизации тестирования. Длительный курс, продолжительность – 12 месяцев, в неделю – 12 часов обучения. Postman в этом курсе тоже есть, но занимает далеко не лидирующую позицию – существенную часть времени вы будете учить Java, Python и инструменты автоматизации тестирования на этих языках. Стоимость курса – 4 000 рублей в месяц при рассрочке на 36 месяцев.
  • QA Automation Engineer. Еще один курс по автоматизации тестирования, на котором упор делается преимущественно на Java, ее фреймворке Spring и инструментах автоматического тестирования, написанных под этот язык и фреймворк. Курс длится 10 месяцев, обучение – два полных дня в неделю. Цены станут известны, когда начнется набор.

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

Тезисно:

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