У нас во всех проектах есть спецификации. В основном это спецификации двух версий — это OpenAPI-спецификации v1.0 и OpenAPI-спецификации v2.0. В какой-то момент пришёл менеджер и сказал, что мы больше не будем релизить новые REST API-сервисы без спецификаций. Всё благодаря этой замечательной странице Swagger UI.

swagger для тестировщика

Мы также можем анализировать обратную совместимость. Выявлять случайное удаление параметров и другие изменения. Я буду рассматривать контрактные тесты и тесты на сравнение. Здесь Story API, мы вызываем метод getInventory и его выполняем.

Давайте подробнее разберём, что она собой представляет. Мы там ставим версию нашего API, устанавливаем хосты, базовые пути, схемы и прочее. Также у нас есть блок с описанием всех возможных операций, в которых мы указываем параметры и все возможные ответы. Чтобы запустить коллекцию тестов, зайдите во вкладку «Коллекции», выберите необходимую коллекцию и в выпадающем списке выберите «Run Collection». Переходим во вкладку body ручное тестирование api и JSON, а затем копируем информацию о любом пользователе из предыдущего задания.

Прежде чем нам дальше разбираться с postman, нам необходимо узнать что такое  Swagger и научиться с ним работать. Swagger Core написан на языке Java, поэтому для его корректной работы понадобится Java не старше версии eight.0. Также нужны будут фреймворк Apache Maven 3.zero.3 или новее и JSON-процессор Jackson 2.4.5 или новее. При написании спецификации редактор Swagger Editor в режиме реального времени проверяет инструкцию на предмет её валидности. Таким образом, можно быстро исправить ошибку.

Какой Запрос Быстрее?

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

swagger для тестировщика

Вы просто проходите по всем параметрам и добавляете шаблоны тестов, чтобы для каждого параметра сгенерировались аналогичные тесты. Есть API-клиент, есть вызов Story API и метод getInventory. Postman — один из самых распространенных сервисов для тестирования API и создания запросов. Большинство QA-инженеров регулярно им пользуются. Это такой же обязательный инструмент профессии, как и среда разработки для программистов.

В opensource есть два больших, достаточно популярных проекта. Это Swagger Codegen, он на данный момент поддерживается компанией SmartBear. И OpenAPI Generator, тоже opensource-проект, но он поддерживается комьюнити. OpenAPI-спецификация — это opensource-проект, описывающий спецификацию и поддерживаемый линукс-сообществом (Linux Foundation Collaborative Project). Это популярный проект, у него звёздочек на GitHub.

Есть Что Добавить? Зарегистрируйтесь

Второй способ — использовать спецификацию Swagger, которая называется OpenAPI. Он сложнее, потому что необходимо знать язык формальных правил — на нем нужно описать сущности кода, чтобы инструмент понял написанное и сгенерировал документ. Но этот подход более правильный, потому что такая документация более понятна и человекочитаема. Писать необходимо с помощью форматов JSON или YAML либо в специальном редакторе Swagger Editor — о нем мы подробнее расскажем ниже.

Я дал только ограниченные примеры их использования. Но гибкие возможности OpenAPI позволяют существенно автоматизировать рутинные процессы тестирования и сделать жизнь тестировщика проще. Здесь пример теста, который просто сравнивает эти два ответа. У нас есть функция, которую принимает API-клиент и возвращает ответ, который мы сравниваем через matcher jsonEquals.

Пример реализации генерации API тестов на основе OpenAPI спецификаций можно посмотреть тут с Java + RestAssured + Maven/Gradle. Пример тестовой OpenAPI-спецификации в форматах JSON и YAML. OpenAPI — инструмент, который часто используется разработчиками и аналитиками. Но и тестировщики могут применить его, чтобы ускорить работу. API (Application Programming Interface) – это набор инструкций и протоколов, которые позволяют программам взаимодействовать между собой.

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

