Agilno testiranje: Metodologija i životni ciklus
⚡ Pametni sažetak
Agilno testiranje primjenjuje principe agilnog razvoja softvera na osiguranje kvalitete. Testiranje počinje prvog dana, odvija se kontinuirano uz razvoj i organizirano je kroz faze životnog ciklusa, kvadrante i strategije koje održavaju povratne petlje kratkima, a isporuku pouzdanom.

Što je agilno testiranje?
Agilno testiranje je praksa testiranja koja slijedi pravila i principe agilnog razvoja softvera. Za razliku od metode Waterfall, agilno testiranje započinje na početku projekta i odvija se kontinuirano uz razvoj. Nije sekvencijalno - izvršava se tek nakon faze kodiranja - već je utkano u svaku iteraciju tako da povratne informacije stižu do tima u trenutku kada se pojave nedostaci.
Načela agilnog testiranja
Osnovni principi agilnog testiranja su:
- Softver koji radi je primarno mjerilo napretka.
- Najbolji rezultati dolaze od samoorganizirajućih timova.
- Rana i kontinuirana isporuka vrijednog softvera najveći je prioritet.
- Razvojni programeri i testeri svakodnevno surađuju tijekom cijelog projekta.
- Agilnost se poboljšava stalnim tehničkim poboljšanjima i dobrim dizajnom.
- Kontinuirana povratna informacija osigurava da konačni proizvod ispunjava poslovna očekivanja.
- Testiranje se provodi tijekom implementacije, što smanjuje ukupno vrijeme razvoja.
- Proces testiranja održava dosljedan i održiv tempo.
- Timovi redovito zastaju kako bi razmislili i prilagodili se kako bi postali učinkovitiji.
- Najbolje arhitekture, zahtjevi i dizajni proizlaze iz samoorganizirajućih timova.
- Razgovor licem u lice je najučinkovitiji i najefikasniji oblik komunikacije unutar tima.
Primijenjeni zajedno, ovi principi povećavaju produktivnost softvera i skraćuju put od ideje do radne značajke.
Životni ciklus agilnog testiranja
Životni ciklus agilnog testiranja odvija se u pet faza, kao što je prikazano u nastavku.
Faze su:
- Faza 1: Procjena utjecaja. Prikupite povratne informacije od dionika i korisnika. To se naziva i fazom povratnih informacija jer pomaže inženjerima testiranja da postave ciljeve za sljedeći životni ciklus.
- Faza 2: Agilno planiranje testiranja. Svi dionici se okupljaju kako bi planirali raspored testiranja, opseg i rezultate.
- Faza 3: Spremnost za objavu. Revpregledajte implementirane značajke i odlučite koje su spremne za objavu, a koje se trebaju vratiti u razvoj.
- Faza 4: Dnevni Scrumovi. Jutarnji sastanak na kojem tim prati status testiranja i postavlja ciljeve za dan.
- Faza 5: Testirajte agilnost Revtj. Tjedni sastanci sa zainteresiranim stranama radi procjene napretka u odnosu na ciljeve i prilagodbe strategije.
Agilni testni plan
An agilni plan testiranja opisuje vrste testiranja koje se provode u iteraciji, potrebne podatke i infrastrukturu, testna okruženjai rezultate testiranja. Za razliku od modela vodopada, agilni plan testiranja piše se i osvježava za svako izdanje. Tipičan plan uključuje:
- Opseg testiranja.
- Testira se nova funkcionalnost.
- Razina ili vrsta testiranja na temelju složenosti značajki.
- Testiranje opterećenja i performansi.
- Razmatranja infrastrukture.
- Plan rizika i ublažavanja.
- Osiguranje resursa.
- Isporučivi ciljevi i prekretnice.
Agilne strategije testiranja
Životni ciklus agilnog testiranja obuhvaća četiri strateške faze.
iteracija 0
Tijekom prve faze obavljate početne zadatke postavljanja. To uključuje identificiranje ljudi za testiranje, instaliranje alata za testiranje i raspoređivanje resursa kao što je laboratorij za testiranje upotrebljivosti. Ciljevi iteracije 0 su:
- Utvrdite poslovni slučaj za projekt.
- Definirajte rubne uvjete i opseg projekta.
- Navedite ključne zahtjeve i slučajeve upotrebe koji će utjecati na kompromise u dizajnu.
- Opišite jednu ili više kandidatskih arhitektura.
- Identificirajte rizike.
- Procijenite troškove i pripremite preliminarni plan projekta.
Konstrukcijske iteracije
Druga faza agilnog testiranja su iteracije konstrukcije, tijekom kojih se odvija većina testiranja. Ova faza je skup iteracija koje postupno grade rješenje. Unutar svake iteracije tim primjenjuje hibrid praksi iz XP-a, Scruma, agilnog modeliranja i agilnih podataka.
Timovi slijede praksu prioritiziranih zahtjeva: sa svakom iteracijom izvlače najvažnije stavke iz zaostatka i implementiraju ih. Iteracije konstrukcije podijeljene su u dva komplementarna oblika testiranja:
- Potvrdno testiranje provjerava ispunjava li sustav namjeru dionika. Izvodi ga sam tim.
- Istražno testiranje potraga za problemima koje je potvrdno testiranje možda propustilo. Testeri iznose potencijalne probleme kao priče o nedostacima. Istraživačko testiranje obuhvaća integracijsko, opterećenje i stresno te sigurnosno testiranje.
Potvrdno testiranje ima još dva aspekta - testiranje programera i agilno testiranje prihvatljivosti — i oba su automatizirana kako bi se omogućilo kontinuirano regresijsko testiranje tijekom cijelog životnog ciklusa. Konfirmacijsko testiranje je agilni ekvivalent testiranja prema specifikaciji.
Agilno testiranje prihvatljivosti kombinira tradicionalno funkcionalno i testiranje prihvatljivosti jer ga razvojni tim i dionici provode zajedno. Testiranje programera kombinira tradicionalno jedinično testiranje s testiranjem integracije usluga i provjerava i kod aplikacije i shemu baze podataka.
Faza otpuštanja, završnica igre ili prijelazna faza
Cilj faze izdanja je uspješno implementirati sustav u produkciju. Aktivnosti uključuju obuku krajnjih korisnika, osoblja za podršku i operativnih timova; marketing izdanja proizvoda; vježbe izrade sigurnosnih kopija i vraćanja; te finaliziranje dokumentacije sustava i korisnika.
Završna faza agilnog testiranja uključuje potpuno testiranje sustava i testiranje prihvatljivosti. Da bi se završilo bez prepreka, proizvod se mora rigorozno testirati tijekom iteracija konstrukcije. Tijekom završne faze, testeri se usredotočuju na rješavanje nedostataka koji su se pojavili ranije u ciklusu.
Proizvodnja
Nakon faze izdavanja, proizvod se premješta u produkciju gdje se prati njegovo ponašanje u stvarnom vremenu, a svi problemi se prijavljuju u sljedeći ciklus planiranja.
Agilni kvadranti testiranja
Agilni kvadranti testiranja dijele cijeli proces na četiri područja i pomažu timovima da razumiju kako se provodi agilno testiranje.
Agilni kvadrant I
Kvadrant I fokusira se na internu kvalitetu koda s tehnološki vođenim testovima koji podržavaju tim:
- Jedinični testovi.
- Testovi komponenti.
Agilni kvadrant II
Kvadrant II sadrži poslovno orijentirane testove koji podržavaju tim i usredotočuju se na zahtjeve. Tipičan rad u ovom kvadrantu uključuje:
- Primjeri testiranja mogućih scenarija i tijekova rada.
- Testiranje artefakata korisničkog iskustva kao što su prototipovi.
- Testiranje u paru.
Agilni kvadrant III
Kvadrant III pruža povratne informacije za kvadrante I i II. Testni slučajevi ovdje često čine osnovu za automatizaciju, a višestruki iteracijski pregledi grade povjerenje u proizvod. Tipičan rad uključuje:
- Testiranje upotrebljivosti.
- Istraživačko testiranje.
- Uparite testiranje s kupcima.
- Kolaborativno testiranje.
- Testiranje prihvatljivosti korisnika.
Agilni kvadrant IV
Kvadrant IV koncentrira se na nefunkcionalne zahtjeve poput performansi, sigurnosti i stabilnosti. Ovaj kvadrant osigurava da aplikacija pruža očekivane nefunkcionalne kvalitete. Tipičan rad uključuje:
- Nefunkcionalni testovi kao što su testiranje opterećenja i performansi.
- Sigurnosno testiranje koje obuhvaća autentifikaciju i pokušaje upada.
- Testiranje infrastrukture.
- Testiranje migracije podataka.
- Testiranje skalabilnosti.
- Testiranje opterećenja.
Izazovi osiguranja kvalitete u agilnom razvoju softvera
Agilna isporuka donosi stvarne koristi, ali također stvara nove izazove za QA timove:
- Dokumentaciji se daje niži prioritet, pa se povećava rizik od pogreške i pritisak se prebacuje na tim za osiguranje kvalitete.
- Nove značajke stižu brzo, što testerima ostavlja manje vremena za provjeru najnovijih značajki u odnosu na zahtjeve i poslovne namjere.
- Testeri često igraju ulogu polu-razvojnih programera.
- Ciklusi izvršavanja testova su vrlo komprimirani.
- Za pripremu plana testiranja dostupno je ograničeno vrijeme.
- Budžeti za regresijsko testiranje postaju ograničeni.
- Testeri prelaze iz pozicije čuvara kvalitete u partnere u kvaliteti.
- Česte promjene zahtjeva inherentne su agilnom pristupu, što je jedan od najvećih izazova osiguranja kvalitete.
Rizik automatizacije u agilnom procesu
Automatizacija je ključna u agilnom razvoju, ali nosi rizike kojima timovi moraju aktivno upravljati:
- Automatizirani UI testovi nude visoku pouzdanost, ali su spori, krhki i skupi za održavanje. Povećanje produktivnosti vidljivo je samo kada testeri znaju kako dizajnirati dobre testove.
- Nepouzdani testovi su glavni problem. Ispravljanje problema s krhkim testovima i lažno pozitivnim rezultatima mora ostati glavni prioritet.
- Automatizirani testovi koji se izvode ručno, a ne putem CI-ja, riskiraju tiho pomicanje i davanje zastarjelih rezultata.
- Automatizacija ne zamjenjuje istraživačko ručno testiranje. Za očekivanu kvalitetu potrebna je kombinacija vrsta i razina testiranja.
- Alati za snimanje i ponovno pokretanje potiču skripte vođene korisničkim sučeljem koje su krhke i teško ih je održavati. Testovi pohranjeni izvan kontrole verzija dodaju nepotrebnu složenost.
- Loše planirana automatizacija, poduzeta radi "uštede vremena", često potpuno propadne.
- Postupci postavljanja i rastavljanja testiranja lako se propuštaju prilikom automatizacije, dok se ručno testiranje njima bavi prirodno.
- Metrike produktivnosti poput „broja testnih slučajeva dnevno“ mogu zavarati timove da provode beskorisne testove.
- Tim za automatizaciju mora biti učinkovit konzultant - pristupačan, kooperativan i snalažljiv - ili će praksa propasti.
- Rješenja koja zahtijevaju intenzivno kontinuirano održavanje mogu nadmašiti vrijednost koju pružaju.
- Automatiziranim testovima možda nedostaje stručnost potrebna za pružanje učinkovitih rješenja.
- Uspješnoj automatizaciji može ponestati važnih problema za rješavanje i preusmjeriti se na manje vrijedan posao.
Najbolje prakse za učinkovito agilno testiranje
Sljedeće prakse održavaju agilno testiranje brzim, pouzdanim i vrijednim za tim:
- Shift lijevo: Započnite testiranje u trenutku ispunjavanja zahtjeva, a ne na kraju iteracije.
- Uparite se s programerima: zajedno pregledajte kriterije prihvaćanja kako bi se nedostaci isključili, a ne kodirali.
- Automatizacija slojeva: izgraditi zdravu piramidu jediničnih, servisnih i UI testova.
- Održavajte testove neovisnima: izolirajte svaki test tako da neuspjesi ukazuju na jedan uzrok.
- Track nestabilnih testova: staviti u karantenu i odmah ispraviti nestabilne testove kako bi se spriječilo narušavanje povjerenja u paketu.
- Koristite analitiku potpomognutu umjetnom inteligencijom: Neka alati označe pogođene testove, grupiraju neuspjehe i predlože stabilne lokatore nakon svakog spajanja.



