Amarengo

Articles and news

Humble Bits

API-testning med Postman, Newman och Jenkins

API-testning är en typ av mjukvarutestning där en ingenjör testar inte bara funktionaliteten utan prestanda, tillförlitlighet och säkerhet för en applikation. API: er testas för att undersöka om applikationen skulle fungera som den förväntas, eftersom API: er är kärnan i en applikations funktioner.

API-testning under utveckling kan avslöja problem med API, server, andra tjänster, nätverk och mer, de som man kanske inte upptäcker eller löser enkelt efter distribution.

det är dock svårt att testa API: er. Istället för att bara verifiera en slutpunkts svar kan man ha integrationstester med Postman för att undersöka och validera svaren. Lag i dessa dagar kanske också vill automatisera att köra dessa tester så snart en distribution är klar. Ett tillvägagångssätt vi kan ta är att få våra integrationstester att köras varje gång en utvecklare checkar in kod till repo.

att lägga till detta lager av kvalitetskontroll kan säkerställa att de befintliga funktionerna fortfarande fungerar som de förväntades, med en ytterligare fördel för utvecklarna att validera att deras kod gör exakt vad den var avsedd att.

verktyg för API-testautomatisering i CI

CI avser kontinuerlig integration. Integration av testskript och ett testverktyg med det kontinuerliga byggsystemet där testskripten kan köras tillsammans med varje ny distribution eller regelbundet (dagligen, veckovis eller varannan vecka)

  1. brevbäraren: Integrationstester med Postman.
  2. Newman: skapa en PowerShell-fil som kör dessa integrationstester via kommandoraden.
  3. Jenkins: Lägg till ett Postbyggnadssteg i Jenkins för att utföra PowerShell-skriptet när en byggnad initieras.

API-val

jag har implementerat denna procedur i vårt projekt med hjälp av GPS-API: erna, men för att instantiera här, låt oss ta upp följande API: er:

öppna Väderkarta: gratis offentliga API: er.

jag valde detta eftersom det är en gratis samling API: er som alla kan prenumerera på och ha sina egna API-nycklar att använda.

skapa integrationstester

för det första testet, låt oss ta upp en enkel GET-begäran för att få Weather by ID. För att interagera via API: erna, se till att använda API-nyckeln som tas emot när du prenumererar på OWM-tjänsterna.

steg till första Integrationstestet

gör en miljö på Postman säg ’väderkarta’ och definiera miljövariablerna i den. .

Lägg till förutsättningarna på fliken Pre-Req för att ställa in testet.

var cityIds = ;// få ett slumptal mellan 0-9var randomCityId = Math.golv ((matematik.slumpmässigt() * 9) + 1);// Ställ in en miljövariabel till värdet av therandom city id från arraypostman.setEnvironmentVariable ("CITYID", cityIds)

lägg nu till testskriptet på fliken Test enligt följande:

var jsonData = JSON.parse (responseBody); / / spara svaret" namn " värde i en miljö variablepostman. setEnvironmentVariable("CITYNAME",jsonData.name); pm.test ("statuskod är 200", funktion () {pm.response.to.have.status (200);});

ovanstående testskript får svaret och vårt skript sveper svaret i en variabel som heter ’jsonData’. Nu sparas värdet på namnegenskapen i en miljövariabel.

således skapas det första testet som misslyckas om HTTP-statuskoden är något annat än en 200.

Samlingar

liksom ovanstående API-tester kan man ha flera testskript för flera slutpunkter. Och dessa flera testskript kan köras i följd för att få en testsvit från början till slut. Sättet att ha en testsvit är att hålla flera testskript i en platshållare som kallas som en samling i Postman.

dessa samlingar kan sedan utföras ytterligare genom samlingslöparen i verktyget.

Samlingslöpare

en samlingslöpare kan användas för att ha en samling API-slutpunkter med sina testskript på ett ställe och därför köra dem en efter en på ett sekventiellt sätt. Användaren behöver bara köra samlingen bara en gång med alla nödvändiga testdata, testskript och för så många iterationer man kanske vill ha. Resultatet av insamlingskörningen är en testrapport, tillräckligt omfattande för att övervaka API: s prestanda och även för att försöka köra de misslyckade testskripten igen.

för detaljerad studie om Samlingslöpare, se länk.

