Recenzija za Aqua IDE okruženje

JetBrains je kompanija poznata po razvoju IDE okruženja za Softver developer-e. Njihovi IDE alati su veoma korišćeni i popularni u primeni razvoja softvera u različitim jezicima. IntelliJ (IDE za Java developer-e), PyCharm (IDE za Python developer-e), WebStorm (IDE za Web developer-e), RubyMine (IDE za Ruby developer-e), DataGrip (IDE za rad nad različitim bazama podataka) su samo neki od njihovih IDE okruženja koja se učestalo koriste. Nedavno je JetBrains kompanija izbacila i IDE okruženje namenjeno za automatizaciju auto testova.

U ovom članku ćemo da istražimo Aqua IDE okruženje koje je namenjeno za automation test inženjere i da damo objektivno mišljenje.

Kao što smo spomenuli JetBrains je izbacio novo IDE okruženje, namenjeno test automation inženjerima. Naziv IDE okruženja je Aqua i na ovom linku https://www.jetbrains.com/aqua/ možete preuzeti okruženje.
Aqua trenutno ima status preview, i za vreme tog statusa je besplatna za korišćenje, ne znamo da li će kasnije biti besplatna za korišćenje, kao i koja će biti cena. Na gore navedenom linku, možete preuzeti IDE okruženje ili plugin ukoliko koristite već njihovo okruženje (IntelliJ, PyCharm,WebStorm) Za potrebe našeg istraživanja mi ćemo preuzeti IDE, tako da ćemo u daljem tekstu nastaviti da opisujemo samo IDE okruženje. Aqua IDE okruženje podržava nekoliko programskih jezika (Java, Kotlin, Python, JavaScript, TypeScript) pruža podršku na sva tri nivoa testne piramide:

  • UI tests
  • API tests
  • Unit test

Ukoliko se odlučite da preuzmete plugin umesto Aqua IDE okruženja, imajte u vidu da plugin okruženje podržava samo UI tests level.

Dok budemo proveravali IDE okruženje, veći fokus će nam biti na UI testing nivou, ali ćemo takođe proći i API.

Cilj nam je da pokrijemo slučajeve kada se kreira novi projekat od nule, ali isto tako ćemo probati i na postojećem projektu gde su već definisani auto testovi.

UI tests

Kreiranje novog projekta

Napomena: mi koristimo aqua IDE okruženje u okviru lične jet brains licence za sva ide okruženja, tako da je moguće da će možda nešto razlikovati kod vašeg podešavanja.

Pri kreiranju novog projekta prvo što smo primetili jeste ovaj prozor:

Za novi projekat imate opciju da izaberete u kojem biste jeziku radili, pored navedenih jezika koja se nalaze u okvire Language opcije, ukoliko kliknete na dugme + , videćete još par jezika u opticaju kao sto su Go, PHP, Ruby i Scala.

Umesto novog projekta, mi smo izabrali da nam se iz generiše novi projekat koristeći određeni šablon. Izabrali smo Selenium koji se nalazi kao opcija, na levoj strani panela.

Trenutno nema u ponudi za Cypress, Pupetter ili Playwright

Prozor se malo razlikuje kada se izabere Selenium projekat, što možete da vidite na slici ispod:

Za Selenium projekat, možete videti da su sada ponuđeni samo jezici koji rade preko JVM (java virtual machine) od kojih su ponuđeni Java, Kotlin (Jezik koji je razvio sam JetBrains) i Groovy.

Ono što je interesantno da pored jezika i build sistema (Maven ili Gradle) možete takođe da izaberete unit testing framework (da li preferirate Junit ili TestNG)

Nakon što smo kliknuli na next dugme, sledeći prozor nas je jako prijatno iznenadio:

Ovaj prozor vam omogućava da izaberete koju verziju selenium-a želite, kao i koje dodatne biblioteke želite da dodate u svoj projekat.

U ponudi su poznate biblioteke koje se često koriste, kao što su: Serenity BDD, Selenide, Allure Framework, WebDriverManager.

