Amarengo

Articles and news

Humble Bits

API testing using Postman, Newman and Jenkins

API testing is een Type software testing waarbij een ingenieur test niet alleen de functionaliteit, maar ook de prestaties, betrouwbaarheid en veiligheid van een toepassing. API ’s worden getest om te onderzoeken of de toepassing zou werken op de manier waarop het wordt verwacht dat, als API’ s zijn de kern van functionaliteiten van een toepassing.

het testen van API tijdens de ontwikkeling kan problemen met API, server, andere diensten, netwerk en meer onthullen, die men niet gemakkelijk kan ontdekken of oplossen na de implementatie.

het testen van API ‘ s is echter moeilijk. In plaats van alleen de respons van een eindpunt te verifiëren, kan men integratietests met Postman hebben om de reacties te onderzoeken en te valideren. Teams deze dagen kunnen ook willen automatiseren het uitvoeren van deze tests zodra een implementatie is gedaan. Een aanpak die we kunnen nemen is om onze integratie testen uitgevoerd elke keer dat een ontwikkelaar controleert in de code van de repo.

het toevoegen van deze laag van kwaliteitscontrole kan ervoor zorgen dat de bestaande functionaliteiten nog steeds werken zoals verwacht, met een extra voordeel voor de ontwikkelaars om te valideren dat hun code precies doet wat de bedoeling was.

Tools for API test automation in CI

CI verwijst naar continue integratie. Integratie van testscripts en een test tool met het continuous build systeem waar de testscripts kunnen worden uitgevoerd samen met elke nieuwe implementatie of op een regelmatige basis (dagelijks, wekelijks of tweewekelijks)

  1. postbode: Integratie testen met postbode.
  2. Newman: Maak een PowerShell-bestand aan dat deze integratietests uitvoert via de opdrachtregel.
  3. Jenkins: voeg een post Build-stap toe in Jenkins om het PowerShell-script uit te voeren wanneer een build wordt gestart.

API-selectie

ik heb deze procedure in ons Project geïmplementeerd met behulp van de GPS-API ‘s, maar voor het installeren hier, laten we de volgende API’ s gebruiken:

Open weerkaart: gratis openbare API ‘ s.

ik koos dit omdat het een gratis verzameling API ‘ s is waarop iedereen zich kan abonneren en zijn eigen API-sleutels heeft om mee te werken.

maak integratietests

voor de eerste test nemen we een eenvoudig GET-verzoek om weer op ID te krijgen. Om te communiceren via de API ‘ s, zorg ervoor dat u de API-sleutel ontvangen bij het abonneren op de OWM-diensten te gebruiken.

stappen voor de eerste integratietest

Maak een omgeving op Postman zeg, ‘weerkaart’ en definieer de omgevingsvariabelen erin. .

voeg de Voorwaarden toe op het tabblad Pre-Req om de test in te stellen.

var cityIds=; / / krijg een willekeurig getal tussen 0-9var randomCityId = Math.floor ((wiskunde.willekeurig() * 9) + 1);// Stel een omgevingsvariabele in op de waarde van deandom city id van arraypostman.instelmilieu variabel ("CITYID", cityIds)

nu, in de Test tab voeg het testscript als volgt toe:

var jsonData = JSON.parse (responseBody); //het opslaan van de waarde "name" in een omgeving variablepostman.setvironmentvariable("CITYNAME",jsonData.name); pm.test("statuscode is 200", function () {pm.response.to.have. status(200); });

het bovenstaande testscript krijgt de respons en ons script wikkelt de respons in een variabele genaamd ‘jsonData’. Nu wordt de waarde van de naameigenschap opgeslagen in een omgevingsvariabele.

zo wordt de eerste test gemaakt die mislukt als de HTTP-statuscode iets anders is dan een 200.

collecties

net als de bovenstaande API-tests, kan men meerdere testscripts hebben voor meerdere eindpunten. En deze meerdere testscripts kunnen in volgorde worden uitgevoerd om een end-to-end test suite te hebben. De manier om een test suite is om meerdere test scripts te houden in een plaats houder genoemd als een verzameling in Postman.

deze collecties kunnen dan verder worden uitgevoerd via de collection runner in het gereedschap.

Collection Runner

een collection runner kan worden gebruikt om een verzameling API-eindpunten met hun testscripts op één plaats te hebben en ze daarom één voor één op een sequentiële manier uit te voeren. De gebruiker hoeft alleen maar om de verzameling uit te voeren slechts een keer met alle benodigde testgegevens, test scripts en voor zoveel iteraties men zou willen. Het resultaat van de collection run is een testrapport, uitgebreid genoeg om de prestaties van de API ‘ s te controleren en ook om opnieuw te proberen het uitvoeren van de mislukte test scripts.

