Современные приложения и сервисы в большинстве своем состоят из фронтенда и бэкенда. Когда мы говорим о тестировании бэкенда, в основном речь идет о тестировании с помощью API запросов и ответов. А для этого желательно иметь под рукой необходимые инструменты. Полагаю что одним из лучших и самых популярных инструментов тестирования API является Postman. А есть ли альтернатива?
Сегодня мы рассмотрим одну из лучших альтернатив этому популярному инструменту. Особенно она понравится тем, кто работает с Postman постоянно.
Postman
Во-первых, я хотел бы перечислить наиболее востребованные возможности Postman. Создание коллекций и запуск в автоматическом режиме через Newman.
Сохранение различных сред и быстрое переключение между ними при backend-тестировании на разных стендах. А так же возможность делиться своими коллекциями и средами с членами вашей команды.
Возможность работать на любой платформе (Windows, macOS, Linux). Интеграция с Pipeline CI/CD. Но одновременно с таким впечатляющим набором возможностей, возникает резонный вопрос. А это все бесплатно?
Конечно нет. У Postman есть некоторые функции которые работают только в платной версии. Но как насчет подобных проектов с открытым исходным кодом? Может быть, они тоже хороши. Я постараюсь рассмотреть один из них.
Hoppscotch
Hoppscotch — это облегченная веб-версия для разработки API. Он был создан с нуля с учетом простоты использования и доступности, предоставляя все функции, необходимые разработчикам API, с минималистичным ненавязчивым пользовательским интерфейсом. Его можно использовать бесплатно, а в качестве дополнительного преимущества он полностью с открытым исходным кодом.
Посмотрите на его интерфейс. Ничего не напоминает?
Я думаю, есть только одно отличие от Postman. Hoppscotch работает через Интернет и не требует установки на машину. Все остальное то же самое, включая интерфейс. Но если вы попробуете использовать его, можно найти некоторые ограничения.
Например, работа всей командой одновременно с созданными вами данными невозможна. Он предоставляет, но не работает. А разработчики Hoppscotch сказали, что не будут поддерживать эту функцию. Я не обвиняю разработчиков Hoppscotch, потому что не думаю, что реализовать эти функции слишком просто. Для этого вам необходимо предоставить несколько облачных серверов. И это стоит больших денег.
Попробуем использовать этот вариант шаг за шагом. Вы открываете веб-версию и начинаете работать. Вы создаете несколько запросов API, объединяете их в коллекции и сохраняете разные среды. После этого вы решаете сохранить все это и поделиться этим с членом вашей команды.
Прежде всего, вы должны создать свою учетную запись, и есть несколько вариантов. Один из них — электронная почта.
И это подводит нас к самой волшебной части Hoppscotch, потому что вам нужно каждый раз использовать волшебную ссылку из электронного письма. Иногда письма попадают в папку со спамом. Но в итоге вы не можете работать с этой функцией, потому что в вашем аккаунте нет команды.
Однако есть хорошая новость. Разработчики Hoppscotch довели до ума данный функционал и на сегодняшний день работа в команде возможна. При добавлении новых API запросов или сред, происходит мгновенная синхронизация всех аккаунтов команды и все члены команды тут же могут этим пользоваться.
Но хотелось бы остановиться на некоторых моментах работы с функцией совместного доступа. Во-первых, во время приглашения по умолчанию выбран профиль VIEWER, который не позволяет редактировать, добавлять или удалять запросы.
Это потом не сложно исправить зайдя в профиль и изменив роль члена команды.
Но зачем тратить свое время и время коллег на излишнюю коммуникацию и исправление, когда можно сразу выбрать правильную роль.
Во-вторых, запросы и среды необходимо сохранять во вкладке Team Collections, а не во вкладке My Collections, чтобы все остальные члены команды тут же имели доступ и могли воспользоваться плодами вашего труда.
Конечно потом можно пересохранить в нужную коллекцию, но это опять же потеря времени.
Заключение
Если вы слышите о проектах с открытым исходным кодом, подумайте, кто будет за них платить. Если это абсолютно бесплатно, то вполне разумно, что этот продукт не будет так хорош, как платные конкуренты. В данной ситуации у ребят получился классный продукт, который как мне кажется вполне способен составить достойную конкуренцию платному Postman. А учитывая что интерфейсы у них очень похожи, если не сказать что это братья близнецы, то переход с одного инструмента на другой произойдет достаточно плавно и безболезненно.
Народная мудрость гласит: Любишь запросы по API отправлять, умей и json парсить! Приглашаю всех на бесплатный урок, где познакомимся с фреймворком RestAssured, позволяющим написать автотесты на API, и JsonSchemaValidator для проверки ответа от сервера.
Комментарии (18)
Nomadum
08.11.2022 23:47В документации в Гите не нашел поддержки grpc, есть какие-то возможности, или тут чисто рест?
Desprit
08.11.2022 23:58+2Я последнее время все больше пользуюсь вот этим плагином к VsCode:
https://github.com/Huachao/vscode-restclientКонечно, функционала там не так много, но закрывает большую часть потребностей в тестировании. Из плюсов - никуда табаться не надо, все здесь, в рабочей среде.
funca
09.11.2022 01:37+2У него есть аналог https://httpyac.github.io/ с двумя плагинами к vscode, поддержкой скриптинга и запуска тестов из командной строки.
Desprit
09.11.2022 09:23А вы не знаете, у него возможность переменные между файлами использовать? В restclient открытый тикет на это висит уже давно, не очень удобно, если API закрыто авторизацией, в каждом .http файле дублировать логику на получение токена.
Samhuawei
09.11.2022 09:47+1Как насчёт curl? Есть и на макоси, и на линуксе, и на винде с ядром линукса.
Если не нравится делать сценарии на shell, почему бы не питон? Даже устанавливать ничего не надо если попросить сисадмина вкрячить Jypiter на какой-нибудь сервер внутри конторы.
Ну и для законченных эстетов предлагаю Jira. Стандартный плагин Automation for Jira может брать информацию прямо из тикетов и посылать REST куда угодно в интернете. И прячет пароли от ненужных глаз. Представь - ты QA. Засунул параметры запроса в поле тикета, перевёл в статус POSTING, тикет сам сделал запрос и перевёл себя в состоянии Reopened (Failed) или Completed (Done). Красота.polearnik
09.11.2022 11:08+1а может зубы лучше удалять через ротовове отверстие?
Samhuawei
09.11.2022 11:15Использование Postman для простейшей операции это как раз ваш пример. Его ни в Jenkins не засунуть, ни в пайп по сборке. Curl и скрипт на питоне - пожалуйста. Да и джиру по сути тоже - по заливке в ветку триггерится перевод тикета в состоянии Auto test, а дальше как я описал.
Desprit
09.11.2022 13:56Postman прекрасно засовывается в Github Actions. И уж лучше сделать так, чем ваше предложение на счет Jira.
Mike-M
10.11.2022 00:23Как насчёт curl? Есть и на макоси, и на линуксе, и на винде с ядром линукса.
curl даже без ядра линукса есть в винде.
QuAzI
10.11.2022 15:25Берёшь Markdown описываешь всё, правильно маркируешь вставки кода, из них можно через httpYac или restClient дёргать запросы. А в DataGrip ещё и запросы к БД можно пулять. Вроде почти тот же Jupyter Books получается. Только DataGrip в MD инлайнить результаты вроде пока не умел.
httpYac сам по себе офигенен и прост, можно вполне использовать для автоматизации тестов. Да и запросы прям из браузера (copy as cURL (unix)) можно прям по Ctrl+V в JB вставлять, всё распарсится. В VSCode Parse as cURL что-то там.
Читать/исправлять можно потом с любого утюга умеющего открывать гитлаб браузером или шелл до репо
Samhuawei
09.11.2022 11:22Народная мудрость гласит: Любишь запросы по API отправлять, умей и json парсить
Народная мудрость гласит что найти нужный параметр в json можно обычным grep. А если что-то посложнее то нет ничего проще скрипта на Питоне который и провалидирует и обеспечит какую угодно логику.
gdt
09.11.2022 11:24Да уж, варианты так-то есть. Я вот пользуюсь ARC (правда не уверен насколько хорошо он интегрируется в CI/CD, не возникало необходимости).
Amikuto
Эхх, такой интересный заголовок! Ожидал увидеть что-то более интереснее, чем представление очередного аналога постмана...
SergeiShaikin Автор
Хайпанул. Сорри. ;)