8 Användbara gRPC-testverktyg att använda under utveckling

By rik

gRPC representerar ett ramverk för fjärranrop (RPC), utvecklat av Google.

En intressant detalj belyser orsaken till dess namn. Ett fjärranrop möjliggör exekvering av en funktion eller metod på en annan dator, likt om den vore lokal. Det är en abstraktion som förenklar hanteringen av HTTP-anrop och andra nätverkskoncept.

gRPC underlättar kommunikation och dataöverföring mellan mikrotjänster avsevärt. Det bygger på HTTP/2-protokollet, men gör sammankopplingen mer tillgänglig för utvecklare.

Mikrotjänster kan implementeras i flera olika programmeringsspråk, vilket kräver en mekanism för att de ska kunna interagera.

gRPC löser detta problem genom att erbjuda stöd för flera språk. Det använder protokollbuffrar som ett gränssnittsbeskrivningsspråk (IDL) för att specificera meddelandestrukturen.

Testning av gRPC-applikationer

Testning är essentiell för all komplex mjukvara, inklusive gRPC-applikationer. Genom att testa gRPC-applikationer säkerställs en pålitlig och effektiv kommunikation mellan mikrotjänster och andra tjänster.

Det garanterar att tjänster, även om de är skrivna i olika språk, kan kommunicera utan språkbarriärer. Detta är möjligt tack vare användningen av språkneutrala protokollbuffrar.

Genom testning klargörs även felhantering och undantagshantering. Dessutom kan prestandatester genomföras för att analysera tjänsternas beteende under olika belastningsförhållanden.

Nu när du har en grundläggande förståelse för gRPC, låt oss undersöka några användbara testverktyg.

Kreya

Kreya är en API-klient med ett grafiskt gränssnitt för både gRPC och REST API. Dess gRPC-klient erbjuder stöd för streamingförfrågningar, unära anrop, validering och mycket mer. Kreya ger också möjlighet att generera simulerad data för att testa API:et.

Förfrågningar och konfiguration lagras i ett filsystem, vilket möjliggör versionshantering med Git eller andra system. Kreya tillåter även att definiera tester via skript, vilket möjliggör API-testning vid varje anrop.

Kreya erbjuder en kostnadsfri version för enskilda användare, som inkluderar en komplett gRPC-klient, återanvändbara autentiseringskonfigurationer, miljöer och mallar, bland annat.

ghz

ghz är ett kommandoradsverktyg med öppen källkod, utvecklat i Go, för att utföra prestandamätning och lasttestning av gRPC-API:er. ghz stöder protofiler, färdiga protoset-paket eller serverreflektion. Med hjälp av Go-mallvariabler kan anpassad data läggas till förfrågningar.

Utöver kommandoradsverktyget erbjuder ghz också ett webbgränssnitt för att visualisera, spåra och lagra testresultat. Resultaten kan exporteras i olika format som CSV, JSON och HTML. Webbgränssnittet befinner sig för närvarande i beta.

Postman

Postman är en API-utvecklingsplattform som stödjer utveckling och testning av de flesta typer av API:er, inklusive gRPC. I Postman kan tester skrivas för enskilda förfrågningar, samlingar eller mappar.

Vid en gRPC-förfrågan i Postman, välj fliken ”Skript” i förfrågningsvyn och ange om testet ska utföras före eller efter att svaret har mottagits. Kodavsnitt kan användas för att snabba upp testskrivningen.

Insomnia

Insomnia är ett verktyg för att designa, testa och felsöka API:er. Det stödjer REST, GraphQL, WebSockets och gRPC. När en ny förfrågan skapas i Insomnia kan gRPC väljas och URL-slutpunkten anges.

En .proto-fil måste också läggas till för att definiera meddelanden. Insomnia stödjer de flesta förfrågningstyper, från unära förfrågningar till dubbelriktad streaming, inklusive klient- och serverströmning.

För API-testning i Insomnia krävs ett designdokument för API:et. Under fliken ”Test” kan testsviter skapas. Insomnia använder Mocha-ramverket för enhetstestning och Chai för påståenden.

Stackhawk

Stackhawk är ett API-säkerhetstestverktyg som även erbjuder lösningar för gRPC-tjänster. Det används för att säkerställa säkerheten för API-slutpunkter. För att skanna en gRPC-applikation med Stackhawk krävs en stackhawk.yml-fil med nödvändiga konfigurationer.

Stackhawk erbjuder en kostnadsfri version med automatiserad DAST-testning integrerad i CI/CD-pipelinen för en enda applikation. Funktioner som autentisering, automatisering, insikter, aviseringar och stöd för alla API-typer är inkluderade i samtliga prisplaner.

gRPCurl

gRPCurl är ett kommandoradsverktyg med öppen källkod för att ansluta till gRPC-aktiverade servrar. Det beskrivs som ”curl för gRPC-servrar”. Anledningen till att cURL inte kan användas direkt mot gRPC-servrar är att det inte stöder protokollbuffrar, som är binära meddelanden, medan cURL hanterar JSON-strängar.

Schemat för gRPC-tjänster kan kontrolleras genom att antingen fråga en server som stöder serverreflektion, genom att läsa proto-källfiler eller genom att ladda kompilerade ”protoset”-filer (filer som innehåller kodade filbeskrivningsprotos).

gRPCurl är inte ett komplett testverktyg, men det kan användas för att göra grundläggande frågor och tester via kommandoraden.

Smartbears ReadyAPI

ReadyAPI från Smartbear stödjer gRPC API-testning, men endast unära operationer. För att testa en gRPC-tjänst måste först ett API-anslutningsteststeg konfigureras. Därefter kan förfrågningar skickas och svar tas emot från gRPC-tjänsten.

ReadyAPI stöder för närvarande endast unära operationer, vilket innebär att ReadyAPI endast väntar på ett enda svar från servern.

NosyMouse

NosyMouse är ett verktyg som inkluderar en gRPC-testare för att utföra funktions-, prestanda- och säkerhetstester manuellt eller automatiskt. Det erbjuder funktioner som samtidiga virtuella användare, ramp-up, godkända kriterier, tanketider, testdata och stöd för testscenarier med flera viktade användningsfall.

Det använder en datadriven testmetod, vilket säkerställer stöd för separata testdata, variabler, automatiserade verifieringar och verkliga användningsfall. Test kan köras med olika ingångar och utgångar kan verifieras i gränssnittet.

En 14-dagars kostnadsfri testperiod erbjuds för att testa två samtidiga tjänstanvändare.

Slutord

Med det ökande antalet gRPC-tjänster och verktyg kan det vara svårt att välja rätt gRPC-testverktyg. Att välja rätt verktyg är viktigt då det direkt påverkar API-funktionalitet. En viktig faktor att beakta är stöd för olika gRPC-funktioner som serverreflektion och streaming. Vid val av testverktyg bör specifika gRPC-funktioner beaktas.

Utforska även de bästa plattformarna för API-belastningstester för att förbättra prestanda.