Šta je regresivno testiranje?
Regresivno testiranje je izrazito važan korak u procesu razvoja softvera. Ono poboljšava opštu stabilnost sistema, sprečava povratak ranije otklonjenih grešaka i generalno pospešuje otkrivanje bagova pre puštanja softvera u produkciju. Sve to dovodi do većeg korisničkog zadovoljstva i poverenja, a kompanije, koje dati softver razvijaju ili koriste, štiti od nepredviđenih troškova i reputacijskih rizika.
U ovom članku otkrićemo ti ukratko kako se regresivnim testiranjem postiže sve navedeno, a SixCube University ti nudi priliku da naučiš sve o najvažnijim aspektima regresivnog testiranja i njegovoj ulozi unutar šireg konteksta testiranja softvera.
Cilj regresivnog testiranja
U jednom od prethodnih tekstova, pod naslovom „Vrste softverskog testiranja“, regresivno testiranje smo objasnili ovako: „Regresivno testiranje ima za cilj očuvanje stabilnosti i funkcionalnosti čitavog sistema nakon svake promene. Ova vrsta testiranja sprovodi se kako bi se garantovalo da nove nadogradnje, ispravke bagova ili izmene u kodu ne uzrokuju neželjene efekte na već postojećim delovima softvera.“
Prema tome, regresivno testiranje predstavlja proveru „starih“ delova softvera nakon implementacije novih promena u sistemu. Ono se obavlja da bi se sprečila pojava regresija. Regresije su greške koje se pojavljuju na funkcionalnostima koje su, pre unosa novih promena, radile bez problema.
Kada se obavlja regresivno testiranje?
Regresivno testiranje se, dakle, obično radi kao odgovor na različite nadogradnje softvera. To može biti dodavanje novih funkcionalnosti, ažuriranje starih, popravka otkrivenih bagova, optimizacija koda, izmene u korisničkom interfejsu, prilagođavanja konfiguracije, integracija novih eksternih sistema, ili dodavanje novih zahteva za već postojeće funkcionalnosti. Takođe, može da se radi i periodično, nevezano za bilo kakve promene, u unapred određenim vremenskim razmacima.
Regresivno testiranje je praktično redovan „sistematski pregled“ softvera. Na ovaj način se osigurava da novonastale promene nemaju negativan povratni uticaj na različite komponente softvera.
Da damo jedan jednostavan primer – nakon dodavanja novog načina plaćanja u e-prodavnici, recimo plaćanja preko Apple Pay-a, tester može odlučiti da proveri da li je uvođenje ove novine uticalo na funkcionisanje već korišćenih vidova plaćanja, na primer kreditnom karticom ili preko PayPala. Ipak, povratni efekat nove funkcionalnosti nije ograničen na „bliske“ ili „srodne“ funkcionalnosti, već, u zavisnosti od arhitekture sistema, može da utiče na potpuno neočekivane delove softvera, recimo na proces prijave korisnika, praćenje pošiljki ili na mehanizam ocenjivanja proizvoda.
Nasuprot regresivnom, treba reći da postoji i progresivno testiranje, koje se fokusira na validaciju sveže dodatih ili ažuriranih komponenti, i, za postizanje optimalnog kvaliteta softvera, najčešće je potrebno primeniti kombinaciju ova dva pristupa.
Proces regresivnog testiranja
Analiza promena
Kako će proces regresivnog testiranja izgledati zavisi od niza faktora vezanih za konkretan softver, metodologiju testiranja i alate koji se koriste, ali će manje-više uvek proći kroz neke osnovne etape.
Proces obično počinje identifikacijom obima promena i analizom njihovog uticaja, koja može da se radi različitim metodama – uz pomoć alata za praćenje promena u kodu, zatim kroz proučavanje dokumentacije ili kroz razgovore sa razvojnim timom. Ovaj korak je ključan jer se regresivno testiranje retko izvršava na svim funkcionalnostima softvera, naročito u slučaju velikih i kompleksnih sistema, pošto takav pristup uglavnom zahteva previše vremena i resursa.
Prioritizacija
Tester mora dobro poznavati sistem, razumeti promene koje su napravljene na njemu, kao i namenu i svrhu svake komponente. Na osnovu ovih uvida, biraju se funkcionalnosti koje predstavljaju prioritet i koje je neophodno istestirati za datu verziju softvera, a kriterijumi za taj izbor mogu biti različiti. Tester, na primer, može izabrati da se fokusira na testiranje komponenti za koje, na osnovu svog znanja o sistemu, smatra da bi verovatno mogle biti pogođene najnovijim promenama.
Takođe, često se prioritizuju i funkcionalnosti koje se najviše koriste, zatim one koje su i ranije bile fragilne ili one čija bi neispravnost predstavljala najveći rizik u smislu potencijalnih finansijskih gubitaka, narušavanja reputacije ili zakonskih komplikacija.
Izrada i/ili selekcija testova
Sledeći korak je izrada testova koji će da provere date funkcionalnosti, ili selekcija već ranije dizajniranih testova, ukoliko su date funkcionalnosti već bile testirane u prošlosti. Ovi testovi su, u principu, detaljno definisani scenariji, koji opisuju korake, uslove i očekivane rezultate za proveru specifičnih funkcionalnosti softvera, i kreiraju se na osnovu analize zahteva i specifikacija sistema.
I ovaj deo procesa takođe zahteva temeljan pristup kako bi se osiguralo da izabrani testovi adekvatno pokrivaju sve potencijalne efekte novih promena na sistem.
Izvršavanje regresivnih testova i važnost automatizacije
Izvršavanje regresivnih testova se može raditi manuelno, ali vrednost automatizacije u ovom domenu se povećava što je sistem kompleksniji i što se češće ažurira.
Automatizacija regresivnih testova naročito ima smisla u slučaju kritičnih komponenti softvera, koje bi trebalo testirati posle svake ili skoro svake promene. Tako, većina testerskih timova izgrađuje i stalno dopunjuje svoj regression pack, odnosno set testova koji se mogu automatski izvršiti po potrebi. Iz regression pack-a se onda biraju testovi koji su prikladni s obzirom na plan testiranja i prioritizaciju, a na osnovu te prioritizacije definiše se i redosled njihovog izvršavanja.
Nakon što su testovi izvršeni, pravi se izveštaj, koji se šalje razvojnom timu, koji ispravlja eventualne greške i šalje novu verziju softvera na ponovno testiranje, a ovaj ciklus se zatim ponavlja dokle god se ne utvrdi da softver funkcioniše u skladu sa zahtevima.
Regression pack se može dopunjavati nakon svake nove iteracije softvera. Kada je nova funkcionalnost jednom testirana, korišćeni testovi se mogu pridodati ostalima u regression pack-u i koristiti za njeno regresivno testiranje kada god u budućnosti bude postojala potreba.
Ilustracija: dodavanje testova za nove funkcionalnosti u regression pack prilikom svake nove verzije softvera. (Izvor: katalon.com)
Izazovi regresivnog testiranja
Kao što smo rekli, za uspešno regresivno testiranje neophodno je temeljno poznavanje sistema i njegove svrhe, kako bi se napravila dobra prioritizacija pri testiranju, ali taj posao nije nimalo lak. Ovde je odgovornost na testeru velika jer mora da uzme u obzir veliki broj faktora i „izvaga“ ih tako da omogući da softver bude maksimalno funkcionalan i stabilan uz što manji utrošak vremena, kako bi nova verzija softvera mogla da bude što ranije puštena u rad.
Drugi izazov regresivnog testiranja je svakako adekvatna automatizacija testova. O problemima koji mogu pratiti automatizaciju i o procesu automatizacije uopšte, već smo opširnije pisali u ovom tekstu.
Od ostalih izazova, izdvojili bismo još održavanje testova, koje podrazumeva redovno ažuriranje i prilagođavanje ranije napisanih testova kako bi oni bili sinhronizovani sa najnovijim promenama u softveru. Ovo uključuje reviziju i uklanjanje zastarelih testova, dodavanje novih testova za nove funkcionalnosti, i optimizaciju postojećih testova radi povećanja efikasnosti i pokrivenosti testiranja.
Nauči sve o regresivnom testiranju na SixCube University-ju
Regresivno testiranje je nezamenjiv deo održavanja kvaliteta softvera, ključan za očuvanje stabilnosti, funkcionalnosti i pouzdanosti sistema kroz različite verzije. Omogućava timovima da brzo reaguju na promene bez straha od neočekivanih problema, podižući poverenje u softverska rešenja i osiguravajući visok kvalitet korisničkog iskustva. Zahvaljujući njemu, kompanije mogu da ostvare važnu konkurentsku prednost, podstaknu dugoročnu lojalnost korisnika i učvrste poziciju svog brenda na tržištu.
Ukoliko želiš da naučiš više o ovoj temi i stekneš najvažnija znanja i veštine neophodne da započneš karijeru u QA industriji, prijavi se na naš kurs.

