Sådan bruger du Postman til at teste API’er

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Postman er et af de mest populære værktøjer til udvikling og test af API’er. Jeg har brugt det siden 2017, og det at lære at bruge Postman til at teste API’er hjalp mig virkelig med at fremskynde min testproces. I denne artikel vil jeg trin for trin vise dig, hvordan du validerer API-anmodninger ved hjælp […]

Postman er et af de mest populære værktøjer til udvikling og test af API'er. Jeg har brugt det siden 2017, og det at lære at bruge Postman til at teste API'er hjalp mig virkelig med at fremskynde min testproces.

I denne artikel vil jeg trin for trin vise dig, hvordan du validerer API-anmodninger ved hjælp af Postman. Når du er færdig, bør du kunne oprette dine egne automatiserede tests.  

Men før vi går i gang med selve Postman-vejledningen, vil jeg forklare nogle ting om API'er.

Hvad er API'er?

billede af hvad en API er
Billedkilde

API er en forkortelse for applikationsprogrammeringsgrænseflade. Stadig ikke helt klart, vel? 😅 Lad mig uddybe det:

En API er en grænseflade, der definerer, hvordan scripts eller programmer kan kommunikere med en applikation eller tjeneste. De fungerer ved at dele data og oplysninger mellem applikationer, systemer og enheder.

Den mest almindelige API i øjeblikket er REST API, som jeg vil bruge senere i denne Postman-vejledning i API-test. REST er også et akronym for REpresentational State Transfer. REST API'er bygger på principper som klient-server-kommunikation, ensartede grænseflader til kommunikation mellem systemer, tilstandsløse handlinger og meget mere.

Kommunikationen foregår gennem HTTP-anmodninger og -svar.

HTTP-anmodningers anatomi

HTTP-anmodninger har 4 hovedkomponenter:

  • URL'en 
  • Endpointet, som repræsenterer den specifikke ressource, vi ønsker at interagere med.
  • HTTP-metoden—HTTP-metoder fortæller serveren, om vi forsøger at hente oplysninger, eller hvilke ændringer vi ønsker, at applikationen skal udføre. I dag gennemgår vi de grundlæggende CRUD-handlinger:
    • Opret: POST
    • Læs: GET
    • Opdater: PUT
    • Slet: DELETE
  • Anmodningens brødtekst. Dette er valgfrit, afhængigt af hvilken metode vi bruger. I denne Postman-vejledning bruger vi formatet JSON (JavaScript Object Notation).
Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

HTTP-svarkoder

Når vi sender en HTTP-anmodning, returnerer serveren en svarkode, som fortæller os, om anmodningen lykkedes eller ej. De vigtigste kategorier af HTTP-svarkoder er:

  • 1xx: informationssvar
  • 2xx: succes
  • 3xx: omdirigering
  • 4xx: klientfejl
  • 5xx: serverfejl

Jeg er virkelig vild med denne visuelle fremstilling fra Julia Evans:

billede af HTTP-svarkoder
Liste over de mest almindelige HTTP-svarkoder (Kilde)

Du kan finde en komplet liste over svarkoderne her, eller hvis du foretrækker dem forklaret af katte, her 🐱‍👓

Okay, jeg synes, vi har dækket nok til at komme i gang med selve vejledningen—lad os nu se, hvordan man bruger Postman til at teste API'er! 

Sådan bruger du Postman til at teste API'er (trin for trin)

Du kan bruge Postman på to måder: direkte fra browseren (du skal oprette en konto for at kunne gøre dette) eller installeret på din lokale maskine—det er valgfrit, om du vil have en konto til denne mulighed. 

Jeg foretrækker at have det installeret, simpelthen fordi jeg ikke bryder mig om rod med for mange åbne browserfaner, så det er den løsning, jeg bruger fremover.

Dette er en begyndervejledning, så jeg vil bruge nogle enkle testtilfælde til at demonstrere, hvordan man bruger Postman til at teste en API. Demoappen, jeg vil bruge, er Swagger Petstore, og det scenarie, jeg vil teste, er:

  • Tilføj et nyt kæledyr til lageret med status som ‘afventende’
  • Opdater kæledyrets status til ‘tilgængelig’
  • Kontrollér, at oplysningerne om kæledyret blev opdateret
  • Slet kæledyret
  • Bekræft, at kæledyret blev slettet

Okay, lad os komme i gang!

gif af start på API-test

Den første HTTP-anmodning i Postman

Postman gør det muligt at gruppere API-anmodninger i samlinger. Det er grupper af relaterede HTTP-anmodninger. Opret en ny samling til alle de følgende anmodninger, som du vil bruge i testene:

