Havesomerest - (REST) API Test Automation and mock framework - Proof of Concept

Par honapja belekezdtem egy test atomation framework irasaba, mert ugy ereztem, hogy REST API-t tesztelni manapsag eleg korulmenyes automatikusan. Van a JMeter meg meg talan egy ket versenyzo, manualra meg most a Postman a divatos, de egyik se volt az az "OOTB mukodik, nem kell szorakozni a setupolassal" tipusu, illetve az se tetszett, hogy kodolni kell hozza. A REST API-k altalaban plain text JSON-ban kommunikalnak, erdemes lehet megtartani azt a formatumot a tesztek irasara is.

Igy szuletett meg a Havesomerest framework. A project oldalan leirtam a koncepciot: JSON vagy XML formatumban kell a teszteket definialni, mig az endpointokat a folder strukturaban elhelyezett tesztfileok jelolik.

Ez mind szep es jo, de manapsag ugye a microservicek korat eljuk, viszont ahhoz, hogy egy masik service API-ara tudj fejleszteni, azt vagy ki kell mockolni, vagy fel kell setupolni es uzemeltetni kell egy bonyolult development environmentet.

Igy szuletett meg a Havesomerest mock framework.

A mock framework ugyanazokat a test file-okat hasznalja, mint a test framework, csak itt inverzen. Nem ilyen "ilyen es ilyen parameterekkel kuldunk egy requestet es aztan az kapott response-t osszehasonlitjuk a megadottal", hanem azt mondjuk, hogy "ha ilyen parameterekkel jott request es van hozza test eset, akkor add vissza az elore definialt response-t.

Ennek a megoldasnak a fent emlitetteken kivul vannak egyeb elonyei is. Ha az a csapat, amelyik a mi API-nk ellen feljeszt hozzaad ujabb mock eseteket az eddig letezokhoz, az a mi oldalunkon tesztkent jelenik meg. Vagyis egy parhuzamos fejlesztes eseten konnyeden garantalhatjuk, hogy mindket csapat ugyanazon az allasponton van, vagy ha nem, akkor az az elso teszt toreskor kiderul.

Termeszetesen a frameworkok meg nem ajanlottak eles felhasznalasra, de alapvetoen hasznalhatoak. Tobb otletem is van, amivel ki kene egesziteni, peldaul JUint integration, adatbazis prefill, valami expression language, hogy a valtozo ertekeket is lehessen validalni (pl. datum), a mocking frameworkhoz recording es interactive mock lehetoseg, illetve commandline es GUI toolok, hogy egyszeru legyen a framework hasznalata, peldaul torott teszt eseten diff, syntax highlighting, stb.

Jelenleg kicsit megakadtam, mert meg ezer dolog van, amit meg kene csinalni, szoval erdekelne a velemenyetek az egesz koncepciorol, illetve ha tetszik, a prioritasokrol. Aki jobban ismeri esetleg a teszt keretrendszerek belso mukodeset, par tanacsot is adhatna :)