150 likes | 283 Views
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)
E N D
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?
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ó
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)