skærmbillede af HTTP-anmodning i Postman
Du kan oprette en ny samling ved at klikke på knappen Ny, vælge Samling og indtaste et navn til samlingen.

Okay, så har du nu en tom samling.

Klik på URL'en 'Tilføj en anmodning' eller på knappen '+' på listen over faner:

skærmbillede af tilføjelse af HTTP-anmodning i Postman
Der åbnes en ny fane, hvor du kan tilføje de anmodningselementer, jeg nævnte tidligere.

Swagger UI-siden fungerer som dokumentation for API'et.

Den ressource (slutpunkt), du skal bruge til at oprette et nyt kæledyr, er '/pet', og HTTP-metoden er POST.

På fanen Model kan du se det objekt, du skal sende som anmodningens brødtekst, samt datatyperne for hver værdi:

skærmbillede af JSON-format

Vi bruger JSON-formatet til at sende svarbrødteksten, så aktivér alternativknappen 'rå', og vælg JSON i rullemenuen. 

Anmodningens brødtekst bør se nogenlunde sådan ud:

{

  "id": 0,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "pending"

}

Du kan nemt tilføje resten af oplysningerne på den nye anmodningsfane:

skærmbillede af ny anmodningsfane
Det, vi gjorde her, var at oprette et nyt objekt for et kæledyr ved navn Spike, som tilhører en kategori kaldet 'dog', har tagget 'bulldog' og status som 'pending'. 

Hvis du vil oprette dette nye kæledyr på serveren, skal du klikke på knappen Send.

Hvis alt går godt, modtager du et vellykket svar, og svarbrødteksten vil indeholde nogle oplysninger om kæledyret, herunder dets ID.

Vi får brug for dette fremover:

skærmbillede af oprettelse af nyt kæledyr

Det næste trin er at opdatere oplysningerne om kæledyret.

Det gør du ved at tilgå den samme ressource, '/pet', men sende en anmodning med HTTP-metoden PUT.

Du kan se, hvilke oplysninger du skal sende i anmodningens brødtekst:

skærmbillede af opdatering af kæledyrsoplysninger

Opret derefter en ny anmodning ved hjælp af den samme anmodnings-URL, vælg PUT-metoden, og send det samme anmodningsindhold, men ændr statusværdien til ‘available’, og brug ID'et fra det forrige svar:

{

  "id": <indtast ID'et her>,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "available"

}

Svaret bør igen være 200 OK. Lad os derefter læse oplysningerne om kæledyret for at kontrollere, at status er blevet opdateret korrekt. 

HTTP-metoden til dette er GET, og anmodningen accepterer ID'et som en parameter:

skærmbillede af HTTP-metode med ID-parameter

Svaret indeholder alle kæledyrets data, herunder status, som nu har værdien ‘available’:

skærmbillede af svar, der indeholder kæledyrsdata

Sletteanmodningen udføres på nøjagtig samme URL som GET-anmodningen (inklusive ID-parameteren), men den valgte HTTP-metode vil være DELETE:

skærmbillede af HTTP-metode for sletteanmodning

Igen bør anmodningen lykkes, og HTTP-svaret bør være 200:

skærmbillede af vellykket sletteanmodning med HTTP-metode

Hvis du sender GET-anmodningen igen for det samme kæledyrs-ID, får du en 404 HTTP-fejl, fordi kæledyret ikke længere kan findes på serveren:

skærmbillede af 404 HTTP-anmodning

Tilføjelse af tests i Postman

Med de foregående trin gennemgik du alle trin i testscenariet, men hvert resultat skulle valideres manuelt ved at kontrollere svarkoderne og -indholdet. 

Lad os se, hvordan du automatiserer API-testene ved hjælp af Postman, så du ikke behøver at udføre disse kontroller manuelt.

Begynd med den første anmodning, POST, og klik på fanen Tests for anmodningen. 

Vælg kodestykket 'Statuskode: Koden er 200' i højre side. Kodestykker i Postman er foruddefinerede scripts, som du kan bruge, så du ikke selv behøver at skrive koden manuelt. Hver kodelinje, som vi indtaster i fanen Tests for anmodningen, udføres, efter at anmodningen er sendt. 

Du kan ændre testens navn til noget mere beskrivende (f.eks. 'Oprettelse af kæledyr lykkedes'). 

Send anmodningen igen, og denne gang vil du se, at fanen Testresultater for svaret viser, at 1/1 tests er bestået, samt navnet på den beståede test:

skærmbillede af fanen med testresultater

