Вступление

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

Все эти потребности удовлетворяют большинство современных технологий таких как REST, SOAP и GraphQL. Наиболее популярная это REST. Однако в последнее время набирает обороты технология gRPC, который обладает высокой производительностью, типизированными данными и отличным инструментарием.

Сегодня мы рассмотрим на конкретном примере как тестировать сервис работающий по технологии gRPC.

Подготовка проекта

Для того чтобы каждый мог попробовать потестировать работу с технологией gRPC, я попросил моего коллегу и супер разработчика Михаила Петрова написать тестовый сервис. Он создал такой сервис и выложил его на гитхаб для общего доступа https://github.com/MikhailPO/grpcExampleService

Этот сервис можно запустить как на Windows так и на OS Mac/Linux OS. Покажу как это делается на примере Mac OS.

Запускаем терминал и клонируем проект сервиса, с помощью команды git clone.

git clone https://github.com/MikhailPO/grpcExampleService

Теперь переходим в папку grpcExampleService и делаем все sh файлы запускаемыми.

cd grpcExampleService
find . -name "*.sh" -exec chmod +x {} \;

И наконец-то пришла пора запустить сервис. Сначала выполняем по очереди файлыgenerate_file.shиinstall.sh

И теперь стартуем наш сервис с помощью команды start.sh

Настройка Postman

Перед началом тестирования сервиса, необходимо один раз произвести настройку инструмента для тестирования. В нашем случае это будет Postman.

Во-первых, нужно быть залогиненным в Postman. Либо создать новый аккаунт и войти в него.

Во-вторых, импортировать proto файл, который лежит в созданном нами проекте в папке proto

В моем случае путь к этому файлу выглядит так:

/Users/sergeishaikin/grpcExampleService/proto/GrpcExampleService.proto

Для этого нажимаем New и выбираем gRPC Request

Прописываем URL сервера localhost:50051

Переходим во вкладку Service definition и нажимаем кнопку Import .proto file

Нажимаем кнопку Choose a File, чтобы выбрать наш файл GrpcExampleService.proto и нажимаем кнопку Next

На последнем этапе можно нажать линк Use without importing. Настройка закончена.

Тестирование

Тестирование gRPC происходит по большому счету так же как и HTTP. Необходимо выбрать нужный метод из списка методов gRPC, нажав на поле Select a method и выбрав метод.

Наш тестовый сервис поддерживает три метода AddClient, GetClients и GetClientByLogin

Метод AddClient добавляет одного или несколько клиентов в базу данных. Ниже приведен пример тела запроса:

{
    "clientsinfo": [
        {
            "city":"New York",
            "login": "Tom",
            "email": "tom@gmail.com"
        },
        {
            "city":"Washington",
            "login": "Bill",
            "email": "bill@gmail.com"
        }
    ]
}

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

Метод GetClientByLogin возвращает одного конкретного клиента, которого мы указываем в теле запроса. Ниже приведен пример тела запроса:

{
    "login": "Tom"
}

Переходим во вкладку Message, заполняем тело сообщения и нажимаем кнопку Invoke

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

Для подключения необходимо набрать команду sqlite3 и указать путь к нашей базе данных. В моем случае это /Users/sergeishaikin/grpcExampleService/database/mydatabase.db

Для отображения таблицы в виде колонок выполняем команду .mode column.Чтобы были видны названия колонок выполняем команду .headers on. Ну и для того чтобы посмотреть нашу таблицу, выполняем команду SELECT * FROM client;

Для более удобного просмотра таблицы, существуют различные инструменты для работы с базами данных, такие как pgAdmin и DBeaver. Я использовал DBeaver. На рисунке представлен вариант вариант подключения базы данных нашего сервиса в DBeaver:

И вариант просмотра нашей таблицы:

Заключение

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

Материал подготовлен в преддверии старта курса Java QA Engineer. Professional. Узнать подробнее о курсе, а также зарегистрироваться на бесплатный урок можно по ссылке ниже.

Комментарии (1)


  1. AlexSteelax
    21.11.2022 17:43
    +8

    Зашел, чтобы увидеть информацию о тестировании grpc, а увидел информацию о том, как тестировать приложение на основе grpc. Вроде бы слова одни и те же, но смысл существенно иной: вы не grpc тестируете, как в заголовке написано.

    Ну и да, по теме, чтобы тестировать grpc нужен не постман, а нормальные тесты xUnit / nUnit и т.п.. Т.к. при тестировании через постман и ряд схожих инструмиентов полностью отсутствует повторяемость тестов (в т.ч. их сохранность) другим участником по команде.
    И конечно же, ide при написании нормальных тестов поможет заполнить модели grpc, которые, к слову, могут быть изрядно сложные для текстового заполнения как в постмане.