Takođe u ponudi su i dodatne Assertion biblioteke, kao što su AssertJ, Hamcrest i Truth koji će vam omogućiti da pišete lepše i bogatije assert-e za validaciju testa. Ono što budete selektovali u ovom prozoru IDE će vam automatski iz generisati dependency za maven ili gradle.

Mi smo u ovom prozoru selektovali samo Selenium, AssertJ i Hamcrest.

Nakon klika na “Create” dugme projekat će se kreirati.

Projekat se kreirao koristeći osnovni page object pattern strukturu.

Tako da u okviru src -> test -> java, možete da vidite da su kreirana dva fajla:

  1. MainPage
  2. MainPageTest

Oba fajla su kreirana po standardu koji se prati kod pattern-a page object modela. Ovi izgeneresani fajlovi, služe kao šablon i početna osnova za nekog ko kreira selenium auto testove od nule, takođe može da bude za nekog ko tek ući auto testove kao početna osnova ili primer.

Da pogledamo šta fajlovi sadrže

MainPage

MainPage klasa je generisana tako da sadrži listu lokatora za web stranicu https://www.jetbrains.com/ u fajlu je kreiran klasičan object model gde je inicijalizovan PageFactory koji koristi lazy loading nad elementima. Web elementi su iz definisani koristeći css i xpath lokatore.

MainPageTest

MainPageTest klasa prikazuje primer nekoliko testova koji pozivaju web-elemente iz MainPage klase, a neki elementi su i sami naknadno kreirani. Pored primer testova, ova klasa ima i  izdefinisane hook-ove za before i after svakog testa.

Ovu klasu možete da rune-ujete i ispisani testovi će se izvršiti, preko chrome browser-a.

Pogledali smo pom.xml fajl kako bismo videli koje zavisnosti su dodate u ovom u fajlu i kao što smo pretpostavili, Aqua IDE je iz generisao zavisnosti koje smo čekirali pri kreiranju projekta, tako da možemo da vidimo da je dependency dodat za selenium,hamcrest,assertj,kao i junit u pom.xml fajlu.

pom.xml

Probali smo da kreiramo selenium projekat i sa drugim podešavanjima, uzeli smo za primer da kreiramo projekat koji će koristiti selenide testing framework. Slično kao i u prethodnom projektu, Aqua je korišćenjem zero-configuration project wizard-a, za nas kreirao projekat, dodao u pom.xml svu neophodnu zavisnost među bibliotekama, i kreirao osnovni page object pattern sa primerom korišćenja selenide testing framework-a.

Iz generisan testing primer sa korišćenjem selenide testing framework-om

Veoma smo se prijatno iznenadili kako lako može da se kreira testing projekat uz pomoć zero-configuration project wizard-a. Pored kreiranja Selenium native, Selenide, postoje opcije da se kreira projekat za Serenity kao i JDI light, ali za sada nema opciju kreiranje primera u tim framework-cima, kao što su uradili za selenide, s obzirom da je Aqua i dalje u razvoju nadamo se da će dodati u sledećim verzijama.
Pogotovo za serenity projekat koji sve više postaje standard za razvoj auto testova koji su usklađeni sa BDD procesom, i koji mi svakodnevno koristimo. Voleli bi da vidimo za ovaj projekat mogućnost da se iz generišu serenity konfiguracije, dodavanje logger-a. Takođe bismo voleli da vidimo podršku samog BDD-a sloja, da postoji pri kreiranju projekta mogućnost da se izabere dodavanje na primer cucumber-a i da se iz generiše runner za izvršavanje BDD testova.

Pored same Selenium podrške što Aqua okruženje pruža pri kreiranju novog projekta, voleli bismo da vidimo podršku i za druge UI testing framework-e (Cypress, Puppeteer, Playwright ) što iskreno i verujemo da će vremenom dodavati, svakako Selenium zaslužuje da bude prvi podržan, s obzirom da je pionir u ovom domenu.

Web inspector

Pored zero-configuration project wizard-a, Aqua takođe nudi web inspector alat za lociranje web elementa na UI stranici.

Sam alat je integrisan u okviru IDE okruženja, i nalazi se u menu-iju sa desne strane.