zie Link voor uitgebreid onderzoek naar verzamelaars.

hoewel de gebruikersinterface van Postman ‘ s collection runner goed genoeg is, moeten we toch, om het systeem te integreren met Jenkins, onze collecties uitvoeren via de commandoregel. Dus, een manier om collecties te draaien via de opdrachtregel is door middel van Newman.

Newman

Newman is een node Package Manager (NPM) – pakket dat ons in staat stelt collecties rechtstreeks vanaf de opdrachtregel uit te voeren en te testen.

vereisten:

  • NodeJS en
  • NPM zijn al geïnstalleerd.

commando ‘ s die op Windows Powershell

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

zodra de vereiste installaties zijn voltooid, moet men zijn collecties en omgeving naar JSON-bestanden in het lokale systeem laten exporteren. Deze bestanden kunnen dan als argumenten worden doorgegeven aan Newman.

stappen om de omgeving en collecties op het lokale systeem te krijgen:

  • klik op de knop Downloaden en exporteren in Postman.
  • download de verzameling
  • download de omgeving
  • open de opdrachtprompt en verhoog uw privileges. Dit is belangrijk voor u om het script uit te voeren. Voer het volgende commando uit:
Set-ExecutionPolicy-Scope CurrentUserExecution Policy: Unlimited bevestig deze wijziging: Y

open nu een andere opdrachtprompt en voer het volgende commando uit:

newman run-e 

Postman-Tests toevoegen aan Jenkins

we moeten eerst onze Postman-bestanden (omgeving en collecties) exporteren en ze toevoegen aan GIT, samen met ons PowerShell-script om de tests door Jenkins build uit te voeren.

” voeg de Postman-bestanden toe aan de root van het project.”

Jenkins vertellen Newman

hiervoor schrijven we een script dat Newman aanroept en het de omgeving en verzameling JSON bestanden doorgeeft.

#powershell.exe-executionpolicy bypass-command " &' % WORKSPACE % \Jenkins_PostmanDemo. ps1 ' "echo"Inside Powershell script "$SourceFilePath = $env:WORKSPACE$FilenamePostfix="*.postman_collectie.json "$ EnvironmentFile = " Demo-OpenWeatherMap.postman_milieu.json " # Get all Postman test files$JsonFiles = Get-ChildItem-Path $SourceFilePath-name-Filter $FilenamePostfix |Sort-Object-Property CreationTime-Descending# Change to directory where we have NodeJs installed. Anders wordt het commando 'newman' niet erkend.# Je kunt NPM en Newman als gebruiker installeren en de ~Roaming\npm directory kopiëren in dec: \ drive.# cd C:\Users\\AppData\Roaming\npm\node_modules\newman\bincd C:\npm\node_modules\newman\bin # Loop door de json bestanden en voer newman uit om de Postman testsforeach ($File in $JsonFiles) {$collectionfilepath = "$SourceFilePath\$File "$environmentfilepath = "$SourceFilePath\$EnvironmentFile "node newman run $collectionfilepath-e $environmentfilepath --disable-unicode}exit $LASTEXITCODE

– ‘$LASTEXITCODE afsluiten’: Als u dit commando typt, ziet u het resultaat van het laatste commando. We doen dit om er zeker van te zijn dat op elke lus, het Newman commando succesvol is. Als een van de tests faalt, moeten we het script stoppen en afsluiten 1. Het zal resulteren in een mislukte bouw op Jenkins.

Script toevoegen aan Jenkins

stappen:

  • Log in op Jenkins en maak een Freestyle Project.
  • begin met het configureren van dit project om je repo code uit Git te halen.
  • ga in het tabblad Algemeen naar de sectie bouwen en voeg het volgende commando toe:
powershell.exe-executionpolicy bypass-Commando "& '% WORKSPACE% \ Jenkins_PostmanDemo. ps1'

**men kan de e-mail notificatie sectie configureren om een e-mail alert op bouwfouten ook configureren.

de bouw-en monitoringresultaten uitvoeren

probeer het project uit te voeren en onderzoek de resultaten.

men kan een succesvolle ingang in het PowerShell script zien met het statement ‘Inside Powershell script’ in de Jenkins uitvoer.

conclusie

verbetering van de continue integratie door gebruik te maken van Postman, Newman en Jenkins voegt nog een laag van kwaliteitsborging toe aan onze ontwikkelingscyclus. Hoewel dit een enorme stap in automatisering is, moeten we benadrukken dat onze testdekking afhangt van de kwaliteit van onze testscripts.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.