Мы можем проверять в тестах, что наш ответ после запроса соответствует определённой модели, которая описана в спецификации. Но в реальности это очень маленькое, узкое покрытие. Мы проверяем только модели и не проверяем значения. Если это, например, JSON, то мы проверяем только поля и что они соответствуют схеме.

Тогда мы получим шаблоны тестов, которые можно использовать и писать. Значения в OpenAPI-спецификации второй версии хранятся в поле «x-exаmple». Возьмём в качестве примера простейшую операцию GET /store/Inventory из Story API и попробуем написать тест. Мы будем делать простейший запрос без параметров и валидировать ответ.

Javascript

Вместо кода, где у нас не типизированные assertions, а стандартные hamcrest матчеры, мы получаем типизированные assertions — более удобные и понятные. Если у нас кроме модели ещё есть примеры значений параметров, то можем попробовать сгенерировать реальные шаблоны тестов и сами тесты. Нужно добавить парочку темплейтов, и получим тесты.

swagger для тестировщика

Возможность генерации кода используется при взаимодействии с API других проектов. Swagger Codegen может генерировать код для конечного клиента, который будет работать с API, — это удобно, когда стоит задача сэкономить время. Спецификация OpenAPI не только визуализирует контроллеры в тестируемом API, но также помогает в написании автотестов.

Пожалуйста, учтите, что упомянутыми ниже инструментами их спектр для API тестирования не ограничен. Я говорю именно об этих, потому что ими я уже пользовалась. Есть проект SwaggerHub, облачная платформа, которая позволяет использовать возможности https://deveducation.com/ Swagger онлайн. Для доступа к ней предлагается три тарифных плана. План Free — бесплатный; платные планы Teams и Enterprise предназначены для компаний. Так что начинающий разработчик может пользоваться проектом и не платить за него.

Ниже реальный пример, где я использовал генерацию кода. Мы разобрали, как работает конструктор запросов. С его помощью можно проверять как собственное API, так и сторонних сервисов. Мы будем использовать тот же публичный тестовый API. Мы написали в коде false, а не true, потому что у нас есть только созданные проекты, а удалённых нет.

Мы всегда сможем вернуться и отредактировать окружение с помощью кнопки Manage Environments (шестерёнка в правом верхнем углу основного экрана). Postman предлагает внушительный список, нам нужен GET. Это сообщение, которое сервер отправляет после выполнения вызова. Узнать, что значат другие коды статусов, можно по этой ссылке, если вы кошатник, или этой, если предпочитаете собак.

QA Team Leader команды тестирования Группы «Иннотех» Андрей Терешин рассказал, как можно использовать OpenAPI для тестирования. RESTful API использует HTTP-методы (GET, POST, PUT, DELETE) для работы с ресурсами и предоставляет данные в формате JSON или XML. У нас собрался build, и запустился Swagger-diff, и мы уже заранее знаем на этом этапе, сломалась ли обратная совместимость и изменилось ли что-нибудь. Потом мы можем по результатам тестов построить protection, чтобы понять, что покрыто, а что — нет, и на основе этого выбирать дальнейшую стратегию тестирования.

Инструмент «читает» код API и на его основе генерирует документацию. Такой способ считается более простым, потому что от разработчика не требуется знать спецификацию и писать что-то помимо самого кода. Но его рекомендуют применять только тогда, когда документация нужна срочно, — потому что второй способ позволяет создавать более подробные и понятные описания.

А некоторые вообще не понимали, зачем нужны автотесты, так как считали, что ничего не сломается. Я занимаюсь автоматизацией тестирования в Яндексе с 2013 года. Из них более четырёх лет автоматизирую тестирование REST API-сервисов.

Меня зовут Игорь Гросс, я руководитель проектов в Test IT — это такая система управления тестированием. В этом посте я расскажу об одном интересном инструменте тестировщика — Postman — а также о том, как с его помощью решать распространённый тип задач — тестирование API. Использовать тестирование API, чтобы пропустить авторизацию. Будьте осторожны, в релизном окружении это будет небезопасным.