gRPC — это платформа удаленного вызова процедур (RPC), разработанная Google.

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

gRPC значительно упрощает и ускоряет взаимодействие и передачу данных между микросервисами. Под капотом он опирается на протокол HTTP/2, но упрощает разработчикам соединение всего вместе.

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

gRPC упрощает эту задачу, поскольку поддерживает несколько языков. Он использует буферы протокола в качестве языка определения интерфейса для определения структуры сообщения.

Тестирование приложений gRPC

Тестирование важно не только для приложений gRPC, но и для любого разрабатываемого сложного программного обеспечения. Тестирование приложений gRPC гарантирует, что микросервисы и другие сервисы могут надежно и эффективно взаимодействовать друг с другом.

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

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

Теперь, когда вы знаете о gRPC, давайте рассмотрим некоторые инструменты тестирования gRPC.

Крея

Крея — это API-клиент с графическим пользовательским интерфейсом для gRPC, а также REST API. Его клиент gRPC поддерживает потоковую передачу запросов, унарные вызовы, проверку и многое другое. Чтобы протестировать API, вы также можете сгенерировать поддельные данные внутри самой Kreya.

Кроме того, запросы и их конфигурация хранятся в файловой системе, поэтому вы можете использовать git или любую другую систему контроля версий для синхронизации ваших проектов. Kreya позволяет вам определять тесты путем написания сценариев, чтобы вы могли тестировать API при каждом вызове.

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

ггз

ггз, утилита командной строки для сравнительного анализа и нагрузочного тестирования gRPC с открытым исходным кодом, написанная на Go, для тестирования API и получения результатов. ghz поддерживает файл прототипа, готовый пакет набора прототипов или отражение сервера. С помощью переменных шаблона в Go можно добавлять в запросы собственные данные.

Помимо утилиты командной строки, ghz также предоставляет доступ к дополнительному интерфейсу веб-приложения, который можно использовать для просмотра, отслеживания и сохранения результатов тестирования. Вы можете просмотреть результаты теста в различных форматах файлов, таких как CSV, JSON и HTML. На момент написания веб-интерфейс, который он предоставляет, все еще находится на стадии бета-тестирования.

Почтальон

Почтальон — это платформа разработки API, которая поддерживает создание и тестирование практически всех типов API, включая gRPC. В Postman вы можете писать тесты для отдельных запросов, коллекций или папок в коллекции.

Когда вы делаете запрос gRPC в Postman, перейдите на вкладку «Сценарии» в представлении запроса, а затем выберите, когда вы хотите выполнить тест — до запроса или после получения ответа. Вы также можете использовать фрагменты кода, чтобы быстрее писать тесты.

Бессонница

Бессонница — это инструмент для проектирования, тестирования и отладки API. Он поддерживает запросы REST, GraphQL, WebSockets и gRPC. Когда вы создаете новый запрос в Insomnia, вы можете выбрать gRPC, а затем ввести конечную точку URL API.

Вам также необходимо добавить файл .proto для определения ваших сообщений. От унарных запросов до двунаправленной потоковой передачи — Insomnia поддерживает практически все типы запросов, включая потоковую передачу клиентов и серверов.

Чтобы протестировать API в Insomnia, вам необходимо добавить проектный документ для вашего API, а затем на вкладке «Тест» вы можете создать набор тестов. Обратите внимание, что Insomnia использует платформу Mocha для модульного тестирования и Chai для утверждений.

Стэкхок

Стэкхок — это инструмент тестирования безопасности API, который также предоставляет решение для служб gRPC. С помощью этого инструмента вы можете обеспечить безопасность конечных точек API. Чтобы сканировать приложение gRPC с помощью Stackhawk, вам необходимо определить stackhawk.yml файл с необходимыми настройками.

Stackhawk предлагает бесплатный уровень с современным автоматизированным тестированием, интегрированным с DAST, в конвейере CI/CD для одного приложения. Однако такие функции, как аутентификация, автоматизация, аналитика, уведомления и поддержка всех типов API, включены во все тарифные планы.

gRPCurl

gRPCurl — это утилита командной строки с открытым исходным кодом для подключения к серверам с поддержкой gRPC. Как следует из названия, он называется «curl для серверов gRPC». Причина, по которой вы не можете использовать cURL для отправки запроса к серверам gRPC, заключается в том, что он не поддерживает буферы протокола, которые представляют собой двоичные сообщения. cURL работает только со строками JSON.

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

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

ReadyAPI от Smartbear

Готовый API от Smartbear поддерживает тестирование API gRPC, но только унарные операции. Чтобы протестировать службу gRPC, сначала необходимо настроить API-соединение этап тестирования. Сделав это, вы сможете отправлять запросы и получать ответы от службы gRPC.

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

NosyMouse

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

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

Он предлагает 14-дневную бесплатную пробную версию для тестирования двух одновременных пользователей службы.

Заключительные слова

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

Далее ознакомьтесь с лучшими платформами нагрузочного тестирования API для повышения производительности.