Вступление
В современном мире для большинства проектов необходимо использовать 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. Узнать подробнее о курсе, а также зарегистрироваться на бесплатный урок можно по ссылке ниже.
AlexSteelax
Зашел, чтобы увидеть информацию о тестировании grpc, а увидел информацию о том, как тестировать приложение на основе grpc. Вроде бы слова одни и те же, но смысл существенно иной: вы не grpc тестируете, как в заголовке написано.
Ну и да, по теме, чтобы тестировать grpc нужен не постман, а нормальные тесты xUnit / nUnit и т.п.. Т.к. при тестировании через постман и ряд схожих инструмиентов полностью отсутствует повторяемость тестов (в т.ч. их сохранность) другим участником по команде.
И конечно же, ide при написании нормальных тестов поможет заполнить модели grpc, которые, к слову, могут быть изрядно сложные для текстового заполнения как в постмане.