Kada kliknete na tu opciju otvoriće vam se Web inspector prozor, sam Web inspector je poput browser-a. Imate polje za adrese web stranice. Postoje opcije kao što su brisanje kolačića, enable-ovanje popup prozora, prikaz mobilne verzije, kao opcija pristupa developer tools konzoli. Ono što je nama najinteresantnije, jeste Locators Evaluator, koji se nalazi u podnožju prozora.

Web Inspector alat

Web Inspector alat funkcioniše po sistemu selekcije web elemenata, slično kao kroz chrome developer tool. Kada selektujete određeni web element, Web inspector alat će vam ponuditi locator (po css-u ili xpath-u), ali ono što je nama bilo interesantno, jeste što takođe ponudi i alternativne locator-e, odnosno listu varijanti locator-a. U našem primeru, mi smo selektovali banner sa našeg bloga, ponudio nam je css locator, ali isto tako nam je pronašao 21 varijantu za css locator, što možete videti u slici ispod.

Ukoliko vodite računa o lokatorima, ovo će vam omogućiti da izaberete locator koji najviše vama odgovara i vašoj strategiji. Postoji još jedna interesantna opcija, a to je da Web inspector pruža mogućnost da direktno dodate element u svoj kod. Takođe možete da izvršite proveru svog elementa iz koda, tako sto držite CTRL i kliknete na locator, IDE će vam vrednost automatski prebaciti u web inspector, i možete videti koliko je elemenata locirao i gde je locirao element. Takođe dok vam je otvoren web inspector, nudi vam i auto complete opciju, To jes kada unosite neku vrednost za xpath ill css, dobićete ponuđene predloge, i u web inspector-u možete da vidite koji je to element.

Generalno prijatno smo iznenađeni sa web inspector alatom, nudi nekoliko prijatnih opcija koje mogu da olakšaju pri definisanju web-elementa.

Međutim primetili smo i negativnu stranu istog alata, i nadamo se da će poboljšati, ili ispraviti u finalnoj verziji. Prvu stvar koju bismo istakli, je da u toku rada na pravim projektima, na kompleksnijim web stranicama web inspector alat nam je sporo radio, sporo je učitavao page source i bilo je malo teže raditi sa alatom pogotovo ako sami unosite vrednost za web element. Drugi koji je nama bio kritičniji problem, jeste da ne prepoznaje elemente unutar IFrame-a samo selektuje ceo IFrame, bez mogućnosti da dodatno vi sami selektujete neki element u samom IFrame-u. Zbog navedenog problema, bili smo primorani da koristimo third part alate kao što su: ChroPath ili Pom builder.

Pored web-inspector alata, postoji mogućnost da dodate selenium page object klase u svoj projekat. Kada selektujete package gde želite da dodate klasu, klikom na desno dugme miša, pomerite kursor miša na new opciju (skraćenica: shift + insert), zatim izaberite selenium page object klasu.

Klasa će vam se iz generisati za potrebe korišćenja page object modela, nakon toga lako možete da ubacujete elemente u klasu, uz pomoć korišćenjem integrisanog web inspector alata (detaljnije o web inspector alatu smo opisali u tekstu iznad).

API

API Klijent

Poslednje što smo pogledali, jeste deo za API proveru, za sada smo primetili da nema mogućnost da se kreira projekat korišćenjem nekog API testing framework-a, na primer za rest assured, iskreno nadamo se da će u jednom trenutku ubaciti kao što imaju za selenium. Za sada postoji kao opcija, da kreirate http request, kao neku vrstu API klijenta. Kako biste dodali request u svom projektu, izaberite add -> new -> HTTP Request (ALT + INSERT, selektovati HTTP Request)

Header request-a prikazuje, različite opcije koje možete da koristite u svom request-u. Pored opcije da kreirate novi request, imate mogućnost da vam prikaže istoriju izvršavanja, da konvertujete u CURL, da importujete pozive, kao i da izvršite sve pozive u fajlu, slično kao u postman-u možete da izaberete environment ukoliko ste is konfigurisali (slično kao u postman-u), takođe imate opciju da vidite primere, na primer kako kreirati authorization request ili pozive sa testovima.

