Ce este Software Testing Life Cycle (STLC)?
Dezvoltarea unor produse software in industria IT se bazeaza de regula pe respectarea anumitor cicluri cu etape bine stabilite si definite, care alcatuiesc la un nivel superior metodologiile de lucru, precum Agile.
Testarea, desi avem tendinta sa ne-o imaginam ca o singura etapa solida si rigida, constituie si ea un proces cu mai multe faze, care acopera mai multe detalii, nu doar simpla etapa de a testa o aplicatie si atat. Astfel, e important sa cunoastem notiunea de Software Testing Life Cycle (STLC).
Ce inseamna STLC?
Daca traducem ad litteram, prin STLC intelegem ciclul de viata al testarii software. Intr-o maniera mai explicita insa, aceasta notiune se refera la procesul prin care etapa generala a testarii unui produs software, indiferent de natura acestuia, este elaborata si desfasurata in mai multe faze bine delimitate care au scopul de a organiza munca de testare si de a trece prin toate (ideal) detaliile produsului supus analizei.
Esenta acestui proces sau ciclu de viata este aceea ca testarea nu se face la intamplare: nu primim aplicatia si gata, din secunda imediat urmatoare o deschidem si vedem ce poate sa faca. Testarea este mai mult de atat, ciclul de viata al acesteia are rolul de a lua metodic acele etape care vizeaza cerintele produsului, urmand apoi verificarea si validarea acestuia de catre echipa de testare.
Etapele ciclului de viata al testarii software
Dupa cum aminteam si mai sus, acest proces prezinta mai multe etape fundamentale pentru munca de testare. In functie de sursele pe care le consultam, unele etape pot fi usor diferite, pot sa apara sub alt nume sau mai pot fi introduse unele etape secundare, dar esenta procesului ramane aceeasi: sa ne asiguram ca produsul software este inteles, respecta cerintele si contine cat mai putine defecte.
In continuare vor fi prezentate etapele generale, principale, care alcatuiesc STLC si care sunt preponderent intalnite in cadrul echipelor de lucru.
1. Analiza specificatiilor tehnice (Requirement Analysis)
Prima etapa care nu poate sa lipseasca din STLC este cea de analiza a specificatiilor produsului software verificat. In aceasta etapa, membrii echipei de testare citesc documentatia tehnica pentru a intelege care sunt elementele ce compun aplicatia, ce si cum ar trebui sa functioneze, astfel incat sa poata dezvolta ulterior planul de testare.
Astfel, in aceasta etapa introductiva nu se testeaza propriu-zis ceva, dar se urmareste intelegerea produsului, se pun la punct tipurile de testare ce se pot efectua in continuare si se redacteaza unele documente specifice, precum matricea de trasabilitate a cerintelor (Requirement Traceability Matrix).
2. Planificarea testarii (Test Planning)
A doua etapa intalnita de regula in Software Testing Life Cycle este planificarea testarii. Aceasta etapa urmareste sa defineasca strategia de urmat pentru a verifica produsul software in cauza. Strategia cuprinde tipurile de testare care se urmaresc, testarea manuala sau automata, care sunt aspectele cheie de urmarit din care se merge mai apoi in detaliu cu analiza tehnica, tool-urile de testare necesare, precum si estimarea duratei si a costurilor testarii pentru acea aplicatie.
Ca exemple de documente specifice, aceasta etapa de planificare se soldeaza de cele mai multe ori cu un Plan de Testare, care cuprinde detaliile mentionate anterior ce sunt stabilite de catre membrii echipei.
3. Dezvoltarea cazurilor de testare (Test Case Development/ Test Design)
Dupa ce s-a planificat testarea efectiva a produsului, urmatoarea faza este cea in care se dezvolta de catre QA cazurile de testare. Mai precis, in acest stadiu sunt elaborate acele cazuri de test care trebuie neaparat avute in vedere pentru a verifica functionalitatea aplicatiei, si a scripturilor de testare pentru partea de automation.
De asemenea, sunt gandite conditiile de testare legate de mediul implicit in care se desfasoara aceasta, preconditii, datele de test cu care se va lucra pe mai departe, si ulterior sunt redactate propriu-zis cazurile de testare, intr-o maniera cat mai detaliata.
4. Pregatirea mediului de testare (Test Environment Setup)
Dupa ce au fost puse la punct cazurile de test pentru produsul supus verificarii, STLC continua cu pregatirea mediului de testare (Test Environment Setup). Aceasta faza este necesara pentru a defini conditiile legate de partea software si hardware in care se va desfasura testarea produsului respectiv.
In anumite situatii, aceasta etapa se poate desfasura in paralel cu faza de Test Case Development, pentru a se economisi timp si pentru a stabili intr-o maniera unitara toate cerintele, conditiile si preconditiile in care se va desfasura verificarea si validarea aplicatiei noastre. Echipa de testare realizeaza de regula o testare a functionalitatilor principale (Smoke testing) a mediului in care se va efectua testarea, pentru a evita surprize ulterioare.
5. Executarea testarii (Test Execution)
Ajungem la etapa executarii testarii propriu-zise. Dupa ce in prealabil s-a trecut prin etapele precedente ce aveau rolul de a pregati strategia, modalitatile si documentele necesare, echipa de testeri incepe etapa in care efectiv trece la analiza produsului software, pe baza Planului de Testare si a cazurilor de test gandite si stabilite anterior.
Scopul acestei faze este de a verifica din cat mai multe puncte de vedere aplicatia, functional si non-functional, daca se comporta fara probleme, daca respecta documentatia tehnica, si daca contine bug-uri. In acest ultim caz, defectele se raporteaza prin Bug Reports, care ajung ulterior la developeri pentru a le remedia.
6. Incheierea testarii (Test Closure)
Ultima etapa, fireasca desigur, care finalizeaza ciclul de viata al testarii produselor software este incheierea testarii. Aceasta ultima etapa are loc dupa ce aplicatia a fost verificata, dupa ce au fost depistate defectele acesteia si remediate de catre programatori, si se constata ca indeplineste cerintele tehnice din documentatiile elaborate initial.
Echipa de testeri realizeaza de regula un raport de activitate in care sunt mentionate etapele parcurse, tipurile de teste efectuate, concluziile principale si rezultatele testarii. Pe langa acestea, au de regula loc sedinte in care se discuta ce strategii se pot adopta sau imbunatati pe viitor, ce a mers bine sau nu, in ideea de a trage unele invataminte pentru viitoarele cicluri de testare.
De ce e important acest proces al testarii software?
Ideea de proces in general, si de proces al testarii software in cazul de fata sunt extrem de importante ca urmare a faptului ca activitatile desfasurate in industria software au devenit foarte complexe (si complicate), iar lucrurile nu se pot face direct, fara o pregatire initiala temeinica.
Principalul argument care sustine idee de Software Testing Life Cycle este acela ca organizand munca pe parcursul mai multor etape, fiecare cu task-urile sale specifice, in care sunt implicati mai multi oameni, riscul de a scapa din vedere detalii critice sau de a fi neglijent este destul de redus.
Desigur, nu inseamna ca nu se pot face si greseli omenesti, dar daca lucrurile se discuta etapizat, mai intai analiza cerintelor, abia apoi partea de planificare si tot asa, testarea va fi una mult mai temeinica iar defectele vor fi mai eficient depistate, pentru ca si produsul software respectiv va fi fost mai bine inteles de catre QA.
Mai mult, testarea inseamna mai intai de toate intelegerea aplicatiei primite, iar intelegerea ei nu se poate realiza pe loc, deschidem aplicatia si de acolo vedem noi cum o verificam. De aceea organizarea STLC este importanta, si pentru faptul ca ajuta testerii sa cunoasca mai intai produsul, apoi sa elaboreze un plan cu niste tinte clare, urmand ulterior sa gaseasca bug-urile din acesta.
Testarea nu se rezuma la aspectul cantitativ (azi am gasit 5 defecte, mi-am facut norma), ci la o analiza calitativa, pentru a vedea cum se comporta in ansamblu acel soft, daca diverse categorii de oameni il pot accesa fara probleme de UI sau UX, spre exemplu.
Comparatie intre SDLC si STLC
Pentru a nu exista eventuale confuzii, trebuie mentionat si faptul ca vorbim de doua procese diferite, cel de Software Development Life Cycle (SDLC) si cel de Software Testing Life Cycle (STLC).
Chiar daca ambele sunt fundamentale in industria software, SDLC este un proces general care se refera la modul in care este gandit de la 0, elaborat si construit un produs software in ansamblul sau. Practic, se porneste de la faza de documentare a cerintelor sale tehnice, design, si apoi se ajunge la dezvoltarea acestuia, testare si implementare. In SDLC, testarea e vazuta ca o etapa mai mare intr-un proces universal.
Prin comparatie, STLC este tot un proces, dar mai detaliat care se refera strict la modul cum se desfasoara ideal verificarea si validarea unui produs software. Astfel, STLC nu face decat sa detalieze etapa general numita Testing din SDLC. Cele doua procese nu trebuie confundate, dar trebuie cunoscute pentru a intelege mai bine modul de lucru in IT.
Concluzii
In incheiere, ciclul de viata al testarii produselor software reprezinta un proces cu mai multe etape bine delimitate, si cu o importanta deosebita. Acest proces organizeaza mai bine munca de testare, si parcurge tot ce este esential de la studierea documentatiei, pana la planificare, elaborarea cazurilor de test si testarea efectiva, fiind o notiune fundamentala de cunoscut de catre un QA.
Calitatea testarii in ansamblu ar avea mult de suferit daca ea s-ar face in pripa, fara nicio pregatire initiala, iar produsele software pe care le folosim cu totii ar avea probleme mult mai mari. De aceea testarea nu trebuie neglijata si nici executata in graba, ci intr-un mod cat mai detaliat si consistent.
Surse consultate si suplimentare
Informatii despre ce este Software Testing Life Cycle, caracteristici, documente si importanta sunt 1️⃣ aici, 2️⃣ aici, 3️⃣ aici si 4️⃣ aici.
O comparatie cu asemanari si deosebiri intre SDLC si STLC.
Un tutorial video despre Software Testing Life Cycle.
Despre QA roadmap.