![](https://habrastorage.org/getpro/habr/upload_files/c09/78f/de4/c0978fde4bd6a19308582d181ff068f1.png)
Вступление
В современном мире для большинства проектов необходимо использовать 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
![](https://habrastorage.org/getpro/habr/upload_files/7f7/021/a7c/7f7021a7cd79efceb07d67e80417548b.png)
Теперь переходим в папку grpcExampleService
и делаем все sh файлы запускаемыми.
cd grpcExampleService find . -name "*.sh" -exec chmod +x {} \;
![](https://habrastorage.org/getpro/habr/upload_files/e8e/bdf/9a2/e8ebdf9a202970bc896230827fc881fa.png)
И наконец-то пришла пора запустить сервис. Сначала выполняем по очереди файлыgenerate_file.sh
иinstall.sh
![](https://habrastorage.org/getpro/habr/upload_files/cee/62a/057/cee62a0578501caebe76bbecadd2efa7.png)
И теперь стартуем наш сервис с помощью команды start.sh
![](https://habrastorage.org/getpro/habr/upload_files/553/fd3/db7/553fd3db72dfe6623146ac8453e88cee.png)
Настройка Postman
Перед началом тестирования сервиса, необходимо один раз произвести настройку инструмента для тестирования. В нашем случае это будет Postman.
Во-первых, нужно быть залогиненным в Postman. Либо создать новый аккаунт и войти в него.
![](https://habrastorage.org/getpro/habr/upload_files/829/db2/72f/829db272f474a977adfafd9c02758f39.png)
Во-вторых, импортировать proto
файл, который лежит в созданном нами проекте в папке proto
В моем случае путь к этому файлу выглядит так:
/Users/sergeishaikin/grpcExampleService/proto/GrpcExampleService.proto
Для этого нажимаем New
и выбираем gRPC Request
![](https://habrastorage.org/getpro/habr/upload_files/5d6/f24/eaa/5d6f24eaac99b5ab0cc63be578dcbaad.png)
Прописываем URL сервера localhost:50051
![](https://habrastorage.org/getpro/habr/upload_files/a66/ac7/33d/a66ac733dde08855f680377eb2e840e0.png)
![](https://habrastorage.org/getpro/habr/upload_files/313/215/05b/31321505b3583b86230b1dc55508439d.png)
Переходим во вкладку Service definition
и нажимаем кнопку Import .proto file
![](https://habrastorage.org/getpro/habr/upload_files/378/0a6/2b0/3780a62b07c642b42495ba245dcee318.png)
Нажимаем кнопку Choose a File
, чтобы выбрать наш файл GrpcExampleService.proto
и нажимаем кнопку Next
![](https://habrastorage.org/getpro/habr/upload_files/af0/f4b/4eb/af0f4b4eba36c9b9e2b2e8be3f2cb660.png)
На последнем этапе можно нажать линк Use without importing. Настройка закончена.
![](https://habrastorage.org/getpro/habr/upload_files/19c/db0/f6f/19cdb0f6f28dd0bbd5648b3de4a7af20.png)
Тестирование
Тестирование gRPC происходит по большому счету так же как и HTTP. Необходимо выбрать нужный метод из списка методов gRPC, нажав на поле Select a method
и выбрав метод.
![](https://habrastorage.org/getpro/habr/upload_files/7f7/e71/dbd/7f7e71dbd11eb995e2c49681e2961eeb.png)
Наш тестовый сервис поддерживает три метода 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
![](https://habrastorage.org/getpro/habr/upload_files/e4d/676/18d/e4d67618d5692e16cc2ce4bc0e4b29f4.png)
Для того чтобы проверить информацию, которая записалась в результате работы сервиса, нам необходимо подключится к его базе данных. Для этого можно использовать командную строку и программу, которая называется sqlite3
Ниже приведен пример работы с ней:
![](https://habrastorage.org/getpro/habr/upload_files/143/68e/d3c/14368ed3ca436483f1432b7878f82cb4.png)
Для подключения необходимо набрать команду sqlite3
и указать путь к нашей базе данных. В моем случае это /Users/sergeishaikin/grpcExampleService/database/mydatabase.db
Для отображения таблицы в виде колонок выполняем команду .mode column.
Чтобы были видны названия колонок выполняем команду .headers on.
Ну и для того чтобы посмотреть нашу таблицу, выполняем команду SELECT * FROM client;
Для более удобного просмотра таблицы, существуют различные инструменты для работы с базами данных, такие как pgAdmin и DBeaver. Я использовал DBeaver. На рисунке представлен вариант вариант подключения базы данных нашего сервиса в DBeaver:
![](https://habrastorage.org/getpro/habr/upload_files/ee4/9b2/866/ee49b2866db6660bce9dcfe95a33372e.png)
И вариант просмотра нашей таблицы:
![](https://habrastorage.org/getpro/habr/upload_files/13d/0c4/be1/13d0c4be11682baacc16fddb049fade4.png)
Заключение
Вы можете попробовать потестировать все три метода, почитав описание в проекте Михаила и посмотрев правильно ли записалась информация в базу данных. Возможно в проекте закрались баги и вы их найдете Но одно можно сказать точно, что вы теперь с уверенностью можете добавить в свое резюме строчку про тестирование технологии gRPC. Надеюсь эта статья была для вас не только интересной, но и полезной.
Материал подготовлен в преддверии старта курса Java QA Engineer. Professional. Узнать подробнее о курсе, а также зарегистрироваться на бесплатный урок можно по ссылке ниже.
ссылка на оригинал статьи https://habr.com/ru/articles/699616/
Добавить комментарий