Gatling – un instrument modern pentru testarea de performanta
Aplicatiile software, pentru a ajunge la un nivel de calitate cat mai inalt si a satisface nevoile utilizatorilor, trebuie testate din cat mai multe perspective: functional / non-functional, securitatea lor, partea de interfata grafica (UI), accesibilitatea, sau performanta acelor produse.
Despre testarea de performanta am vorbit mai demult la modul general aici pe blog, si am vazut ca ea presupune testarea limitelor acelor aplicatii, la ce intensitatea de utilizare pot ele rezista. Este important sa folosim instrumentele potrivite pentru orice tip de testare, de aceea in continuare vom discuta din nou despre topicul testarii de performanta prin faptul ca vom explora un tool dedicat pentru realizarea acesteia, si anume Gatling.
Ce este Gatling?
Preluand numele mitralierei omonime inventata in a doua jumatate a sec. al XIX-lea, aplicatia Gatling este un instrument de testare pentru partea de performanta a produselor software, folosit in special la sub-tipul de Load testing. Foarte pe scurt, prin Load testing se verifica cum se comporta aplicatia in cauza cu un numar prestabilit, asteptat de useri care o vor accesa simultan.
Instrumentul Gatling a fost lansat in ianuarie 2012, fiind un proiect open-source, iar in 2015 creatorul acestuia, Stéphane Landelle, a infiintat si compania care are drept scop managementul si dezvoltarea acestui tool de testare. De atunci si pana astazi, Gatling s-a dezvoltat extrem de mult, fiind un tool de performance testing utilizat pe scara larga.
Gatling a fost construit cu ajutorul limbajului de programare Scala, un limbaj ceva mai putin cunoscut comparativ cu cele ”clasice” (Java, Python, JavaScript etc.), dar acest lucru nu a impiedicat deloc dezvoltarea acestuia. Desigur, daca totusi cunosti Scala, atunci exista sansa sa intelegi putin mai bine si Gatling-ul.
Acest tool a aparut din nevoia de a oferi o alternativa mai noua si mai adaptata la instrumentele consacrate deja de Performance testing precum JMeter, care desi open-source, interfata lor nu mai era suficient de adaptata. Astfel, Gatling a incercat sa se erijeze intr-un tool modern de Load testing, adaptat zilelor noastre.
Astazi, conform site-ului propriu, Gatling este folosit de peste 200.000 de companii si are in jur de 20 milioane de descarcari. Printre cele mai importante companii care il folosesc se numara Adobe, Playtika, Aircall, Criteo sau Skello.
La ce poate fi folosit Gatling?
Dupa cum incepusem sa amintesc in paragrafele anterioare, Gatling este un tool construit cu dedicatie pentru sfera testarii de performanta. Aceasta, dupa cum aminteam si in articolul dedicat ei, la nivel general are rolul de a verifica modul in care se comporta aplicatia in situatia accesarii de catre un anumit flux de utilizatori, pentru a vedea cum performeaza ea intr-un astfel de context cat mai realist.
Principala forma a acestui tip de testare la care exceleaza Gatling este Load testing-ul, unde aplicatia este verificata cu un flux numeric asteptat de utilizatori, in limitele normale, fara a depasi cu mult aceasta bariera. Scopul acestei sub-categorii este de a testa principalul context de utilizare al unei aplicatii, fara a exagera in plus sau in minus, ca sa vedem daca acest prim test este trecut, conform asteptarilor si cerintelor de business.
Tot la capitolul intrebuintare, Gatling poate fi folosit pentru integrarile sale extrem de variate, interesante si utile cu alte instrumente de lucru din IT, care sa permita dezvoltarea complexitatii testelor efectuate.
Gatling poate fi integrat cu instrumente legate de Continuous Integration / Continuous Delivery (CI / CD) precum extrem de cunoscutele Jenkins, GitHub Actions sau GitLab. Aceste integrari permit executia constanta a testelor de performanta dezvoltate cu Gatling, astfel incat eventualele probleme sa fie descoperite cat mai din timp si sa ajute partea de development.
De asemenea, Gatling mai poate fi integrat cu tool-uri precum Gradle sau Maven pentru o gestiune mai usoara a versiunilor testate, sau cu Slack ori Microsoft Teams pentru partea de notificari si comunicare. Tot la acest capitol, Gatling poate fi inglobat cu instrumente de monitorizare si grafice precum Grafana, sau softuri de protocol support precum Cassandra, JDBC sau Kafka.
Se poate deci observa ca Gatling este un tool versatil, ce poate fi folosit la partea de Load testing, dar integrat intr-un circuit complex de testare care sa fie sustinut si de alte instrumente aditionale de CI/CD, monitoring ori protocol.
Setup si utilizare
Folosirea instrumentului Gatling poate fi destul de complexa deoarece presupune foarte multe functionalitati, si poate fi adaptat unor scenarii de testare extrem de diferite din punct de vedere al complexitatii lor. Deoarece foarte multe feature-uri sunt oferite doar in versiunile platite, ne vom rezuma doar la o foarte scurta introducere despre utilizarea lui Gatling.
Primul pas este sa instalam fisierele necesare. Pentru acest lucru, trebuie sa navigam pe site-ul de documentatie al lui Gatling, sa accesam sectiunea Installation and deployment, si de acolo sa descarcam arhiva .zip. Odata descarcata, continutul trebuie dezarhivat, ideal intr-un folder dedicat pentru acest tool, pe partitia C (eventual nu in Program files) sau pe alta.
Folderul dezarhivat va avea o structura standard cu mai multe fisiere: bin (unde se afla scriptul de rulare al lui Gatling accesat cu un terminal), conf, lib, user-files, results. Ca sa putem avea un setup complet de folosire al lui Gatling, trebuie sa avem instalat pe computerul nostru si limbajul Java (unul din pachetele JDK). Gatling e compatibil cu Java de la iteratia numarul 11 in sus.
De mentionat este ca acesta e modul in care Gatling poate fi instalat si folosit ca un pachet de sine statator, cu editarea dintr-un Text Editor ulterior. Exista si modalitatea de a folosi un build tool precum Maven, Gradle sau sbt, ori folosirea dintr-un IDE precum IntelliJ.
Ca sa incepem sa editam niste teste cu Gatling, ne putem ghida dupa documentatia oficiala incepand cu sectiunea de Simulations, de unde ne sunt prezentate detaliile importante despre importurile necesare ce trebuie facute in prealabil, configurarea protocoalelor folosite (HTTP, HTTPS etc.) si functiile specifice de executie.
Un model generic, destul de simplu de astfel de test scris cu ajutorul tool-ului Gatling este cel de mai jos, preluat de pe pagina Software Testing Help care ofera un tutorial complex de utilizare al lui Gatling in calitate de script, folosind si Gatling hosted application ca tool aditional.
Avantaje si dezavantaje ale lui Gatling
Asa cum amintesc de fiecare data, orice instrument sau aplicatie soft are avantajele sale specifice, dar si dezavantaje, iar Gatling nu face exceptie de la aceasta regula. Un prim avantaj al acestuia este faptul ca e un tool modern, relativ ”nou” (fiind lansat in 2012), avand o varsta perfecta a maturitatii sale de dezvoltare, comparativ cu alte tool-uri de performance testing. Interfata sai optiunile sale tehnice sunt un avantaj esential care il face sa fie ales de multe echipe de testare, conferindu-i o popularitate tot mai mare.
Un al doilea avantaj major este fiabilitatea sa si faptul ca poate fi integrat cu o diversitate extrem de mare de alte tool-uri folosite in industria IT in diferite sfere: Jenkins, GitHub Actions, GitLab pentru partea de CI / CD, Gradle si Maven pentru managementul versiunilor, Microsoft Teams sau Slack pentru notificari, Grafana pentru monitorizarea datelor, Kafka sau Cassandra pentru partea de protocol support. Aceasta versatilitate impresionanta a integrarilor este un atu esential pentru Gatling deoarece il pozitioneaza ca un tool ce poate fi folosit la partea de Load testing in multe contexte.
De asemenea, documentatia acestuia care este bine elaborata, blogul cu informatii la zi despre Gatling, forumul de discutii pentru pasionati si cei care il folosesc efectiv, precum si pagina de cursuri dedicate pentru invatarea lui sunt alte avantaje demne de luat in seama, si care au condus la popularizarea acestui tool de testare.
Desigur, exista insa si dezavantaje pentru Gatling. De exemplu, Gatling exceleaza la partea de Load testing, insa nu si la celelalte sub-tipuri ale testarii de performanta precum Endurance testing, Soak testing sau Volume testing, pentru acestea existand alte alternative mai dedicate acestui scop.
Mai mult, principalele feature-uri ale lui Gatling sunt oferite in versiunile sale Enterprise, pentru clientii de business, astfel incat un simplu pasionat nu se poate juca prea mult cu acest tool intr-un mod gratuit. Preturile sunt si ele pe masura, pornind de la 89 euro pe luna pentru 2 utilizatori care il pot folosi 60 minute, crescand apoi la varianta de 356 euro pentru echipe si varianta Enterprise, unde preturile sunt bineinteles negociate de la caz la caz.
Si partea de invatare a lui Gatling care presupune Scala se poate dovedi destul de anevoioasa. Resursele limitate, faptul ca nu e un limbaj foarte cunoscut, precum si managementul dependintelor speciale de Scala pot alcatui un alt dezavantaj pentru instrumentul de performance Gatling.
Concluzii
In incheiere, Gatling reprezinta un tool modern folosit cu precadere in testarea de performanta, pe partea de Load testing preponderent. Este un instrument cu foarte multe puncte tari, prin faptul ca este adaptat zilelor noastre si confera extrem de multe integrari cu alte tool-uri folosite in industria IT.
Chiar daca poate nu este inca cel mai folosit instrument din aceasta sfera, este totusi bine sa il cunoastem deoarece poate fi o optiune extrem de buna pentru echipele care testeaza (si) aspectele legate de performanta produselor software.
Resurse despre tool-ul Gatling
Site-ul oficial al companiei Gatling
Documentatia oficiala oferita de Gatling, pagina lor de cursuri dedicate, forumul de discutii pe diverse topice si blogul lor cu informatii la zi despre tool
Detalii despre integrarile pe care le ofera Gatling cu alte instrumente
Avantaje si dezavantaje ale lui Gatling
Articol despre testarea de performanta (la nivel general)
Un tutorial complex de folosire a lui Gatling oferit de Software Testing Help