Развој и тестирање gRPC апликација: Водич кроз алате
gRPC је оквир за удаљене процедурне позиве (RPC), креиран од стране компаније Google.
Постоји једна интригантна анегдота о томе како је добио име. Удаљени процедурни позив омогућава извршавање функције или методе на другом рачунару, као да се ради о локалној функцији. Ова апстракција значајно олакшава рад са HTTP позивима и осталим мрежним терминологијама.
gRPC поједностављује и убрзава комуникацију и размену података међу микросервисима. Иако се ослања на HTTP/2 протокол, програмерима олакшава повезивање свих компоненти.
Будући да микросервиси могу бити имплементирани у различитим програмским језицима, неопходно је успоставити механизам за њихову међусобну комуникацију.
gRPC то постиже подршком за више језика и коришћењем протоколских бафера као језика за дефинисање интерфејса, што омогућава прецизно дефинисање структуре порука.
Тестирање gRPC апликација
Тестирање је кључно за сваки сложен софтвер, укључујући и gRPC апликације. Тестирањем се обезбеђује да микросервиси и друге услуге комуницирају поуздано и ефикасно.
На тај начин се гарантује да све услуге, без обзира на језик којим су написане, могу међусобно комуницирати захваљујући неутралности протоколских бафера.
Тестирањем се такође прецизно дефинише руковање грешкама и изузецима. Поред тога, тестирање перформанси омогућава анализу понашања сервиса под различитим оптерећењима мрежног саобраћаја.
Сада, када сте се упознали са gRPC-ом, хајде да погледамо неке од алата за тестирање gRPC-а.
Kreya
Kreya је API клијент са графичким корисничким интерфејсом, дизајниран за gRPC и REST API-је. Његов gRPC клијент подржава стримовање захтева, унарне позиве, валидацију и још много тога. Kreya такође омогућава генерисање лажних података за тестирање API-ја.
Захтеви и њихова конфигурација се чувају у систему датотека, што омогућава коришћење Git-а или било ког другог система за контролу верзија за синхронизацију пројеката. Kreya омогућава и дефинисање тестова писањем скрипти које се извршавају при сваком API позиву.
Kreya нуди бесплатан план за појединачне кориснике, који укључује gRPC клијент са свим функцијама, конфигурације за вишеструку аутентификацију, окружења, шаблоне и још много тога.
ghz
ghz је опен соурце gRPC програм за тестирање оптерећења и услужни програм командне линије, написан у Go језику. ghz подржава прото датотеке, унапред изграђене протосет пакете или рефлексију сервера. Користећи шаблоне са променљивима у Go-у, можете додавати прилагођене податке у захтеве.
Поред услужног програма командне линије, ghz нуди и веб апликацију за преглед, праћење и чување резултата тестирања. Резултати се могу преузети у различитим форматима као што су CSV, JSON и HTML. У тренутку писања, веб интерфејс је још увек у бета фази.
Postman
Postman је платформа за развој API-ја која подржава изградњу и тестирање готово свих типова API-ја, укључујући gRPC. У Postman-у можете писати тестове за појединачне захтеве, колекције или фасцикле у колекцијама.
Када направите gRPC захтев у Postman-у, идите на картицу „Scripts“ у приказу захтева и одаберите да ли ће се тест извршити пре слања захтева или након пријема одговора. Такође можете користити исечке кода за брже писање тестова.
Insomnia
Insomnia је алат за дизајнирање, тестирање и отклањање грешака API-ја. Подржава REST, GraphQL, WebSockets и gRPC захтеве. При креирању новог захтева у Insomnia-и, можете одабрати gRPC и унети URL крајњу тачку API-ја.
Такође је потребно додати .proto датотеку како би се дефинисале поруке. Insomnia подржава све типове захтева, од унарних до двосмерног стримовања, укључујући клијентско и серверско стримовање.
За тестирање API-ја у Insomnia-и, потребно је додати документ дизајна, а затим креирати тест пакет на картици „Test“. Insomnia користи Mocha framework за тестирање јединица и Chai за тврдње.
StackHawk
StackHawk је алат за тестирање безбедности API-ја, који нуди решење за gRPC услуге. Помоћу овог алата можете осигурати безбедност ваших API крајњих тачака. За скенирање gRPC апликације користећи StackHawk, потребно је дефинисати stackhawk.yml фајл са потребним конфигурацијама.
StackHawk нуди бесплатан план са модерним DAST интегрираним аутоматизованим тестирањем у CI/CD цевоводу за једну апликацију. Међутим, функције као што су аутентификација, аутоматизација, увиди, обавештења и подршка за све типове API-ја су укључене у све планове.
gRPCurl
gRPCurl је услужни програм командне линије отвореног кода за повезивање са gRPC серверима. Као што име сугерише, то је „curl за gRPC сервере“. Разлог зашто се cURL не може користити за слање захтева gRPC серверима је тај што не подржава протоколске бафере, који су бинарне поруке. cURL ради само са JSON стринговима.
Можете проверити шему gRPC услуге упитом серверу који подржава рефлексију сервера, читањем прото изворних датотека или учитавањем компилираних „protocet“ датотека (датотека које садрже кодиране описе прото датотека).
gRPCurl није комплетан алат за тестирање, али можете обавити основно испитивање и тестирање помоћу овог услужног програма командне линије.
SmartBear-ов ReadyAPI
ReadyAPI компаније SmartBear подржава тестирање gRPC API-ја, али само унарне операције. За тестирање gRPC услуге, прво је потребно подесити корак за API конекцију. На овај начин можете слати захтеве и примати одговоре од gRPC услуге.
ReadyAPI тренутно подржава само унарне операције, што значи да ће ReadyAPI чекати само један одговор са сервера.
NosiMouse
NosiMouse је алат који укључује gRPC тестер за покретање функционалних, перформансних и безбедносних тестова, било ручно или аутоматски. Нуди функционалности као што су симулација истовремених виртуелних корисника, повећање оптерећења, критеријуми за пролаз, време размишљања, управљање подацима за тестирање и подршка за сценарије тестирања са вишеструким пондерисаним случајевима употребе.
Прати методологију тестирања засновану на подацима, обезбеђујући да увек имате подршку за одвојене податке за тест, променљиве, аутоматизоване верификације и случајеве употребе у стварном свету. Можете покренути тестове са различитим улазима и верификовати излазе у интерфејсу.
Нуди 14-дневну бесплатну пробну верзију за тестирање са два истовремена виртуелна корисника.
Закључне речи
С обзиром на пораст броја gRPC услуга и алата, може бити тешко одабрати прави алат за тестирање gRPC-а. Правилан избор алата је кључан, јер директно утиче на функционалност API-ја. Важно је обратити пажњу на подршку за различите gRPC функционалности као што су рефлексија сервера, стримовање итд. Посебну пажњу обратите на карактеристике специфичне за gRPC при избору алата за тестирање.
Поред тога, погледајте најбоље платформе за тестирање оптерећења API-ја како бисте побољшали перформансе.