RESTful Web Service tesztelése Takács Viktor 2014.03.07.
Mi is az a REST? Representational State Transfer (Roy Fielding, 2000) Erőforrások egyedi azonosítóval (URI, pl. /resources/persons/Bob) Állapotmentes (Két kérés között nem őriz meg semmit, a kérésben mindent el kell küldeni) Többféle reprezentáció (JSON, XML, stb.) Kliens-szerver kapcsolat
A web is REST rendszer! HTTP protokoll (állapot nélküli, erőforrások egyedi URI-val) CRUD-nak megfelelő HTTP metódusok: Create -> POST Retrive -> GET Update -> PUT Delete -> DELETE A web is kliens-szerver architektúra
REST vs SOAP REST egyszerűbb (képeslap vs levél borítékban), de mindent tud, amit a SOAP REST lazább (nincs definíció - wsdl) A „nagyok” egyre inkább a REST-et részesítik előnyben Többféle reprezentáció (SOAP-ban csak xml) Egyébként mindkettő platform és nyelv független
Mi kell a teszteléshez? Kell egy (a tesztelés alatt) elérhető REST szolgáltatás Kell valamilyen REST kliens
REST kliensek Platform és nyelvfüggő API-kal (például Java-ban JAX-RS client API-val) Böngészőbe integrált REST kliensek (pl. Firefox, Chrome)
Mit is tesztelünk? Elérhető-e az szolgáltatás (erőforrás)? Jön-e válasz a kérésre? Adott HTTP metódussal meghívható? (GET, POST, stb.) Adott média formátumban fogad-e kérést illetve adott média formátumban jön-e a válasz? (pl. JSON) Megfelelő-e a válasz tartalma?
Könyvesbolt teszteset
JAX-RS Java API for RESTful Web Services Interfészgyűjtemény sokféle implementációval (pl. Jersey, RESTEasy) Szerver és kliens oldali API is Annotáció alapú konfiguráció
JAX-RS szerver oldalon
JAX-RS kliens oldalon
RESTAssured teszt
Automatizált tesztek A teszt maga gondoskodik róla, hogy a szolgáltatás elérhető legyen a tesztelés idején A tesztek bizonyos események hatására (pl. commit, időzítés) automatikusan lefutnak (Continuous Integration)
Arquillian teszt
Köszönöm a figyelmet!