Ce este automatizarea testelor? O introducere simplă și clară
Există două tipuri de testare în lumea software – manuală și automată. Unele tipuri de testare manuală, cum ar fi testarea de descoperire și testarea capacității de utilizare, sunt neprețuite. Puteți face alte tipuri de testare – cum ar fi testarea de regresie și testarea funcțională – manual, dar este o practică destul de risipitoare pentru oameni să continue să facă același lucru la nesfârșit. Aceste tipuri de teste repetitive sunt cele care se pretează la automatizarea testelor.
Automatizarea testelor este practica de a rula teste în mod automat, de a gestiona datele de testare și de a utiliza rezultatele pentru a îmbunătăți calitatea software-ului. Este în primul rând o măsură de asigurare a calității, dar activitățile sale implică angajamentul întregii echipe de producție software. De la analiști de afaceri la dezvoltatori și ingineri DevOps, pentru a obține cele mai bune rezultate din automatizarea testelor este nevoie de includerea tuturor.
Acest post vă va oferi o înțelegere la nivel înalt a ceea ce înseamnă automatizarea testelor. Există toate tipurile de teste, dar nu toate ar trebui să fie automatizate; prin urmare, să începem cu criteriile generale pentru automatizarea testelor.
Criterii pentru automatizare
Un test trebuie să îndeplinească anumite criterii pentru a fi automatizat – în caz contrar, ar putea sfârși prin a costa mai mult decât economisește. La urma urmei, un obiectiv major al automatizării este acela de a economisi timp, efort și bani. Iată câteva criterii generale pentru automatizarea testelor. Acestea sunt puncte de pornire, rețineți. Criteriile dumneavoastră pot fi diferite în funcție de circumstanțele dumneavoastră.
Repetabil
Testul trebuie să fie repetabil. Nu are sens să automatizați un test care poate fi executat doar o singură dată. Un test repetabil are următorii trei pași:
- Pregătiți testul, inclusiv datele și mediul.
- Executați funcția și măsurați rezultatul.
- Curățați datele și mediul.
În primul pas, vrem să fim capabili să punem mediul într-o stare consistentă. Cu alte cuvinte, dacă avem un test pentru încercarea de a adăuga un utilizator existent, trebuie să ne asigurăm că utilizatorul există înainte de a efectua testul. Odată ce testul este finalizat, mediul ar trebui să fie readus în starea de bază.
Determinant
Când o funcție este determinantă, înseamnă că rezultatul este același de fiecare dată când este rulată cu aceeași intrare. Același lucru este valabil și pentru testele care pot fi automatizate. De exemplu, să spunem că dorim să testăm o funcție de adunare. Știm că 1 + 1 = 2 și că 394,19 + 5,81 = 400,00. Adăugarea este o funcție determinantă.
Pe de altă parte, un software poate utiliza un număr atât de mare de intrări variabile încât este dificil să avem același rezultat în timp. Unele variabile pot fi chiar aleatorii, ceea ce poate face dificilă determinarea rezultatului specific. Proiectarea software-ului poate compensa acest lucru permițând intrări de testare prin intermediul unui harnașament de testare.
Alte caracteristici ale unei aplicații pot fi aditive; de exemplu, crearea unui nou utilizator ar adăuga la numărul de utilizatori. Cel puțin atunci când adăugăm un utilizator știm că numărul de utilizatori ar trebui să crească doar cu unul. Cu toate acestea, rularea testelor în paralel poate provoca rezultate neașteptate. Izolarea poate preveni acest tip de fals pozitiv.
Unopinionat
Nu puteți automatiza chestiuni de opinie. Aici strălucesc cu adevărat testele de uzabilitate, testele beta și așa mai departe. Feedback-ul utilizatorilor este important, dar pur și simplu nu poate fi automatizat… îmi pare rău!
Tipuri de teste automatizate
Există atât de multe tipuri de teste, dintre care multe pot fi automatizate, încât nu le putem cuprinde pe toate într-un singur post. Dar iată suficiente pentru a vă oferi un bun punct de plecare.
Analiză de cod
Există de fapt multe tipuri diferite de instrumente de analiză a codului, inclusiv analiza statică și analiza dinamică. Unele dintre aceste teste caută defecte de securitate, altele verifică stilul și forma. Aceste teste se execută atunci când un dezvoltator verifică codul. În afară de configurarea regulilor și de actualizarea instrumentelor, nu este mult de scris cu aceste teste automatizate.
Teste unitare
De asemenea, puteți automatiza o suită de teste unitare. Testele unitare sunt concepute pentru a testa o singură funcție, sau o unitate, de operație în mod izolat. Ele se execută de obicei pe un server de compilare. Aceste teste nu depind de baze de date, API-uri externe sau stocare de fișiere. Ele trebuie să fie rapide și sunt concepute pentru a testa doar codul, nu și dependențele externe.
Teste de integrare
Testele de integrare sunt un alt tip de animal când vine vorba de automatizare. Deoarece un test de integrare – numit uneori teste end-to-end – trebuie să interacționeze cu dependențele externe, acestea sunt mai complicate de configurat. Adesea, cel mai bine este să creați resurse externe false, în special atunci când aveți de-a face cu resurse care nu se află sub controlul dumneavoastră.
Dacă, de exemplu, aveți o aplicație de logistică care depinde de un serviciu web de la un furnizor, testul dumneavoastră ar putea eșua în mod neașteptat dacă serviciul furnizorului este oprit. Înseamnă asta că aplicația dvs. este stricată? S-ar putea, dar ar trebui să aveți suficient control asupra întregului mediu de testare pentru a crea fiecare scenariu în mod explicit. Nu depindeți niciodată de un factor extern pentru a determina rezultatul scenariului dvs. de testare.
Teste de acceptare automatizate
Există astăzi mai multe practici care utilizează teste de acceptare automatizate (AAT), dar ele fac practic același lucru. Dezvoltarea bazată pe comportament (BDD) și dezvoltarea bazată pe teste de acceptare automată (AATDD) sunt similare. Ambele urmează aceeași practică de creare a testului de acceptare înainte ca caracteristica să fie dezvoltată.
În final, testul de acceptare automatizat rulează pentru a determina dacă caracteristica oferă ceea ce s-a convenit. Prin urmare, este esențial ca dezvoltatorii, afacerea și QA să scrie aceste teste împreună. Ele servesc ca teste de regresie în viitor și se asigură că caracteristica rezistă la ceea ce se așteaptă.
Teste de regresie
Fără AAT-uri, trebuie să scrieți teste de regresie după aceea. Deși ambele sunt forme de teste funcționale, modul în care sunt scrise, când sunt scrise și de către cine sunt scrise sunt foarte diferite. Ca și AAT-urile, acestea pot fi conduse prin intermediul unei API prin cod sau printr-o interfață de utilizare. Există instrumente pentru a scrie aceste teste folosind o interfață grafică.
Teste de performanță
Există multe tipuri de teste de performanță, dar toate testează un anumit aspect al performanței unei aplicații. Va rezista la o presiune extremă? Testăm sistemul pentru căldură mare? Urmărim un simplu timp de răspuns sub sarcină? Ce ziceți de scalabilitate?
Câteodată aceste teste necesită emularea unui număr masiv de utilizatori. În acest caz, este important să avem un mediu care este capabil să realizeze o astfel de performanță. Resursele cloud sunt disponibile pentru a ajuta la acest tip de testare, dar este posibil să se utilizeze și resurse on-premise.
Teste de fumus
Ce este un test de fumus? Este un test de bază care se efectuează de obicei după o fereastră de implementare sau de întreținere. Scopul unui test de fum este de a se asigura că toate serviciile și dependențele sunt funcționale. Un test de fum nu este menit să fie un test funcțional complet. Poate fi executat ca parte a unei implementări automate sau poate fi declanșat printr-o etapă manuală.
Procesul general de automatizare a testelor
Acum că am văzut criteriile de automatizare și suficiente tipuri de teste automatizate pentru a avea o idee despre cum stau lucrurile, iată procesul general de automatizare a testelor. Există trei pași majori pentru automatizarea testelor: pregătiți, acționați, raportați rezultatele.
Pregătiți
În primul rând, trebuie să pregătim starea, datele de testare și mediul în care au loc testele. După cum am văzut, majoritatea testelor necesită ca mediul să fie într-o anumită stare înainte ca o acțiune să aibă loc. Într-un scenariu tipic, acest lucru necesită o anumită pregătire. Fie că datele vor trebui să fie manipulate, fie că aplicația va trebui să fie pusă într-o anumită stare sau ambele!
Take Action
După ce starea și/sau mediul se află în starea predefinită, este timpul să acționați! Driverul de testare va rula testul, fie prin apelarea API-ului unei aplicații sau a interfeței cu utilizatorul, fie prin rularea directă a codului. Driverul de testare este responsabil pentru „conducerea” testelor, dar sistemul de gestionare a testelor își asumă responsabilitatea de a coordona totul, inclusiv raportarea rezultatelor.
Raportarea rezultatelor
Un sistem de automatizare a testelor va înregistra și raporta rezultatele. Aceste rezultate pot veni într-o serie de formate diferite și pot chiar crea bilete de problemă sau bug-uri într-un sistem de urmărire a activității. Cu toate acestea, rezultatul de bază este un succes sau un eșec. De obicei, există un indicator verde sau roșu pentru fiecare scenariu de testare pentru a indica reușita sau eșecul.
Câteodată, testele nu sunt concludente sau nu se execută din anumite motive. Când se întâmplă acest lucru, sistemul de automatizare va avea un jurnal complet al ieșirii pentru ca dezvoltatorii să îl revizuiască. Acest jurnal îi ajută pe aceștia să depisteze problema. În mod ideal, ei vor putea rejuca scenariul după ce au pus în aplicare o remediere.
The Bottom Line
Sfârșitul este următorul: automatizarea testelor ajută la îmbunătățirea calității cu viteză. Dar nu toate testele pot fi automatizate. Există cu siguranță o investiție implicată. Cu atât de multe tipuri de teste, este important să obțineți combinația potrivită. Piramida de testare este o regulă de bază simplă pentru a vă ajuta să obțineți acest lucru corect. Aceasta spune că cele mai multe teste ar trebui să fie teste unitare, urmate de teste de servicii, apoi teste UI.
Un sistem de automatizare a testelor coordonează preocupările de testare, inclusiv gestionarea datelor de testare, rularea testelor și urmărirea rezultatelor. Automatizarea testelor este următorul pas pentru echipele care devin copleșite de povara de a repeta aceleași teste manuale care ar trebui să fie automatizate.
Biografia autorului: Această postare a fost scrisă de Phil Vuollet. Phil folosește software pentru a automatiza procesele pentru a îmbunătăți eficiența și repetabilitatea. El scrie despre subiecte relevante pentru tehnologie și afaceri, ocazional ține conferințe pe aceleași subiecte și este un familist căruia îi place să joace fotbal și jocuri de societate cu copiii săi.
.