Testarea în cloud
În acest articol, voi trece în revistă câteva informații importante despre cloud computing. Pentru a obține la maximum din acest articol, trebuie mai întâi să înțelegem conceptul de cloud-computing și modul în care cloud-ul este diferit de orice altă infrastructură.
BAZELE CLOUD COMPUTING
Cloud computing este rezultatul uneia dintre cele mai mari și mai importante revoluții la care am asistat în industria software-ului, tehnologia cunoscută sub numele de virtualizare care a schimbat modul în care organizațiile din întreaga lume își gestionează resursele de calcul.
Această tehnologie avansată creează o metodologie complet nouă a modului în care organizațiile pot partaja resursele computerului pe mai multe sisteme pentru a reduce costurile și timpul de implementare, pentru a crește scalabilitatea și pentru a facilita departamentul IT în gestionarea infrastructurii lor.
Tehnologia de virtualizare devine și mai importantă odată ce a evoluat în noua formă de cloud computing. Cloud computing este o platformă bazată pe internet care utilizează tehnologia de virtualizare și diversele sale servicii de calcul, cum ar fi hardware, software și orice alte servicii legate de computer, care oferă o soluție totală de resurse bazată pe cererea de pe internet.
Pentru a rezuma, permiteți-ne să trecem în revistă principalele puncte de care ar trebui să țineți cont de ce este cloud computing:
- Cloud computing este un termen general pentru furnizarea de software/servicii prin internet
- Permite companiilor/oamenilor să consume resurse la cerere, cum ar fi o mașină virtuală, stocare și aplicații.
- Cloud permite accesul la servicii fără ca utilizatorul să aibă nevoie de cunoștințe tehnice sau de control asupra infrastructurii suport
Structura cloud se bazează pe trei tipuri de modele de livrare (aka componente) care oferă soluția „ca serviciu”:
Infrastructura ca serviciu (IaaS)
Acesta este stratul fundamental al soluției cloud. Se concentrează pe resursele fizice, cum ar fi serviciile de calcul, rețelele și spațiul de stocare a datelor. Resursele IaaS sunt de obicei facturate la cerere, în funcție de utilizarea clienților.
Exemple:
- Microsoft Azure
- Motor Google (GCE)
- Servicii web Amazon (AWS)
Platformă ca serviciu (PaaS)
Acesta este al doilea strat al soluției cloud, care oferă organizațiilor o platformă cu principalul avantaj de a elimina nevoia acestora de a gestiona infrastructura de bază. O organizație care utilizează acest nivel nu va trebui să-și facă griji cu privire la achiziționarea de resurse, planificarea capacității (puteți seta pur și simplu să crească dinamic atâta timp cât aveți buget) și întreținerea atât a hardware-ului, cât și a software-ului.
Exemple:
- Google App Engine (GAE)
- Învățat
- Amazon E2C
Software ca serviciu (SaaS)
Stratul superior și cel mai rentabil al platformei cloud, care oferă un produs complet, este adesea menționat ca o aplicație de utilizator final, rulată și gestionată de furnizorul de servicii. În acest nivel, aplicațiile sunt disponibile utilizatorilor finali la cerere prin internet. Folosind SaaS, un client își poate accesa aplicațiile fără a instala software-ul pe un dispozitiv personal (stație de lucru/server). Întregul efort de procesare este efectuat în centrul de date al furnizorului.
Exemple:
- Forta de vanzare
- aplicatii Google
- Gmail
TIPURI DE NORI
Există trei tipuri de formațiuni cloud disponibile: publice, private și hibride.
PREOCUPĂRI DE NORI
Cloud este o tehnologie grozavă care a început deja să schimbe industria și modul în care companiile își gestionează datele. Cu toate acestea, lumea nu este perfectă și există încă câteva preocupări pe care ar trebui să le luăm în considerare:
- Interoperabilitate – Un set universal de standarde și/sau interfețe nu a fost încă definit, ceea ce duce la un risc semnificativ de blocare a furnizorului.
- Latență – Toate accesul la cloud se face prin internet, introducând latența în fiecare comunicare dintre utilizator și furnizor.
- Reglementări – Există preocupări în comunitatea cloud computing cu privire la jurisdicție, protecția datelor, practicile corecte de informare și transferul internațional de date – în principal pentru organizațiile care gestionează date sensibile.
- Fiabilitate – Multe infrastructuri cloud existente folosesc hardware-ul de bază despre care se știe că eșuează în mod neașteptat.
- Controlul resurselor – Nivelul de control pe care îl are utilizatorul asupra furnizorului de cloud și a resurselor acestuia variază foarte mult între furnizori.
- Securitate – Principala preocupare este confidențialitatea datelor: utilizatorii nu au control sau cunoaștere a locului în care sunt stocate datele lor.
Testarea în Cloud
Testarea în cloud se referă la testarea resurselor cloud (atât hardware cât și software) care sunt disponibile la cerere. Testarea în cloud trebuie efectuată pentru a se asigura că produsul testat îndeplinește atât cerințele funcționale, cât și nefuncționale.
Ciclul de viață al dezvoltării software SaaS (SSDLC)
- Cerințe - Colectarea și prioritizarea nevoilor/povestirilor de afaceri de către client/OP pentru produs, precum și capturarea acestora într-o locație centrală.
- Design - Construirea unui plan tehnic a modului în care sistemul/funcția/modelul propus va funcționa. Include elemente precum caracteristici ale sistemului, modele, arhitectură tehnică, puncte de integrare, interfețe, UX etc.
- Dezvoltare - Aceasta este construirea fizică și codificarea caracteristicilor/modelului produsului, inclusiv baza de date bazată pe design și cerințe.
- Testare - Verificarea caracteristicii/componentei unui produs funcționează conform așteptărilor și îndeplinește toate cerințele de afaceri. De asemenea, include scrierea condițiilor de testare și executarea scenariilor de testare.
- Go-live & maintenance - Implementarea caracteristicii/componentei produsului în mediul de producție, precum și întreținerea zilnică a aplicației (inclusiv actualizări).
Tipuri de testare în cloud
Există patru tipuri diferite de testare bazată pe cloud. Fiecare tip are propriile sale obiective.
- Testarea SaaS în cloud (testarea unei aplicații) - Acest tip de testare este folosit pentru a valida calitatea aplicației în cloud. Sunt verificate cerințele funcționale și nefuncționale ale aplicației specifice.
- Testarea unui cloud - Cloud-ul este testat ca o entitate întreagă și pe baza funcționalității sale. Acest tip de testare este folosit pentru a valida calitatea cloud-ului din punct de vedere extern (utilizatori finali) (capacitățile și caracteristicile sale de serviciu).
- Testare în interiorul unui cloud (testarea infrastructurii) - Acest tip de testare este efectuat de furnizorul de cloud și verifică calitatea unui cloud dintr-o vedere sau caracteristică internă, pe baza infrastructurii interne și a capacităților cloud (de exemplu, capabilități automate, securitate , management, monitorizare).
- Testare pe nori (testare servicii) - Testarea unei aplicații se face pe diferite nori (private, publice și hibride). Se bazează pe cerințele serviciului aplicației.
Soluții de testare în cloud
Există două tipuri de medii de testare în cloud care pot fi utilizate de echipele de dezvoltare pentru activități de testare:
- Un laborator de testare care simulează un mediu bazat pe cloud, în care aplicația este implementată și testată.
- Un mediu hibrid, public sau privat, în care aplicația este implementată și testată, deoarece va fi disponibilă pentru clienți.
Provocările testării în cloud
- Controlul calității - Cum menținem produsele de calitate într-o zonă care necesită o rotație rapidă, ridicată a produselor livrate, fără erori? Aceasta este lumea cloud-ului, care poate fi foarte complexă pentru cei care nu investesc timp să o învețe.
- Securitatea datelor și confidențialitatea - Unul dintre cele mai mari avantaje ale infrastructurii cloud este suportul multi-tenancy. Deși suportul multi-tenancy este excelent, există încă o provocare majoră de a se asigura că datele clientului nu sunt compromise, sunt aplicate standardele de securitate și reglementările legate de confidențialitate sunt aplicate.
- Upgrade-uri cu o perioadă scurtă de preaviz - Furnizorii de cloud oferă clienților existenți o notificare foarte scurtă înainte de upgrade. Aceasta este o mare problemă atunci când validați manual modificările aplicației dvs. SaaS și este un alt aspect important atunci când vă gândiți la efectuarea testării manuale în proiecte cloud.
- Migrarea datelor - Migrarea datelor, procesul de mutare a datelor clienților de la un furnizor de cloud la altul. În timpul acestui proces, riscul crește dramatic, deoarece ambii furnizori implicați trebuie să se asigure că datele sunt migrate fără a pierde date critice.
- Testare de upgrade - Cea mai mare provocare a testării în cloud este să se asigure că upgrade-urile live nu influențează utilizatorii cloud existenți conectați. Gândiți-vă la un mediu cu mai mulți chiriași care utilizează același mediu cloud, atunci când aplicația este actualizată pentru un anumit client. Sună simplu? Din păcate, în unele cazuri, procesul de actualizare poate influența experiența utilizatorului celorlalți chiriași din cauza latenței, a problemelor de rețea și a resurselor partajate.
- Bug-uri - Bug- urile nu mai sunt izolate; odată văzute pot fi văzute de toți și exploatate.
- Lansări frecvente - Lansările frecvente oferă mai puțin timp pentru rularea testelor, mai puțin timp pentru regresii și, ca urmare, mai multe defecte neașteptate și riscuri mai mari.
Testarea în cloud vs. testarea convențională
Principalele tipuri de testare efectuate într-un mediu cloud
În timpul testării în cloud, echipele trebuie să valideze că testele lor acoperă ambele aspecte ale testării funcționale și nefuncționale. Să trecem în revistă câteva dintre cele mai comune tipuri de teste care fac parte dintr-un proiect de testare în cloud:
Testare de recuperare în caz de dezastru (DR) – Cloud-ul ca serviciu trebuie să fie disponibil clienților în orice moment , prin urmare, este important ca un site replicat să fie disponibil în cazul unei defecțiuni critice. În timpul executării testelor DR, echipa trebuie să se asigure că aplicația se poate recupera în cazul unei eșecuri masive (restaurare la ultimul punct disponibil, fără pierderi de date, timp minim de nefuncționare etc.).
Testare de disponibilitate – Acest tip de test este de obicei deținut de furnizorul de cloud, care se asigură că cloud-ul este disponibil clienților în orice moment, fără niciun timp de nefuncționare.
Testarea capacității – Aceasta verifică dacă hardware-ul actual și viitor acceptă utilizarea așteptată, așa cum este determinată de specificațiile produsului (cum ar fi adăugarea sau eliminarea resurselor către sau de la un client).
Testare multi-tenancy – Acest tip de testare este foarte important în orice strategie de testare în cloud. În timpul acestor teste, serviciile cloud sunt testate de mai mulți utilizatori de la diferiți chiriași (fiecare serviciu poate deservi mai mulți clienți). Testarea trebuie efectuată pentru a garanta că nu există incidente de securitate, cum ar fi accesul (control sau scurgeri de date) și că nu există nicio degradare a performanței odată ce mai mulți clienți accesează același serviciu.
Testare funcțională - Aceasta testează aplicația oferă funcționalitatea necesară.
Testare de fiabilitate – Pentru a se asigura că aplicația este capabilă să funcționeze fără erori pentru o anumită perioadă de timp într-un anumit mediu.
Testare de securitate – După cum sa discutat mai devreme, mediul cloud oferă acces mai multor clienți care pot folosi aceleași servicii. În consecință, trebuie să ne asigurăm că nu există acces neautorizat la datele din aplicația SSP, că nu există scurgeri de confidențialitate și că integritatea datelor clienților este păstrată sub porți de securitate stricte.
Orientări comune de testare:
- Validați că integritatea datelor nu este compromisă de accesul neautorizat
- Validați că doar clientul autorizat poate accesa datele
- Validați că migrarea datelor se face prin canale securizate (criptate).
- Validați că toate datele utilizatorului sunt eliminate în cazul renunțării la serviciu
- Validați că numai porturile relevante sunt deschise
- Validați că există o separare clară între chiriași
Testare de scalabilitate – Serviciile cloud sunt relevante atât pentru organizațiile mici, cât și pentru cele mari; ca urmare, trebuie să existe teste pentru a se asigura că afacerea își poate crește sau reduce resursele în funcție de nevoile clientului.
Testarea de sarcină și de stres – Pentru a identifica stabilitatea sistemului dincolo de capacitatea sa operațională pentru a vedea cum reacționează la diferite sarcini.
Testare de upgrade live – Pentru a ne asigura că putem implementa versiuni noi pe cloud fără a afecta experiența de utilizare a clienților.
Testarea performanței – Pentru a se asigura că aplicația SaaS poate gestiona diferite încărcări de trafic care depind de numărul de solicitări ale clienților. Principalii factori pe care dorim să-i validăm în acest tip de teste sunt latența rețelei, timpul de răspuns al aplicației și echilibrarea sarcinii de lucru (NLB) în cazul utilizării masive.
Orientări comune de testare:
- Timpul de răspuns nu ar trebui să fie afectat din cauza acțiunilor altor chiriași.
- Eșecurile unui chiriaș nu ar trebui să afecteze performanța celuilalt chiriaș.
- Procesul de scalare nu ar trebui să provoace nicio degradare a factorilor de performanță.