Ce este cloud testing?
Executia procesului de testare se bazeaza in practica pe extrem de multe tipuri de testare, lucru ce a devenit din ce in ce mai evident in ultimii ani prin dezvoltarea diferitelor nise prin care un produs software poate fi verificat si validat.
Toate tipurile, modalitatile si criteriile de testare sunt atat de diverse, de la white box si black box testing, pana la verificarea anumitor aspecte mai particulare precum performanta unui sistem, accesibilitatea sau securitatea sa.
Unul dintre tipurile de testare ceva mai rare, despre care poate nu se vorbeste atat de mult si care este mai inedita din punct de vedere al naturii sale este testarea in cloud, sau mai pe scurt cloud testing.
Ce reprezinta cloud testing?
Termenul de cloud testing desemneaza acea forma de verificare si validare a unui produs software (website, aplicatie de desktop, de mobile, API etc.) cu ajutorul unui mediu virtual de cloud, diferit de un mediu uzual fizic, folosind niste servicii dedicate de cloud computing cu ajutorul carora putem interactiona cu produsul respectiv.
Practic, ca sa intelegem cu ce vine diferit cloud testing-ul, putem lua urmatorul exemplu. Sa zicem ca trebuie sa testam o aplicatie de mobile pentru Android a unui magazin online. Daca in mod normal, clasic, am fi descarcat si instalat acea aplicatie pe un telefon fizic cu sistem de operare Android si am fi inceput sa o testam acolo (sa dam click-uri, sa executam flow-uri in mod manual, sa rulam teste automate cu Appium si altele), in cloud lucrurile se schimba.

