Da li ste upoznati sa ciklusom agilnog testiranja (ATLC)? To je postupak koji softverski timovi koriste da bi bili sigurni da se njihove aplikacije testiraju na pravi i efikasan način.
Ovaj tekst će vas upoznati sa svim važnim aspektima ATLC-a, uključujući njegove prednosti, korake koji su uključeni u proces, izradu praktične strategije testiranja, izvršavanje testova zasnovanih na prikupljanju zahteva i praćenju grešaka, testove prihvatanja od strane korisnika (UAT) kao i kontinuiranu integraciju i automatizaciju testova.
Nakon što pročitate ovaj vodič, imaćete bolji uvid u to kako primeniti agilno testiranje kao deo životnog ciklusa razvoja softvera!
Ako ste agilni programer, tester ili menadžer proizvoda koji traži efikasniji način za isporuku svojih proizvoda, ovaj članak će objasniti faze procesa, kao i potrebne radnje.
Pregled životnog ciklusa agilnog testiranja
Nije tajna da je testiranje ključno u agilnom razvoju. Ipak, često je potcenjena aktivnost u okviru agilne isporuke. Razlog tome je, naravno, balans između troškova i vremena isporuke.
Bez detaljnog testiranja, nema garancije kvaliteta ili pouzdanosti proizvoda koji vaš tim razvija. Zato je od suštinskog značaja razumeti životni ciklus agilnog testiranja – od identifikacije radnih zadataka do toga koji tip testa koristiti u svakoj fazi.
Ciklus agilnog testiranja zahteva učešće programera i testera u svakom sprintu. Ako se to dobro uradi, omogućava se automatizacija testiranja u svim fazama, što pomaže da se greške otkriju ranije i češće, smanjujući vreme rešavanja problema kasnije.
Agilno testiranje takođe doprinosi ranoj validaciji zahteva i, kao rezultat, povećava zadovoljstvo klijenata isporukom kvalitetnog proizvoda.
Šta je agilno testiranje i koje su njegove prednosti
Agilno testiranje je inovativna metodologija testiranja softvera koja koristi automatizaciju za stvaranje iterativnog procesa testiranja. Ovaj pristup, koji se fokusira na automatizaciju, pomaže timovima da brzo analiziraju sve nedoslednosti ili probleme u kodu, a zatim testiraju modifikacije zasnovane na povratnim informacijama.
Glavne prednosti ovog procesa su očigledne:
- osigurava se da testiranje ima željeni uticaj,
- povećava se efikasnost vremena razvoja,
- sistem ima brže rešavanje grešaka,
- poboljšava se zadovoljstvo klijenata.
Kvalitet i brzina su ključni faktori jer je sprint definisan kao kratak vremenski period (obično 2 do 4 nedelje). Što više tim može da se osloni na kvalitet uključen u testiranje sprinta, to će imati više samopouzdanja i brži napredak u razvoju.
Fokus na automatizaciju treba da bude primarni cilj svakog agilnog tima. Ovo omogućava timovima da smanje rizik od skupih grešaka i da više vremena posvete kreiranju novog sadržaja umesto popravljanju onoga što je već u produkciji.
Još jedna prednost je bolja procena troškova projekta i vremenskog okvira. Pošto je proizvod zreliji i predvidljiviji, manje je situacija u kojima tim mora da se nosi sa neočekivanim problemima koji se pojave u sprintu bez prethodne procene takvih komplikacija.
Koraci životnog ciklusa agilnog testiranja
Životni ciklus agilnog testiranja sastoji se od četiri odvojene faze.
Testovi jedinica
Ovo su testovi koje sprovode programeri kada je kod spreman sa razvojne strane. Izolovani su u razvojnom okruženju, bez uključivanja drugih delova sistema.
Testovi jedinica služe za testiranje koda i mogu se sprovoditi ručno i automatski.
Ako se rade ručno, programer pokreće test slučajeve u odnosu na kod. To je lako shvatiti, ali zahteva više vremena od sprinta posvećenog razvoju, posebno dugoročno.
Alternativa ovome je kreiranje koda za automatizovani test jedinica, koji će u osnovi verifikovati kod funkcije samo njegovim izvršavanjem. To znači da programer mora da izdvoji vreme ne samo za razvoj nove funkcije, već i za razvoj koda za test jedinica koji će testirati tu funkciju.
Iako se to može činiti kao veći napor u kratkom roku, dugoročno štedi vreme jer se ovi testovi jedinica lako mogu ponovo koristiti i u kasnijim fazama testiranja sprinta. Mogu biti uključeni čak i u redovne slučajeve regresijskog testa, što dodatno štedi vreme.
Na kraju, što je veća pokrivenost koda automatizovanim testovima jedinica, to će biti bolje metrike pouzdanosti koda koje se mogu prikazati klijentu.
Funkcionalni testovi
Funkcionalni testovi su dizajnirani da utvrde koliko dobro funkcija aplikacije radi. Ova vrsta testiranja se koristi da bi se osigurala ispravna funkcionalnost koda, a ne tehnički aspekti (koji su uglavnom bili deo testiranja jedinica), kao i da se proceni da li zadovoljava potrebe i očekivanja korisnika.
Drugim rečima, funkcionalni testovi se koriste da bi se potvrdilo da ono što je razvijeno ispunjava zahteve poslovnih korisnika.
Dobra je praksa prikupiti važne test slučajeve unapred i od relevantnih zainteresovanih strana (vlasnika proizvoda ili krajnjih korisnika) i napraviti listu svih test slučajeva potrebnih za sadržaj sprinta.
Automatizacija funkcionalnih testova zahteva više napora od strane razvoja testa, jer su to složeni procesi koje treba verifikovati, a koji uključuju različite delove sistema. U ovom slučaju, najbolja strategija je da se uspostavi poseban tim samo za razvoj funkcionalnih testova, paralelno sa glavnim razvojnim timom koji razvija nove funkcije.
Za projekat to, naravno, znači povećane troškove za održavanje posebnog tima, ali ima veliki potencijal da dugoročno uštedi novac. Na menadžerima projekta je da objasne i izračunaju koristi i uštede kako bi poslovnim korisnicima predstavili čvrst argument koji će dovesti do odobrenja povećanih troškova projekta.
S druge strane, ako se testiranje radi ručno, ovu aktivnost može da obavi veoma mali tim (ponekad čak i jedna osoba). Međutim, potrebna je stalna ručna i ponavljana aktivnost za svaki sprint. Vremenom, kako se broj funkcija sistema povećava, može biti teže održati korak sa solidnim funkcionalnim testiranjem iz sprinta u sprint.
Regresijski testovi
Svrha regresijskog testa je da se osigura da će sve što je do sada funkcionisalo, funkcionisati i nakon sledećeg izdanja. Regresijske testove je potrebno sprovesti da bi se osiguralo da nema problema sa kompatibilnošću između različitih modula.
Test slučajevi za regresijske testove su najbolji ako se redovno održavaju i pregledaju pre svakog izdanja. U zavisnosti od specifičnosti projekta, najbolje je da budu jednostavni i da pokrivaju većinu osnovnih funkcija i važnih tokova koji prolaze kroz ceo sistem.
Svaki sistem obično ima procese koji dodiruju mnoge različite oblasti, i oni su najbolji kandidati za slučajeve regresijskog testa.
Ako postoje automatizovani testovi jedinica i funkcionalni testovi, kreiranje automatizacije u regresijsko testiranje je veoma lak zadatak. Samo ponovo upotrebite ono što već imate za najvažniji deo sistema (npr. za procese koji se najviše koriste u produkciji).
Testovi prihvatanja od strane korisnika (UAT)
Konačno, ali ne manje važno, UAT potvrđuje da aplikacija ispunjava potrebne zahteve za implementaciju u produkciju. Ovaj pristup najbolje funkcioniše kada se softver često testira u kratkim i intenzivnim ciklusima.
UAT test treba da sprovode ljudi van agilnog tima, idealno poslovni korisnici u namenskom okruženju, što je moguće bliže budućoj produkciji. Alternativno, vlasnik proizvoda može da zameni krajnje korisnike.
U svakom slučaju, ovo bi trebalo da bude čist, funkcionalan test iz perspektive krajnjeg korisnika, bez ikakve veze sa timom programera. Rezultati ovih testova su ovde da bi doneli najvažniju odluku „ići/ne ići“ za produkciju.
Planiranje efikasne strategije testiranja
Planiranje je ključni deo agilnog testiranja, jer povezuje celokupnu strategiju. Takođe treba da postavi jasne vremenske okvire u kontekstu sprintova.
Efikasnim upravljanjem agilnim planiranjem testiranja, timovi mogu da kreiraju jasan pravac koji vodi ka efikasnom korišćenju resursa u sprintu. Očekuje se veća saradnja između testera i programera.
Takođe treba uspostaviti sveobuhvatan plan da se odredi kada se testiranje jedinica, funkcionalno testiranje ili testiranje prihvatanja korisnika dešavaju u okviru svakog razvojnog sprinta. Na taj način svi znaju kada je njihovo učešće potrebno za uspešno agilno lansiranje.
Kako postaviti plan može biti stvar daljeg razgovora i dogovora. Međutim, najvažnije je da to bude proces i da ga se pridržavate. Uspostavite periodičnost koja će biti pouzdana i predvidljiva.
Nemojte odstupati od procesa. U suprotnom, stvarnost će biti direktno suprotna – haos i nepredvidljiva puštanja u produkciju.
Izvođenje testova na osnovu prikupljanja zahteva
Testovi se moraju sprovesti u skladu sa zahtevima svake faze. Karte se zatim otvaraju kada se pronađe greška ili problem i dodeljuju se razvojnom timu, koji će moći da shvati šta treba popraviti ili promeniti u kodu. Kada su sve greške ispravljene, izvršavanje agilnog testiranja može se nastaviti dok svi testovi ne prođu.
Pregled rezultata i praćenje grešaka
Efikasan pregled rezultata i solidan proces praćenja grešaka su od suštinskog značaja. Proces treba da uključi sve relevantne zainteresovane strane, od menadžera projekta i testera do programera, a na kraju i timove podrške i klijente za prikupljanje povratnih informacija.
Ovo bi trebalo da bude dovoljno sveobuhvatna aktivnost da se problemi mogu brzo identifikovati i otkloniti pre nego što je već zakazani datum objavljivanja ugrožen.
Izbor alata zavisi od tima. Ali jednom kada se izabere, svaka test aktivnost mora da uključi pouzdane procese praćenja grešaka kako bi se pratili problemi, određivali prioriteti prema zavisnostima, izveštavali o statusu od strane programera o rešavanju ili prenošenju radi dalje istrage, a zatim zatvarali karte kada se reše.
Pregled pomaže agilnim testerima da razumeju ponašanje sistema, identifikujući greške u svakom koraku, a ne kasnije u procesu. Redovni pregledi takođe omogućavaju agilnim timovima da identifikuju trendove i oblasti koje treba poboljšati, omogućavajući im da kontinuirano ažuriraju svoj okvir testiranja i brže grade proizvode boljeg kvaliteta.
Završetak puštanja proizvoda u prodaju uz test dima u produkciji
Da bi se maksimizovao uspeh izdanja, sprovođenje test dima u produkciji (odmah nakon objavljivanja) je jedan od načina da se stekne više samopouzdanja.
Ovaj test se sastoji od skupa aktivnosti samo za čitanje unutar produkcionog sistema, koje neće kreirati nikakve nove nasumične podatke, ali će i dalje verifikovati osnovnu funkcionalnost sistema iz ugla krajnjih korisnika.
Uključivanje pravih aktera u proces pomaže u obezbeđivanju usklađenosti i odgovornosti, uz jačanje poverenja da su ciljevi ispunjeni. Na kraju krajeva, ovi testovi garantuju uspešno izdanje.
Kontinuirana integracija i automatizacija testova za poboljšanje efikasnosti
Kompanije sve više usvajaju kontinuiranu integraciju i automatizaciju testova kako bi agilne procese podigli na viši nivo.
Ako tim može da implementira automatizaciju u nekoliko faza, kao što je gore opisano, one se mogu kombinovati i povezati u namenski tok za testiranje. Ovo je u suštini potpuno automatizovani grupni proces koji većinu aktivnosti testiranja obavlja samostalno, bez učešća bilo kog drugog člana tima.
Vremenom će ovakav tok za testiranje smanjiti ukupno vreme potrebno za sve faze testiranja. Na kraju, to može dovesti do zaista brzog inkrementalnog objavljivanja proizvodnje nakon završetka svakog sprinta. Iako je ovo idealan scenario, u stvarnosti ga je teško postići sa svim uključenim koracima testiranja. Automatizacija je jedini način da se do toga dođe.
Razlika između agilnog testiranja i testiranja metodom vodopada
Agilne strategije testiranja razlikuju se od tradicionalnih strategija zasnovanih na vodopadu u nekoliko aspekata, kao što su periodičnost, paralelizam ili dodeljeno vreme za svaku aktivnost.
Međutim, najočiglednija razlika je fokus svakog pristupa:
- Agilno testiranje se fokusira na stalne, brze iteracije razvoja i povratne informacije kako bi se identifikovali problemi i brzo poboljšao proizvod. Iterativni proces se fokusira na saradnju sa klijentima, kontinuiranu integraciju i prilagodljivo planiranje.
- S druge strane, tradicionalno testiranje metodom vodopada naglašava linearni proces u kojem se svaka faza rešava odvojeno i uzastopno, ostavljajući povratne informacije o celokupnom rešenju tek za poslednju fazu projekta, neposredno pre datuma konačnog puštanja u produkciju.
Očigledno je da što se pre problemi identifikuju, to je situacija bolja za projekat. U tom pogledu, agilna metodologija definitivno ima veće šanse za uspeh.
Zaključak
Iako se životni ciklus agilnog testiranja može činiti kraćim od ciklusa testiranja metodom vodopada, u stvarnosti nije. Ceo proces je kontinuiran i traje do datuma izdavanja proizvoda. U zavisnosti od budžeta i vremena dostupnog za svaki sprint, moraćete da odredite prioritet koji se testovi sprovode tokom tog određenog sprinta.
Dobro isplanirana strategija testiranja pomaže vam da odaberete koje funkcije ili moduli zahtevaju više pažnje od drugih. Automatizacija će omogućiti uključivanje nekoliko faza testiranja u isti sprint, povećavajući ukupnu pouzdanost sistema iz sprinta u sprint.
Sada možete pogledati neke od najboljih praksi u Scrum testiranju.