Probali smo da importujemo request preko cURL komande

Sto je veoma brzo odradio, kada smo izvršili poziv, u konzoli za servise smo videli response, takođe za svako izvršenje response će vam biti sačuvan u .idea/httpRequests, tako da možete uvek da se vratite i pogledate response, ne znamo da li trenutno postoji ali voleli bismo da ima mogućnost konfigurisanja, koliko dugo da se čuvaju response-i, to jes da može da se podesi da se automatski brišu response-i, koji su stariji npr. od 24 sata.

Pogledali smo opciju examples, ova opcija nudi da se upoznate sa korišćenjem API client-a, u ponudi imate primere za GET, POST, Authorizations pozive, kao i primere sa testovima. Pri odabiru, dobićete set različitih primera, na primer ako ste odabrali POST pozive, dobićete primere kako da kreirate POST poziv sa JSON body-em, body-em kao parametrom, sa dinamičnim promenljivama, i još drugih sličnih primera.

Pored ponuđenih primera postoji i opcija da otvorite HTTP Client help, za sada kada se klikne na help, otvara se stranica za AQUA Ide, ne otvara se direktno help za HTTP Client, mada na toj stranici imate link za HTTP client, tako da uz par klika možete da dođete do help-a, mada mislimo da bi trebalo kada kliknete na help opciju za HTTP client da bi trebalo i da vas direktno vodi ka help-u, bez dodatne vase interakcije, možda će se vremenom ažurirati link.

HTTP Client veoma fino funkcioniše, kao postman light verzija koji je integrisana u IDE okruženje, možete imati u svom testing suite, API pozive, ono sto samo do sada nismo primetili, a to je kako funkcioniše runner za HTTP request-e, da li mogu da se izvrše preko Maven-a, i da li bi mogao da bude deo CI/CD pipeline integracije.

Zaključak

Danas auto testovi igraju veoma ključnu ulogu u agilnom razvojnom okruženju, kako bi se uspešno pratio tempo razvoja bez bojazni da utiče na pad kvaliteta neophodno je imati automatizovane testove na različitom nivou kao i na samom testing tipu (end2end, API, Unit, performances, security …) Zbog toga nije ni čudo da je JetBrains posvetio pažnju ovom domenu i razvio IDE okruženje koje je specijalizovano, bas za gore iznad spomenute namene. Iako je ovo IDE okruženje u preview fazi, svakako možemo videti benefit u svakodnevnom korišćenju pri automatizaciji auto-testova. Alat može da pomogne nekome ko se tek upoznaje u automatizaciji testova, tako sto će mu prikazati kroz template i primere dobru praksu pri razvoju automation testing projekta. Takođe i nekome ko se već dugo bavi ovim poslom može biti od pomoći, i da neke stvari brže odradi uz pomoć ovog IDE okruženja, integracija koja pruža za definisanje lokatora svakako je od pomoći. Iako smo videli dosta interesantnih pomagala za razvoj auto testova, takođe smo primetili da negde može da se urade i neka poboljšanja. Takođe podrška za neke trenutno aktuelne tehnologije je slaba, ili je uopšte nema. Iako je integracija HTTP klijenta sa mogućnošću pisanja jednostavnijih testova dobra stvar, mislimo da nije dovoljno ako će se samo izvršavati lokalno bez podrške integracije sa CI/CD pipeline-om. Međutim Aqua ide je i dalje u preview-u, tako da verujemo da će se neke stvari ispraviti kada bude izašao kao finalni proizvod, mada i sada trenutno može da bude od pomoći. Ljudi koji su već koristili JetBrains IDE okruženja (intelliJ,PyCharm,Webstorm…), neće imati nikakvih problema u korišćenju ovog okruženja, pošto prati određene standarde koja sva njihova IDE okruženja prate. Smatramo svakako da je ovo dobar korak, da postoji profesionalno IDE okruženje sa fokusom na automatizaciji auto testova, i jedva čekamo da vidimo koje će vremenom novine dodavati.


Leave a Reply

.

Up ↑

error: Content is protected !!

Discover more from Automation corner

Subscribe now to keep reading and get access to the full archive.

Continue reading