Современные приложения и сервисы в большинстве своем состоят из фронтенда и бэкенда. Когда мы говорим о тестировании бэкенда, в основном речь идет о тестировании с помощью 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)


  1. Amikuto
    08.11.2022 23:47
    +8

    Эхх, такой интересный заголовок! Ожидал увидеть что-то более интереснее, чем представление очередного аналога постмана...


    1. SergeiShaikin Автор
      09.11.2022 23:57
      -1

      Хайпанул. Сорри. ;)


  1. Nomadum
    08.11.2022 23:47

    В документации в Гите не нашел поддержки grpc, есть какие-то возможности, или тут чисто рест?


    1. SergeiShaikin Автор
      09.11.2022 23:54

      Для gRPC можно юзать Postman, Insomnia, Kreya и BloomRPC


      1. Nomadum
        10.11.2022 10:51

        вопрос относился к новую фреймворку, но спасибо за ответ, это в работе давно


  1. Desprit
    08.11.2022 23:58
    +2

    Я последнее время все больше пользуюсь вот этим плагином к VsCode:
    https://github.com/Huachao/vscode-restclient

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


    1. funca
      09.11.2022 01:37
      +2

      У него есть аналог https://httpyac.github.io/ с двумя плагинами к vscode, поддержкой скриптинга и запуска тестов из командной строки.


      1. Desprit
        09.11.2022 09:23

        А вы не знаете, у него возможность переменные между файлами использовать? В restclient открытый тикет на это висит уже давно, не очень удобно, если API закрыто авторизацией, в каждом .http файле дублировать логику на получение токена.


  1. Samhuawei
    09.11.2022 09:47
    +1

    Как насчёт curl? Есть и на макоси, и на линуксе, и на винде с ядром линукса.

    Если не нравится делать сценарии на shell, почему бы не питон? Даже устанавливать ничего не надо если попросить сисадмина вкрячить Jypiter на какой-нибудь сервер внутри конторы.

    Ну и для законченных эстетов предлагаю Jira. Стандартный плагин Automation for Jira может брать информацию прямо из тикетов и посылать REST куда угодно в интернете. И прячет пароли от ненужных глаз. Представь - ты QA. Засунул параметры запроса в поле тикета, перевёл в статус POSTING, тикет сам сделал запрос и перевёл себя в состоянии Reopened (Failed) или Completed (Done). Красота.


    1. polearnik
      09.11.2022 11:08
      +1

      а может зубы лучше удалять через ротовове отверстие?


      1. Samhuawei
        09.11.2022 11:15

        Использование Postman для простейшей операции это как раз ваш пример. Его ни в Jenkins не засунуть, ни в пайп по сборке. Curl и скрипт на питоне - пожалуйста. Да и джиру по сути тоже - по заливке в ветку триггерится перевод тикета в состоянии Auto test, а дальше как я описал.


        1. Desprit
          09.11.2022 13:56

          Postman прекрасно засовывается в Github Actions. И уж лучше сделать так, чем ваше предложение на счет Jira.


    1. Mike-M
      10.11.2022 00:23

      Как насчёт curl? Есть и на макоси, и на линуксе, и на винде с ядром линукса.
      curl даже без ядра линукса есть в винде.


    1. 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 что-то там.

      Читать/исправлять можно потом с любого утюга умеющего открывать гитлаб браузером или шелл до репо


  1. Xapu3ma-NN
    09.11.2022 10:13
    +1

    Просто какой-то Яндекс Дзен.


  1. Samhuawei
    09.11.2022 11:22

    Народная мудрость гласит: Любишь запросы по API отправлять, умей и json парсить

    Народная мудрость гласит что найти нужный параметр в json можно обычным grep. А если что-то посложнее то нет ничего проще скрипта на Питоне который и провалидирует и обеспечит какую угодно логику.


    1. Tony-Sol
      10.11.2022 21:03

      тогда уж jq, а не grep)


  1. gdt
    09.11.2022 11:24

    Да уж, варианты так-то есть. Я вот пользуюсь ARC (правда не уверен насколько хорошо он интегрируется в CI/CD, не возникало необходимости).