Astfel, nu mai avem un telefon fizic pe care instalam aplicatia, ci un mediu generat virtual cu un serviciu de cloud in care se genereaza un sistem care sa imite acel telefon cu Android, si in care ne putem deploya aplicatia pe care urmeaza sa o testam, totul devenind mai abstract ca utilizare (neavand telefonul fizic), si putand executa testarea mai rapid.
Testarea in cloud se ocupa atat de verificarea aspectelor functionale, cat si a celor non-functionale a aplicatiilor in cauza, oferind un acces liber simultan mai multor membri ai echipei care vor sa acceseze aplicatia in acel mediu, fara sa mai existe limitarile device-urilor fizice.
La ce este folosita testarea in cloud?
Cloud testing-ul este folosita in multe moduri si din mai multe motive. Scopul sau principal este acela de a verifica modul in care se comporta o aplicatie cand este deployata si instalata intr-un mediu anume, in cloud, si a vedea cum se comporta aceasta sub diferite conditii de retea, sisteme de operare, parametri de CPU sau memorie, cu anumite placi grafice si asa mai departe, scaland diferite variabile in functie de cerintele de business cerute.
Un principiu al testarii in cloud este tocmai acela ca ea vine sa substituie mediul fizic in care se testeaza, oferind un mediu ce poate fi configurat in mult mai multe moduri, mai safe din perspectiva eventualelor bug-uri de instalare sau update (a nu se uita incidentul CrowdStrike de anul trecut), si fara a mai stoca date pe computerele fizice de lucru care se pot pierde sau fura.
Folosirea testarii in cloud este extrem de utila deci in foarte multe cazuri concrete. Probabil una din situatiile cele mai frecvente este atunci cand din dorinta de a vedea cum se comporta un produs in mediul de Productie si nu ne putem baza in totalitate pe mediul de test (poate e instabil sau nu ofera aceleasi caracteristici ca cel de productie), mediul cloud poate oferi aceasta alternativa. In acest mod, ne putem configura cu ajutorul unui provider de servicii cloud un mediu virtual cat mai fidel cu cel de Productie, dar unde putem sa testam in voie fara riscul de a afecta clientii adevarati.
Daca vrei un punct de plecare spre partea de testare automata, aici sunt 2 cursuri foarte bune pe Udemy adresate incepatorilor: 1. Testare software (manual si automata) 2. Testare automata cu Python si Selenium
Tot aici poate fi extrem de util sa folosim testarea intr-un mediu de cloud daca vrem sa simulam un scenariu in care are loc un crash foarte mare si vrem sa testam daca si cum este afectata aplicatia respectiva intr-un mod cat mai apropiat de realitate, fara a face acest lucru pe calculatorul fizic de lucru, ca sa nu riscam sa ne stricam ceva pe el si sa producem pagube reale.
O alta situatie cand se poate folosi cu precadere testarea in cloud este atunci cand vrem sa testam un produs simuland mai multe locatii geografice. Acest lucru este deosebit de util daca vrem sa testam un website de exemplu care ofera facilitati diferite in functie de locatie, sau e chiar restrictionat in unele dintre ele, si sa simulam deci conditii cat mai reale de utilizare pe baza acestui criteriu.
Mediul de cloud, dupa cum aminteam si inainte, ofera o flexibilitatea extrem de mare pentru a testa o aplicatie cu diferite conditii si configurari de hardware, verificand diferite capacitati de procesoare, memorii, cache, placi grafice, dar si anumite flow-uri de software. In aceasta ultima categorie pot fi verificate detalii ce tin de exemplu de salvarea anumitor date in baza de data de care e legata aplicatia, sau de a inspecta ulterior log-urile anumitor procese care se pot salva si ele in acel cloud, daca folosim un SDK dedicat precum cel de la AWS.
Mai mult, un mediu de cloud reprezinta locul perfect in care putem efectua verificari ale unor aspecte care intr-un mediu fizic ar fi mai greu de testat ca urmare a riscurilor pe care le presupun, precum volume testing-ul sau anumite verificari de securitate, unde vrem sa „distrugem” aplicatia in cauza. Cu alte cuvinte, cloud testing-ul prezinta o versatilitate foarte mare de situatii unde poate fi aplicata.
Metode si tool-uri de cloud testing
Modalitatile prin care se poate pune in practica testarea in cloud sunt si ele destul de variate si prezinta de la caz la caz avantaje si dezavantaje. Ideea de baza este aceea ca nu exista un singur mod de a opera cu acest tip de testare, esenta fiind sa ne documentam inainte pentru a gasi si adopta cea mai buna solutie raportata la natura produsului pe care trebuie sa il testam si la resursele de care dispune echipa / compania din care facem parte.
Din punct de vedere al formelor de cloud testing, se pot distinge 3 categorii principale:
- Software as a Service (SaaS): probabil cea mai uzitata forma este cea prin care medul de cloud este livrat sub forma unui serviciu de software. Astfel, compania care furnizeaza mediul de cloud este cea responsabila direct pentru aplicatiile pe care celelalte companii-client se deployaza si acceseaza prin internet direct acolo clientii platind acest serviciu pe masura ce il folosesc. Ca exemple pentru partea de business, companiile Atlasian (care detine Jira) si Salesforce ofera cloud sub forma SaaS.
- Platform as a Service (PaaS): acest model presupune ca anumiti furnizori third-party livreaza platforme preconfigurate cu anumite cerinte de hardware si software, pe care tot ei le gazduiesc, iar echipele de testare le pot configura si scala in baza cerintelor pe care le au produsele ce necesita a fi testate. Aici cele mai populare exemple sunt solutiile oferite de Microsoft prin Azure sau Amazon prin AWS Elastic Beanstalk.
- Infrastructure as a Service (IaaS): a treia forma principala este cea care presupun infrastructuri de hardware ce sunt virtualizate, astfel incat companiile care vor sa isi testeze produsele sunt scutite partial sau total de a mai cumpara echipamente fizice corespondente. Aceste infrastructuri livrate sub forma unui serviciu platit sunt administrate de echipele de DevOps interne, iar cele mai populare solutii sunt cele de Microsoft Azure Virtual Machines si Amazon Web Services (AWS).
Aceste trei forme principale sunt cele mai folosite de catre majoritatea companiilor din IT&C pentru a verifica produsele dezvoltate de acestea, si poate fi verificata astfel o gama larga de aspecte tehnice si functionale: interfata (UI) aplicatiei respective, compatibilitatile cu anumite browsere, configuratii hardware sau software, performanta si securitatea produsului, sau raspunsurile pe care le ofera API-urile cand sunt interogate, pentru a se observa inclusiv integrarea cu baza de date din spate.
Avantaje si dezavantaje oferite de cloud testing
Formula de testare in cloud este una ce capata valente destul de complexe, prezentand atat avantaje destul de clare, dar si dezavantaje.
Din categoria avantajelor, probabil cel mai important este versatilitatea acesteia, ce permite simularea unei game extrem de largi de medii ce pot capata diferite caracteristici de hardware sau software, si care pot fi ulterior scalate pentru a testa in conditii cat mai diverse. Tot legat de acest avantaj deriva si faptul ca in cloud putem simula un mediu cat mai apropiat de cel de Productie, mai ales daca cel de testare nu este chiar cel mai bine calibrat, si sa ne ajute sa testam situatii care altfel ar fi riscante de reprodus pe un device adevarat, precum un crash serios sau un load foarte mare.
De asemenea, un avantaj este si cel al costurilor. De regula, dar cu mentiunea ca depinde destul de mult de ce anume avem nevoie, testarea in formula cloud prezinta costuri mai reduse decat daca ar trebui sa achizitionam anumite sisteme, masini sau servere fizice pe care sa le administram direct si sa le facem constant setup si mentenanta pentru a putea testa produsele de business pe acestea.
Mai mult, tot conex cu precedenta idee este si aceea ca mediul de cloud permite o flexibilitate mult mai mare prin faptul ca daca o aplicatie este deployata deci pe o masina virtuala, ulterior ea poate fi folosita de catre toata echipa pentru testare, si nu mai depinde de numarul de device-uri fizice pe care le detine pentru a le imprumuta de la o persoana la alta.
Acest lucru poate conduce la o testare mai rapida si mai eficienta, precum si la un test coverage mai mare ca urmare a faptului ca toata lumea poate sa contribuie in mod direct cu idei de testare vis-a-vis de respectivul produs.
Trecand in zona dezavantajelor, unui dintre cele mai invocate puncte slabe al testarii in cloud este acela al securitatii datelor care daca nu sunt pastrate corespunzator, pot fi relativ usor furate in urma atacurilor coordonate ale hackerilor, si se pot provoca astfel daune imense, financiare si de imagine companiei respective.
Un al doilea dezavantaj, cu sensul de provocare mai degraba este cel al potentialei cresteri de costuri din partea provider-ilor de cloud computing services. Deoarece Microsoft si Amazon sunt si ele multinationale care doresc sa isi mareasca profitul constant, exista riscul si pentru cresterea tarifelor accesarii solutiilor de cloud precum PaaS sau IaaS.
Mai mult, pentru a implementa o metodologie de testare coerenta si eficienta in cloud, nu este nevoie doar de infrastructura si bani, este nevoie si de specialisti bine pregatiti pe zona de cloud, atat QA cat si DevOps, care sa stie cum sa implementeze, gestioneze si sa foloseasca acest sistem pentru a asigura testarea eficienta, cu cat mai putine riscuri si sincope.
Depinde deci foarte mult pentru ce nevoi avem concret cand trebuie sa testam ceva. Nu toata lumea foloseste testarea in cloud, unele echipe preferand formula clasica de a testa doar pe device-uri fizice, mediul de cloud fiind destul de complicat de setat. Pe langa asta, depinde extrem de mult la ce avem nevoie sa testam, si daca trebuie verificat ceva in mod constant pe termen mediu si lung sau e doar ceva ocazional, fiind si acesta un motiv pentru care cloud testing-ul nu e chiar cea mai intalnita forma de testare.
Concluzii
In incheiere, cloud testing-ul reprezinta o forma de testare care desi nu e cea mai discutata sau prezentata, ea este extrem de interesanta si valoroasa in contextul in care ofera solutii ce pot suplini anumite forme de testare in medii clasice, fizice, oferind alternative virtuale ce pot fi mai safe si scalabile la diferite nevoi.
Ea reprezinta o forma suplimentara prin care putem testa produsele de business in medii care sa fie cat mai apropiate de cel de Productie, testand scenarii si situatii care in mod normal ar fi mult mai greu sau imposibil de testat in maniera obisnuita, pe o masina fizica.
Surse pe subiect
Despre cloud testing, cum poate fi ea folosita, forme, tool-uri si best practices se gasesc informatii extrem de bune pe blog-urile BrowserStack, Geeksforgeeks, TestGrid.io si Oracle Romania.
Un video introductiv de la S3CloudHub despre cloud testing.
Daca vrei sa inveti bazele testarii manuale si automate, ori testare automata cu Selenium si Python.