Aqua – un IDE dedicat testarii automate
In IT, fie ca suntem programatori, testeri sau orice altceva, avem nevoie ca in oricare alta meserie care se respecta de anumite instrumente dedicate de lucru, care sa ne ajute sa ne indeplinim cu succes sarcinile profesionale si sa putem performa in modul cel mai potrivit cu putinta.
In testarea automata, pentru a putea dezvolta sau corecta teste automate, inginerii QA folosesc adesea editoare de cod sau IDE-uri (abreviere de la integrated development environment) in care interactioneaza direct cu codul din proiectul de automation. Unul dintre instrumentele interesante care a aparut pe piata din categoria IDE-urilor despre care vom discuta in continuare este Aqua.
Ce este Aqua by JetBrains?
Aqua este un IDE dezvoltat de catre cunoscuta companie JetBrains, care are in portofoliul sau foarte multe astfel de tool-uri dedicate manipularii si interactiunii cu codul proiectelor de IT. Extrem de cunoscute sunt editoarele Intellij IDEA (pentru cei care folosesc preponderent limbajele Java si Kotlin) sau PyCharm (pentru Python).
Spre deosebire de IDE-urile acestea dedicate pentru programatori si development, Aqua a fost creat cu scopul de a fi un IDE dedicat intru-totul testarii automate, si sa ii serveasca deci cu predilectie pe Automation QEs.
Chiar intr-un articol de pe blogul lor, cei de la JetBrains explicau ca au analizat mai multe variante de nume pentru acest nou IDE, si cea aleasa in final a fost “Aqua”, provenind de la “automation quality assurance”, dar avand si un sens indirect de fluiditate (precuma apa), marcand usurinta cu care poate fi utilizat in practica, termenul fiind usor de asimilat si folosit.
Aqua a fost prima data lansat in noiembrie 2022, fiind ulterior imbunatatit constant si oferindu-i-se acces general pe baza de licenta de utilizare gratuita pentru scopuri personale (free licence for non-commercial use). Ca urmare a faptului ca are putin peste 2 ani de cand este lansat, inca poate fi considerat o noutate pe piata IDE-urilor, fiind primul editor de cod creat special pentru testare automata conform lui JetBrains.
Cu ce se deosebeste Aqua de un editor de cod obisnuit?
Prima intrebare care se pune in mod natural este cu ce se deosebeste Aqua de un IDE deja existent, fata de Intellij IDEA sau PyCharm, si de ce ar fi fost nevoie de inca unul in aceasta lista. Conforma prezentarii de pe pagina web proprie acestui produs, compania lasa de inteles ca Aqua are incorporate mai multe feature-uri dedicate testarii automate, care nu existau in celelalte editoare.
Din cate aflam la o prima lectura a motivelor de pe site si din documentatia oficiala a lui Aqua, acesta a aparut cu scopul de a integra la un nivel superior calitativ acele tool-uri si framework-uri specifice muncii de automatizare.
Vorbim aici de framework-uri precum Selenium, Cypress sau Playwright, care pot fi toate 3 suportate, alaturi de o gama foarte variata a limbajelor de programare cu care acestea sunt folosite: Java, Python, JavaScript (plus supersetul acestuia TypeScript) sau Kotlin pentru testare mobile.
Astfel, Aqua se prezinta ca fiind acel IDE de automation robust, multifunctional, gata sa suporte mai multe tehnologii dintre cele mai populare si uzitate astazi in productie, cu mai multe functionalitati ce ii ajuta in mod direct pe inginerii QA, dar asupra carora vom reveni putin mai incolo, cand vom vedea si daca merita acest IDE.
Instalare si setup
Primul pas firesc pentru a putea incepe sa folosim Aqua si sa interactionam cu proiectele noastre de automation este sa il instalam si sa il configuram cu un cont de JetBrains. Aceasta este prima particularitate ce iese in evidenta a lui Aqua: pentru a fi folosit chiar si “la liber”, trebuie sa ai un cont de JetBrains, comparativ cu Intellij pentru Java care odata instalat, poate fi deja folosit.
Prima data trebuie sa mergem pe site-ul Aqua si sa dam click pe butonul de “Download”. Imediat va incepe descarcarea installer-ului, procesul dureaza cateva secunde. Apoi, mergem la acesta si dam dublu-click pe el.
O sa ne apara fereastra de instalare din poza de mai sus, si de aici nu trebuie decat sa ii dam mai departe cu Next -> Next -> Finish. La un moment dat vom fi intrebati ce optiuni de instalare preferam, iar recomandarea mea este sa le bifam pe toate (sau daca lucram doar cu fisiere Java atunci la limbaje putem alege doar .java).
Dupa ce am bifat aici ceea ce ne interesa, nu mai ramane decat sa ii acceptam termenii si conditiile, si sa dam Finish, apoi un restart la PC / laptop pentru a finaliza cu succes instalarea si updatarea variabile PATH cu folderul “bin” al lui Aqua.
Dupa restart, putem deschide proaspat instalata aplicatia Aqua si vom fi intampinati de urmatoarea fereastra de unde trebuie sa alegem ce tip de licenta vrem sa folosim. Desigur, pentru scop personal, exersat si explorat recomand prima optiune, cea cu licenta gratuita.
Dupa ce selectam Free Non-Commerical Use, vom fi redirectionati catre pagina web unde trebuie sa ne logam. Aici intervine contul de JetBrains pe care daca nu il avem trebuie sa il cream. Acesta poate fi rezolvat fie prin logare cu contul de Google, Apple sau GitHub, sau putem sa ne cream de la 0 un cont nou, cu o adresa de email si o parola.
Pentru a continua procesul, eu mi-am creat un cont separat cu o adresa de email temporara, si am mers mai departe. Dupa ce am creat contul si i-am dat login in Aqua, mai ramane si aici sa alegem ca suntem de acord cu anumiti termeni si conditii (ca sa aiba acces la anumite date), dupa care putem incepe in a-l folosi.
Functionalitati specifice ale lui Aqua
Inca de cand dam click pe start, Aqua ne afiseaza deja o prima optiune destul de utila in anumite contexte, si anume daca vrem sa importam setarile deja existente direct din editorul Intellij IDEA.
Pe acesta eu il aveam deja instalat, lucru necesar ca o preconditie a acestui proces, iar Aqua l-a detectat pe laptop-ul meu, motiv pentru care mi-a afisat aceasta optiune. Daca ai un setup mai complex deja facut si pregatit pe Intellij sau pe oricare alt IDE de la JetBrains si nu vrei sa pierzi timpul cu refacerea acestuia de la 0 pe Aqua, optiunea este mai mult decat binevenita. In cazul meu, i-am dat Skip.
Ulterior, ni se afiseaza pagina de pornire generala care e aceeasi ca structura si optiuni din Intellij sau PyCharm, de unde putem alege sa cream nou un proiect de automation de la 0 sau sa deschidem unul deja existent in Aqua.
Eu aveam deja creat un proiect de test, astfel incat am optat pentru a doua optiune. Interfata lui Aqua si aici este una extrem de familiara daca ai mai interactionat cu IDE-urile celor de la JetBrains. Optiunile principale sunt toate in acelasi loc: Setari, Maven, Build, Terminal etc.
Un prim feature cu care compania dezvoltatoare se lauda ca l-a implementat cu dedicatie in Aqua este asa-numitul Web Inspector. Acesta propriu-zis este un instrument care analizeaza DOM-ul unui website direct in editor, fara a mai fi nevoie sa il ai tu deschis intr-o fereastra de browser separata.
Cu ajutorul lui Web Inspector putem sa alegem noi ce website sa deschida si sa ii analizam locatorii pentru a-i putea ulterior integra in proiect, sau a-i corecta pe cei deja existenti care nu au fost updatati in ultimul timp. De aici putem alege sub ce forma vrem sa integram locatorii, ca Xpath sau CSS selector, sa ii copiem rapid si chiar sa ni-i adauge in proiect ca WebElements cu @FindBy (cazul Selenium cel putin).
Extrem de util este ca daca vrem totusi ceva mai mult legat de analiza unui DOM al unei pagini web, Aqua are si optiunea integrata sa deschida un DevTools direct din IDE. Optiunea se afla in pagina de Web Inspector in dreapta sus, si ne deschide un DevTools destul de veridic si util intr-o fereastra noua. Aici putem analiza mai in detaliu ce ne intereseaza, fara a mai avea noi deschis un browser separat.
Functia de Web Inspector mi s-a parut una dintre cele mai relevante pentru un QA daca chiar vrea sa foloseasca Aqua ca IDE. Pe langa aceasta, nu se putea sa lipseasca si trendul ultimilor 2 ani, si anume AI-ul. Aqua are incorporat un asa-zis AI Assistant.
Acesta insa in formula sa care cuprinde toate optiunile de lucru este disponibil numai daca achizitionam o licenta separata, pe langa cea platita (sau gratuita) pentru Aqua. Exista un free trial de 7 zile, insa problema e ca in aceasta formula nu sunt disponibile toate feature-urile sale, fiind mai mult de forma.
In teorie, acest AI vine ca un sprijin pentru QA ca sa il ajute sa scrie cod mai rapid si mai calitativ, sa ii ofere sugestii acolo unde e cazul (dar si unde nu e neaparata nevoie), sa creeze documentatie pentru un cod gata scris, sa genereze teste automate sau sa creeze arhitectura de foldere pentru un proiect de automation, si nu in ultimul rand sa fie un prompt-assistant unde omul sa il intrebe in scris ceva iar el sa ofere o solutie.
Utilitatea acestuia e destul de chestionabila, mai ales in contextul in care costa destul de mult, iar anumite optiuni pot fi suplinite usor de alte aplicatii AI gratuite, precum GitHub Copilot.
Pe langa cele deja discutate, Aqua mai dispune de o functie care ii permite sa scrie requesturi pentru un HTTP client, lucru extrem de util pentru cei care scriu teste automate pentru testarea de API-uri.
Exista incorporat si ceea ce se cheama Test Management System, un feature care permite interactiunea mai fluida cu artefactele proiectului de testare, pe de-o parte, dar si cu alte proiecte externe dar care au legatura cu testarea pe de alta parte, astfel incat sa fie facilitata interactiunea in cadrul echipelor. Acest feature poate fi util mai ales la proiectele mari, care se intind pe multi ani ca dezvoltare si testare.
Generarea datelor de test pentru anumite teste automate este iarasi o chestie interesanta prezenta in Aqua. Cu ajutorul acesteia poti genera date de test random, dar care sa fie relevante pentru continutul anumitor scenarii, de exemplu daca trebuie trimis un mesaj de test sau un email, acesta nu mai trebuie compus si schimbat mereu, ci creat aleator cu acest generator de date.
Mai merita mentionat faptul ca Aqua prezinta integrari si cu alte aplicatii care pot ajuta munca unui QA, desi pot fi in acelasi timp si destul de specifice. Vorbim in aceste cazuri de faptul ca din Aqua te poti conecta direct la Docker de unde poti interactiona direct cu containerele respective, sa le formatezi si sa construiesti noi imagini, si ca in acest IDE poti sa interactionezi direct cu bazele de date scrise in SQL, si sa scrii query-uri pentru acestea pentru a le interoga.
Merita sau nu Aqua IDE sa fie folosit pentru testare automata?
Cu siguranta, faptul daca merita sau nu folosirea lui Aqua este o intrebare centrala si destul de importanta. Raspunsul este ca depinde de la caz la caz, ca in multe alte situatii din IT. Cu siguranta Aqua prezinta atat avantaje, cat si dezavantaje.
Faptul ca exista un IDE aparent dedicat testarii automate este cu siguranta un mare avantaj la nivel de oferta a IDE-urilor, deoarece pune mai bine in evidenta nisa testarii automate la nivel de coding. Dupa cum am mai vazut, un alt mare avantaj oferit de Aqua este ca are inserate destul de multe feature-uri interesante si care in anumite contexte precise se pot dovedi super utile pentru un Automation QA, de la acel Web Inspector pana la sistemul de management al testelor.
De asemenea, faptul ca poti folosi o gama larga de limbaje de programare sau framework-uri cu Aqua este iarasi un avantaj semnificativ, mai ales daca esti in situatia ca lucrezi pe 2 proiecte care sunt construite cu un stack tehnic diferit (Selenium cu Java vs. Playwright cu JavaScript, de exemplu).
Trecand in zona dezavantajelor, cel mai important care iese cel mai clar in evidenta este faptul ca Aqua are niste preturi destul de mari pentru subscriptiile sale anuale care ofera acces la varianta completa pentru scopuri comerciale, cu toate functionalitatile aferente. Pretul porneste de la aproape 300 euro/an (cu TVA inclus), iar versiunea All Products Pack este de la putin peste 920 euro pe an (cu TVA inclus).
Chiar si pentru o companie de IT, aceste preturi sunt semnificative si ar cantari foarte bine inainte sa achizitioneze respectivele licente, iar pentru un simplu pasionat sau QA individual nu ar merita din simplul motiv ca e prea scump.
Aqua este o aplicatie robusta, cu multe feature-uri, dar care si consuma destul de multe date, in termeni de memorie stocata si memorie RAM utilizata atunci cand acesta este folosit intens, plus capacitatile folosite de catre procesor. Faptul ca iti trebuie neaparat un cont JetBrains este un alt dezavantaj mare, care ingreuneaza folosirea ei.
Implementarea AI-ului pare utila in aparenta, insa dat find faptul ca trebuie achizitionata o licenta separata si beneficiile acestuia sunt partial discutabile raportat la pret nu face decat sa scoata in evidenta ca este strategie de marketing adaptata noului val Tech din ultimii ani, si mai putin ceva axat pe utilitate si pragmatism. Acelasi lucru poate fi evidentiat si pentru produsul Aqua in sine.
Personal, consider ca nu stiu cata nevoie era de un IDE dedicat special testarii automate. Faptul ca compania dezvoltatoare are o gama larga de IDE-uri adaptate deja pentru majoritatea limbajelor de programare ma face sa inclin spre ideea ca Aqua a fost mai mult o strategie de marketing care sa intareasca pozitia lor ca imagine in aceasta piata de produse, si mai putin sa ofere ceva cu adevarat distinct.
Majoritatea feature-urilor prezentate in Aqua putea fi deja implementate in celelalte editoare prin cateva mici update-uri si folosite sub forma de plugin-uri sau addon-uri, fara sa trebuiasca o noua aplicatie care in proportie de 70-80% arata si se comporta cam la fel cu cele standard. O buna parte dintre inginerii QA care dezvolta teste automate nu stiu daca vor trece neaparat pe Aqua, mai ales in lipsa unei licente platite de catre compania lor care sa ofere acces la folosirea comerciala si la toate facilitatile.
Desigur, nu e nici o decizie rea ca se dezvolta unelte fiabile, dedicate testarii automate si ca exista interes in aceasta sfera; asta contureaza si mai bine munca de testare, complementara celei de development. Insa acestea ar trebuie sa fie cu adevarat lucruri utile, accesibile si dedicate acestui domeniu, nu luat core-ul unei aplicatii si presarat cu 3-4 lucruri care sa ne faca sa credem ca e ceva super nou si nemaivazut.
Poate cu timpul cei de la JetBrains vor particulariza si mai mult Aqua si acesta va deveni un tool cu adevarat util, cu un statut de sine statator, si care sa fie accesibil din perspectiva pretului. Deocamdata ramane o aplicatie ce starneste interesul, te face destul de curios sa o incerci, anumite functii sunt faine de incercat, dar cel putin pe mine personal nu ma convinge sa o folosesc in locul editorului standard Intellij IDEA in munca de testare automata.
Sigur, pot fi contrazis oricand si astept cu mare drag acest lucru in comentarii. Poate cu timpul, imi voi schimba si eu opinia, pe masura ce produsul evolueaza spre ceva si mai atragator ca utilitati.
Concluzii
In incheiere, editorul de cod Aqua este o aplicatie ce atrage cu siguranta atentia asupra sa, ca urmare a faptului ca se prezinta drept un IDE creat special pentru munca de testare automata a inginerilor QA. Avand atat avantaje cat si dezavantaje, acesta este o incercare interesanta a celor de la JetBrains de a oferi un instrument de lucru dedicat testarii automate, imbracat intr-o strategie de marketing bine croita.
Referinte
Multumesc in mod deosebit colegei mele Madalina Popovici de la care am aflat prima data de acest subiect si mi-a oferit primele indicatii si surse pentru a explora subiectul.
Resurse utile
Site-ul oficial al lui Aqua, dezvoltata de JetBrains
Aparitia si evolutia editorului Aqua
Documentatia oficiala pentru JetBrains Aqua
O lista a principalelor componente specifice (features) ale lui Aqua
Despre suportul dedicat pe care il ofera Aqua pentru Selenium, Cypress si Playwright