Rest API testovanie s JMeter

V súčasnosti sa REST (Representational State Transfer) stal najpoužívanejším modelom implementácie webových služieb. Je ľahký, nie je silne typovaný a na rozdiel od SOAP nie je viazaný len na formát XML. Stal sa teda horúcou novinkou aj pre QA. Vo svojich predchádzajúcich príspevkoch sme sa zmienili o manuálnom testovaní rozhrania REST API a automatizácii rozhrania REST API pomocou Javy. V tomto príspevku si ukážeme, ako vykonávať funkčné alebo záťažové testovanie rozhraní REST API pomocou JMeter.
V tomto návode používam fiktívne rozhranie REST API dostupné na adrese jsonplaceholder.typicode.com. Budem používať metódu HTTP Post rozhrania API na vyžiadanie funkcie „post comments“ tohto fiktívneho rozhrania API.
ADRESA URL API - http://jsonplaceholder.typicode.com/posts
Telo požiadavky API
{
title: 'foo',
body: 'bar',
userId: 1
}
Pri úspešnej požiadavke API vráti nasledujúcu odpoveď (ako je vidieť v časti View Result Tree).
{
title: 'foo',
body: 'bar',
userId: 1
id: 101, //or any random id
}
Kroky pre skriptovanie Rest API v JMeter
- Najskôr musíme pridať sampler požiadaviek HTTP do skupiny vlákien (Plán testov -> Skupina vlákien -> Vzorkovač->Požiadavka HTTP)

- Ďalej musíme v časti webového servera zadať názov alebo IP adresu servera API a jeho port (ak sa vyžaduje).
Sekciu HTTP Request (Požiadavka HTTP) bude potrebné vyplniť ako:
- Názov servera alebo IP – názov servera (napr. jsonplaceholder.typicode.com)
- Implementácia – vyberte HttpClient4 alebo Java
- Protokol[http] – V závislosti od typu protokolu vyberte možnosť HTTP alebo HTTPS (napr. fiktívne rozhranie API je vytvorené nad protokolom http, takže tu použijeme http)
- Method (Metóda) – V závislosti od typu metódy, nad ktorou bolo API zostavené, vyberte Get (Získať), Put (Vložiť), Post (Odoslať), Delete (Odstrániť) atď (v našej ukážke budeme pracovať s metódou Post).
- Path (Cesta) – Cesta k aplikácii za API_URL (napr. pre API_URL http://jsonplaceholder.typicode.com/posts‘ bude Path (Cesta) „posts“.
- Parameters/Post Body (Parametre/telo požiadavky POST) – sem pridajte požiadavku tela API (telo požiadavky API v časti „Post body“ (podrobnosti nájdete na snímke obrazovky nižšie, prípadne môžeme parametre požiadaviek zadávať aj po jednom v časti Parameters)

- Používateľ tiež musí pridať HTTP Header Manager ako podriadeného (as child) do samplera požiadaviek HTTP(pre aktuálny príklad to nie je potrebné, dokonca to nebude fungovať) s hlavičkou content-type
- Kliknite na tlačidlo Add (Pridať) na HTTP Header Manager (Správca hlavičky HTTP) a pridajte „Content-Type“ (Typ obsahu) v položke Name (Názov) a „application/json“ v položke Value (Hodnota).

- [Voliteľné]Ďalej môžeme do plánu testov pridať rôzne tvrdenia, aby sme mohli testovací prípad označiť ako úspešný alebo neúspešný na základe získanej odpovede. Napr. vyššie uvedené fiktívne API vráti vo svojej odpovedi „title:foo“. Aby sme teda mohli otestovať API, môžeme do „HTTP požiadavky“ (HTTP požiadavka->ADD->Assertion->Response Assertion) pridať „Response Assertion“ a do časti Pattern to Test (Vzor na testovanie) v Response Assertion pridať vzor „title: ‚foo'“. Pre referenciu si pozrite snímku obrazovky.

- Nakoniec môžeme pridať rôznych poslucháčov (listeners), napríklad „Zobraziť strom výsledkov“. Po spustení skriptu JMeter (Ctrl+r) uvidíme odpoveď pre API v časti údajov o odpovedi „View Result Tree“.

Týmto spôsobom môžeme vykonať funkčné testovanie rozhrania API Rest a zvýšiť „počet vlákien“ a „počet cyklov“ v skupine vlákien na testovanie záťaže.