även om användargränssnittet för Postman ’ s collection runner är tillräckligt bra, men för att integrera systemet med Jenkins måste vi köra våra samlingar via kommandoraden. Så, ett sätt att köra samlingar via kommandoraden är genom Newman.

Newman

Newman är ett npm-paket (Node Package Manager) som tillåter oss att köra och testa samlingar direkt från kommandoraden.

förutsättningar:

  • NodeJS och
  • NPM redan installerat.

kommandon som ska köras på Windows Powershell

  • node-v
  • npm-v
  • $npm install-g newman

när de nödvändiga installationerna är färdiga måste man exportera sina samlingar och miljö till JSON-filer i det lokala systemet. Dessa filer kan sedan skickas som argument till Newman.

steg för att få miljö och samlingar på det lokala systemet:

  • klicka på knappen Hämta och exportera I Postman.
  • ladda ner samlingen
  • ladda ner miljön
  • öppna kommandotolken och höja dina privilegier. Detta är viktigt för dig att utföra skriptet. Kör följande kommando:
Set-ExecutionPolicy-Scope CurrentUserExecution Policy: Unrestrictedbekräfta denna ändring: Y

öppna nu en annan kommandotolk och kör följande kommando:

newman run-e 

lägga till Postman-tester till Jenkins

vi måste först exportera våra Postman-filer (miljö och samlingar) och lägga till dem i GIT, tillsammans med vårt Powershell-skript för att köra testerna genom Jenkins build.

” Lägg till Postman-filerna i roten till projektet.”

berättar Jenkins att köra Newman

för detta skriver vi ett skript som kallar Newman och skickar det till miljön och samlingen JSON-filer.

#powershell.exe-executionpolicy bypass-kommando " & '%arbetsyta%\Jenkins_PostmanDemo.ps1 ' "echo "inuti Powershell-skriptet"$SourceFilePath = $env:arbetsyta$FilenamePostfix = "*.postman_collection.json "$EnvironmentFile = " Demo-OpenWeatherMap.postman_environment.json" # Get all Postman test files$JsonFiles = Get-ChildItem-Path $SourceFilePath-name-Filter $FilenamePostfix/ Sort-Object-Property CreationTime-Descending# Byt till katalog där vi har NodeJs installerat. Annars kommer kommandot 'newman' inte att erkännas.# Du kan installera NPM och Newman som användare och kopiera katalogen ~Roaming\npm i theC:\ drive.# cd C:\Users\\AppData\Roaming\npm\node_modules\newman\bincd C:\npm\node_modules\newman\bin # slinga genom json-filerna och kör newman för att köra Postman-testforeach ($- fil i $ JsonFiles) {$collectionfilepath = "$ SourceFilePath\ $ File"$environmentfilepath = "$SourceFilePath\$EnvironmentFile " nod newman kör $collectionfilepath - e $environmentfilepath-disable-unicode}avsluta $LASTEXITCODE

– ’avsluta $LASTEXITCODE’: När du skriver det här kommandot ser du resultatet av det sista kommandot. Vi gör detta för att se till att Newman-kommandot på varje slinga är framgångsrikt. Om något av testerna misslyckas måste vi stoppa manuset och avsluta 1. Det kommer att resultera i en misslyckad bygga på Jenkins.

lägga till skript till Jenkins

steg:

  • logga in på Jenkins och skapa ett Freestyle-projekt.
  • börja med att konfigurera detta projekt för att dra din repokod från Git.
  • på fliken Allmänt, gå till bygga avsnitt och Lägg till följande kommando:
powershell.exe-executionpolicy bypass-kommando " &' % arbetsyta% \ Jenkins_PostmanDemo. ps1'

**man kan konfigurera avsnittet e-postmeddelande för att konfigurera en e-postvarning om byggfel också.

köra Bygg-och övervakningsresultaten

försök att köra projektet och granska resultaten.

man kan göra en framgångsrik ingång till powershell-skriptet med uttalandet ’Inside Powershell script’ i Jenkins-utgången.

slutsats

förbättrad kontinuerlig integration med Postman, Newman och Jenkins lägger till ytterligare ett lager av kvalitetssäkring i vår utvecklingslivscykel. Även om detta är ett stort steg i automatisering, måste vi betona att vår testtäckning beror på kvaliteten på våra testskript.

Lämna ett svar

Din e-postadress kommer inte publiceras.