Postman on yksi suosituimmista työkaluista API:en kehittämiseen ja testaamiseen. Olen käyttänyt sitä vuodesta 2017 lähtien, ja Postmanin käytön opetteleminen API:en testaamiseen auttoi minua todella nopeuttamaan testausprosessiani.
Tässä artikkelissa opastan sinua vaihe vaiheelta siinä, miten API-pyyntöjä validoidaan Postmanin avulla. Artikkelin lopussa sinun pitäisi pystyä luomaan omia automatisoituja testejä.
Mutta ennen varsinaiseen Postman-oppaaseen siirtymistä haluan kertoa hieman API:sta.
Mitä API:t ovat?

API on lyhenne sanoista Application Programming Interface eli sovellusohjelmointirajapinta. Eikö asia ole vieläkään kovin selvä? 😅 Laajennetaanpa määritelmää:
API on rajapinta, joka määrittelee tavat, joilla komentosarjat tai ohjelmat voivat viestiä sovelluksen tai palvelun kanssa. Ne toimivat jakamalla dataa ja tietoja sovellusten, järjestelmien ja laitteiden välillä.
Yleisin API tällä hetkellä on REST API, jota käytän myöhemmin tässä Postmanin API-testausoppaassa. REST on myös lyhenne sanoista REpresentational State Transfer. REST API:t perustuvat muun muassa asiakas–palvelin-viestintään, yhdenmukaisiin rajapintoihin järjestelmien väliseen viestintään ja tilattomiin toimintoihin.
Viestintä tapahtuu HTTP-pyyntöjen ja -vastausten avulla.
HTTP-pyyntöjen rakenne
HTTP-pyynnöillä on neljä pääkomponenttia:
- URL-osoite
- Päätepiste, joka edustaa tiettyä resurssia, jonka kanssa haluamme olla vuorovaikutuksessa.
- HTTP-metodi – HTTP-metodit kertovat palvelimelle, yritämmekö hakea tietoja vai millaisia muutoksia haluamme sovelluksen tekevän. Käymme tänään läpi CRUD-toimintojen perusteet:
- Luo: POST
- Lue: GET
- Päivitä: PUT
- Poista: DELETE
- Pyynnön runko. Tämä on valinnainen käyttämästämme metodista riippuen. Tässä Postman-oppaassa käytämme JSON-muotoa (JavaScript Object Notation).
Have an account? Log In
HTTP-vastauskoodit
Kun teemme HTTP-pyynnön, palvelin antaa vastauskoodin, joka kertoo, onnistuiko pyyntö vai ei. HTTP-vastauskoodien tärkeimmät luokat ovat:
- 1xx: informatiivinen vastaus
- 2xx: onnistuminen
- 3xx: uudelleenohjaus
- 4xx: asiakasvirhe
- 5xx: palvelinvirhe
Pidän todella paljon tästä Julia Evansin tekemästä visuaalisesta esityksestä:

Täydellisen luettelon vastauskoodeista löydät täältä. Jos haluat mieluummin nähdä ne kissojen selittäminä, löydät ne täältä 🐱👓
Hyvä, nyt olemme mielestäni käsitelleet tarpeeksi perusteita varsinaisen oppaan aloittamista varten – katsotaan siis, miten Postmania käytetään API:en testaamiseen!
Postmanin käyttäminen API:en testaamiseen (vaihe vaiheelta)
Voit käyttää Postmania kahdella tavalla: suoraan selaimesta (sinun on luotava tili tätä varten) tai asentamalla sen paikalliselle tietokoneellesi – jälkimmäisessä vaihtoehdossa tiliä ei tarvita.
Pidän sitä mieluummin asennettuna yksinkertaisesti siksi, etten pidä liian monien avattujen selaimen välilehtien aiheuttamasta sekavuudesta, joten käytän jatkossa tätä vaihtoehtoa.
Tämä on aloittelijoille tarkoitettu opas, joten käytän joitakin yksinkertaisia testitapauksia havainnollistaakseni, miten Postmania käytetään API:n testaamiseen. Käyttämäni esimerkkisovellus on Swagger Petstore, ja testaamani skenaario on:
- Lisää uusi lemmikki kauppaan käyttämällä ”pending”-tilaa
- Päivitä lemmikin tilaksi ”available”
- Vahvista, että lemmikin tiedot päivitettiin
- Poista lemmikki
- Vahvista, että lemmikki poistettiin
Selvä, aloitetaan!

Ensimmäinen HTTP-pyyntö Postmanissa
Postman mahdollistaa API-pyyntöjen ryhmittelyn kokoelmiksi. Nämä ovat toisiinsa liittyvien HTTP-pyyntöjen ryhmiä. Luo uusi kokoelma kaikille seuraaville pyynnöille, joita käytät testeissä:

Hyvä, nyt sinulla on tyhjä kokoelma.
Napsauta ”Lisää pyyntö” -URL-osoitetta tai välilehtiluettelossa olevaa ”+”-painiketta:

Swagger UI -sivu toimii API:n dokumentaationa.
Uuden lemmikin luomiseen tarvitsemasi resurssi (päätepiste) on ”/pet”, ja HTTP-metodi on POST.
Malli-välilehdeltä näet pyyntöön lähetettävän rungon sekä kunkin arvon tietotyypit:

Käytämme JSON-muotoa rungon lähettämiseen, joten ota ”raaka”-valintanappi käyttöön ja valitse avattavasta valikosta JSON.
Pyynnön rungon pitäisi näyttää suunnilleen tältä:
{
"id": 0,
"category": {
"id": 0,
"name": "dog"
},
"name": "Spike",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "bulldog"
}
],
"status": "pending"
}
Voit helposti lisätä loput tiedot uudella pyyntöjen välilehdellä:

Luo tämä uusi lemmikki palvelimelle napsauttamalla Lähetä-painiketta.
Jos kaikki sujuu hyvin, saat onnistumisesta kertovan vastauksen, jonka runko sisältää tietoja lemmikistä, mukaan lukien sen tunnisteen.
Tarvitsemme tätä jatkossa:

Seuraava vaihe on lemmikin tietojen päivittäminen.
Tätä varten sinun on käytettävä samaa resurssia, ”/pet”, mutta lähetettävä pyyntö, jossa HTTP-metodina on PUT.
Voit nähdä pyynnön rungossa lähetettävät tiedot:

Luo siis uusi pyyntö käyttämällä samaa pyynnön URL-osoitetta, valitse PUT-menetelmä ja lähetä sama pyynnön runko, mutta muuta status-arvoksi ‘available’ ja käytä edellisestä vastauksesta saatua tunnistetta:
{
"id": <syötä tunniste tähän>,
"category": {
"id": 0,
"name": "dog"
},
"name": "Spike",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "bulldog"
}
],
"status": "available"
}
Vastauksen pitäisi jälleen olla 200 OK. Luetaan seuraavaksi lemmikin tiedot ja varmistetaan, että tila on päivitetty oikein.
Tässä käytettävä HTTP-menetelmä on GET, ja pyyntö hyväksyy tunnisteen parametrina:

Vastaus sisältää kaikki lemmikin tiedot, myös tilan, jonka arvona on nyt ‘available’:

Poistopyyntö tehdään täsmälleen samaan URL-osoitteeseen kuin GET-pyyntö (mukaan lukien tunnisteparametri), mutta valittu HTTP-menetelmä on DELETE:

Jälleen kerran pyynnön pitäisi onnistua ja HTTP-vastauksen olla 200:

Jos lähetät saman lemmikin tunnisteella varustetun GET-pyynnön uudelleen, saat 404 HTTP-pyynnön, koska lemmikkiä ei enää löydy palvelimelta:

Testien lisääminen Postmanissa
Edellisten vaiheiden avulla kävit läpi kaikki testiskenaarion vaiheet, mutta jokainen tulos piti tarkistaa manuaalisesti tarkastelemalla vastauskoodeja ja -runkoja.
Seuraavaksi katsotaan, miten API-testit automatisoidaan Postmanilla, jotta näitä tarkistuksia ei tarvitse tehdä manuaalisesti.
Aloita ensimmäisestä pyynnöstä eli POST-pyynnöstä ja napsauta pyynnön Testit-välilehteä.
Valitse oikealta koodikatkelma ”Tilakoodi: koodi on 200”. Postmanin koodikatkelmat ovat ennalta määritettyjä komentosarjoja, joita voit käyttää, joten sinun ei tarvitse kirjoittaa koodia itse manuaalisesti. Jokainen Testit-välilehdelle syöttämämme koodirivi suoritetaan sen jälkeen, kun pyyntö on lähetetty.
Voit vaihtaa testin nimeksi jotain kuvaavampaa (esimerkiksi ”Lemmikin luominen onnistui”).
Lähetä pyyntö uudelleen. Tällä kertaa näet, että vastauksen Testitulokset-välilehdellä näkyy, että 1/1 testiä läpäistiin, sekä läpäistyn testin nimi:

Voit lisätä tämän koodikatkelman myös PUT- ja DELETE-pyyntöihin.
GET-pyynnön vastauksen status-arvon tarkistamiseen käytä koodikatkelmaa ”Vastausrungon JSON-arvon tarkistus”:
pm.test("Testisi nimi", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
Tämä koodikatkelma tallentaa vastauksen jsonData-muuttujaan, jäsentää sen, lukee määritteen arvon ja vertaa sitä odotettuun arvoon.
Tässä tapauksessa tämä tarkoittaa, että ‘status’-määritteellä pitäisi olla arvo ‘available’. Testin pitäisi siis näyttää tältä:
pm.test("Lemmikin tila on 'available'", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.status).to.eql("available");
});
Viimeistä tarkistusta varten, jolla vahvistetaan lemmikin poistaminen suorittamalla GET-pyyntö uudelleen, voimme monistaa alkuperäisen GET-pyynnön ja lisätä testin, joka vahvistaa, että HTTP-vastauskoodi on tällä kertaa 404:

Voit siirtää pyynnöt kokoelman sisälle vetämällä ja pudottamalla niitä.

Muuttujien käyttäminen Postmanissa
Huomasit todennäköisesti, että meidän täytyi kopioida ja liittää tunnus manuaalisesti POST-pyynnöstä kaikkiin sitä seuraaviin pyyntöihin. Entä jos tämän voisi tehdä helpommin?
Hyvä uutinen on, että se onnistuu! Voimme käyttää Postman-muuttujia uudelleenkäytettävien arvojen tallentamiseen, joten jos arvoja tarvitsee muuttaa, voimme muuttaa ne yhdessä paikassa samalla tavalla kuin pyrimme tekemään kaikissa automatisoiduissa testeissä.
Postman-muuttujilla on kolme käyttöaluetta:
- Globaali: muuttujat, joita voidaan käyttää mistä tahansa ympäristöstä ja mistä tahansa kokoelmasta
- Ympäristö: ympäristötasolle tallennetut muuttujat. En käyttänyt ympäristöjä tässä ohjeessa, mutta on hyvä tietää, että Postmanissa voi luoda erilaisia ympäristöjä eri ympäristöille, joiden kanssa työskentelemme. Esimerkiksi erilliset ympäristöt kehitystä, UAT:tä ja tuotantoa varten
- Kokoelma: nämä muuttujat tallennetaan kokoelmatasolle, ja niitä voidaan käyttää kaikista kokoelman sisällä olevista pyynnöistä.
Kokoelmamuuttujien määrittämiseen on useita tapoja.
Yksinkertaisin tapa on luoda muuttuja suoraan kokoelmasta.
Napsauta tätä varten kokoelman nimeä, valitse muuttujavälilehti ja syötä muuttujan nimi ja arvo:

Käytä tätä muuttujaa korvaamalla pyyntöjen alkuperäinen arvo muuttujan nimellä, joka kirjoitetaan kahden aaltosulkeen väliin, esimerkiksi näin: {{petId}}
Sinun on käytettävä sitä POST- ja PUT-pyyntöjen rungossa “id”-parametrin kohdalla seuraavasti:
"id": {{petId}},
Ja GET- ja DELETE-pyyntöjen URL-osoitteessa seuraavasti: https://petstore.swagger.io/v2/pet/{{petId}}
Voit tutustua kokoelman lopulliseen versioon täällä.
More Articles
Postman-kokoelman suorittaminen
Ja nyt päästään parhaaseen osuuteen! Tämän ohjeen koko tarkoitus oli näyttää, miten automatisoituja testejä suoritetaan Postmanilla. Kaikki aiemmin tekemämme valmisteli tätä vaihetta.
Suorita testit automaattisesti napsauttamalla kokoelman nimeä hiiren kakkospainikkeella tai viemällä osoitin sen päälle, napsauttamalla nimen vieressä olevaa kolmen pisteen valikkoa ja valitsemalla ‘Suorita kokoelma’.

Tämä avaa kokoelman suorittajan:

Tässä näkymässä voit valita, mitkä pyynnöistäsi haluat lähettää, muuttaa niiden järjestystä, suorittaa kokoelman useita kertoja (lisäämällä iteraatioiden määrää) tai lisätä pyyntöjen välille viiveitä.
Voit toistaiseksi jättää oletusarvot ennalleen ja napsauttaa ”Suorita”-painiketta. Kun suoritus on valmis, näet kaikkien testattaviksi haluamiemme skenaarioiden testitulokset yhdellä napsautuksella:

Siinä kaikki! Jos seurasit artikkelin kaikkia vaiheita, sinulla pitäisi nyt olla ensimmäiset Postmanin automaattiset API-testisi! 🚀
Yhteenveto
Postman on erittäin hyödyllinen työkalu API-rajapintojen testaamiseen, ja tässä artikkelissa raapaisimme vasta pintaa. Onnistuimme kuitenkin käsittelemään HTTP-pyyntöjen lähettämisen, vastausten lukemisen, testien luomisen ja testitulosten automaattisen tarkistamisen.
Jos pidit tästä artikkelista, tilaa QA Lead -uutiskirje, jotta pysyt ajan tasalla ohjelmistotestauksen uutisista ja trendeistä.