Du kan også føje dette kodestykke til PUT- og DELETE-anmodningerne. 

Brug kodestykket ‘Svarindhold: Kontrol af JSON-værdi’ til at validere statusværdien i svaret på GET-anmodningen:

pm.test("Dit testnavn", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.value).to.eql(100);

});

Denne kodestump gemmer svaret i en variabel ved navn jsonData, som den analyserer, læser værdien af en attribut og sammenligner den med en forventet værdi. 

For os betyder det, at attributten ‘status’ skal have værdien ‘available’. Testen bør derfor se sådan ud:

pm.test("Kæledyrets status er 'available'", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.status).to.eql("available");

});

Og til den sidste kontrol, som bekræfter, at kæledyret blev slettet, ved at køre GET igen, kan vi duplikere den oprindelige GET-anmodning og tilføje en test, der denne gang validerer, at HTTP-svarkoden er 404:

skærmbillede af API-tests

Du kan flytte anmodningerne ind i samlingen ved at trække og slippe dem.

skærmbillede af API-testanmodning

Brug af variabler i Postman

Du har sikkert bemærket, at vi manuelt skulle kopiere og indsætte ID'et fra POST-anmodningen i alle de efterfølgende anmodninger. Hvad nu, hvis der var en nemmere måde at gøre det på?

Den gode nyhed er, at det er der! Vi kan bruge Postman-variabler til at gemme genanvendelige værdier, så hvis værdierne skal ændres, kan vi ændre dem ét enkelt sted, på samme måde som vi tilstræber at gøre i alle automatiserede tests.

Postman-variabler har tre niveauer:

  • Global: variabler, der kan tilgås fra ethvert miljø og enhver samling
  • Miljø: variabler, der er gemt på miljøniveau. Jeg brugte ikke miljøer i denne vejledning, men det er godt at vide, at Postman giver os mulighed for at oprette forskellige miljøer til de forskellige miljøer, vi arbejder med. For eksempel separate miljøer til Dev, UAT og Produktion
  • Samling: disse variabler gemmes på samlingsniveau, og de kan tilgås fra alle anmodninger i samlingen.

Der er flere måder at konfigurere samlingsvariabler på. 

Den enkleste måde er at oprette variablen direkte fra samlingen.

For at gøre dette skal du klikke på samlingens navn, vælge fanen med variabler og angive variablens navn og værdi:

skærmbillede af API-testsamling

For at bruge denne variabel skal du erstatte den oprindelige værdi i anmodningerne med variabelnavnet skrevet mellem to tuborgede parenteser, sådan her: {{petId}}

Du skal bruge den i brødteksterne til POST- og PUT-anmodningerne for parameteren “id”, sådan her:

"id": {{petId}},

Og i URL'en til GET- og DELETE-anmodningerne, sådan her: https://petstore.swagger.io/v2/pet/{{petId}}

Du kan se den endelige version af samlingen her.

More Articles

Kørsel af Postman-samlingen

Og nu kommer den bedste del! Hele formålet med denne vejledning var at vise dig, hvordan du kører automatiserede tests ved hjælp af Postman. Alt det, vi gjorde tidligere, var forberedelse til denne del. 

For at køre testene automatisk skal du højreklikke på samlingens navn eller holde markøren over det, derefter klikke på menuen med de tre prikker ved siden af navnet og vælge ‘Kør samling’. 

skærmbillede af kørsel af API-testsamling

Dette åbner Samlingskørsel:

skærmbillede af samlingskørsel

På denne skærm kan du vælge, hvilke af dine anmodninger du vil sende, ændre deres rækkefølge, køre samlingen flere gange (ved at øge antallet af gentagelser) eller tilføje forsinkelser mellem anmodningerne.

Du kan bare lade standardværdierne være indtil videre og klikke på knappen ‘Kør’. Når kørslen er fuldført, kan du med et enkelt klik se testresultaterne for alle de scenarier, vi ønskede at teste:

api test all test screenshot

Og det var det! Hvis du fulgte alle trinnene i denne artikel, burde du nu have dine første automatiserede API-tests i Postman! 🚀

Afrunding

Postman er et meget nyttigt værktøj, når det gælder test af API'er, og denne artikel berørte kun overfladen. Vi nåede dog at gennemgå, hvordan man sender HTTP-anmodninger, hvordan man læser svarene, hvordan man opretter tests, og hvordan man automatisk kontrollerer testresultaterne.

Hvis du kunne lide denne artikel, så abonner på QA Lead-nyhedsbrevet, så du er opdateret med alle nyhederne og tendenserne inden for softwaretest.

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊

You may also like