Kada automatizirati korisničke priče?

Da ste radili u agilnom okruženju kao QA, najvjerojatnije biste naišli na neku vrstu automatizacije ispitivanja. Ne mislim na automatizaciju jediničnog testa koja je obično aktivnost usmjerena na razvojne programere, već na automatizaciju funkcionalnog testiranja prihvaćanja koju obično obavlja QA ili nova otmjena uloga Programera softvera u testu.

Prvo, pogledajmo neke kriterije i razloge za automatizaciju ispitivanja koji bi trebali odgovoriti na pitanje „Zašto testovi trebaju / ne bi trebali biti automatizirani“

Ponovljivost

Automatizirani testovi trebali bi se ponoviti, a rezultati bi trebali biti dosljedni u svakom izvođenju, tako da se programeri mogu pouzdati u ishod testova. To također znači da test ne bismo automatski automatizirali ako će se pokrenuti samo jednom; Jedina iznimka od toga je ako izvodite test protiv vrlo velikog broja podataka, kao što je provjera skripte za preusmjeravanje veze s mnogo veza.

Pouzdanost

Automatizirani testovi trebali bi stvarno provjeravati ispravnost provjere i biti u mogućnosti utvrditi stvarne rezultate prema valjanim očekivanim rezultatima. To također znači da ako rezultati ne mogu biti lako utvrđeni ili ako automatizirani testovi podliježu okolinskim problemima koji mogu prouzročiti lažne pozitivne rezultate u rezultatima ispitivanja, tada testovi ne mogu biti pouzdani.

Vrijeme

Automatizirani testovi također bi nam trebali uštedjeti vrijeme. Ako jednostavnom testu treba 10 minuta, ali se isti rezultat može ručno odrediti za 1 minutu, tada je najbolje takve testove ne automatizirati.

Sigurnosna mreža

Automatizirani testovi trebali bi osigurati zaštitnu mrežu za programere tako da se svako odstupanje od dobrog radnog koda, kao rezultat promjena u osnovi koda, brzo istakne i izvijesti o tome programerima.



Kada priče treba automatizirati?

U tipičnom sprintu recimo da postoji 7 priča koje su posvećene sprintu, od kojih je 5 dobrih kandidata za automatizaciju na temelju gore navedenih kriterija. Ali kada je najbolje vrijeme za automatizaciju tih priča? Trebamo li pisati automatizirane testove kako se značajke razvijaju? Trebamo li pričekati dok se značajka ne razvije i zatim napisati automatizirane testove? Hoćemo li pričekati kraj sprinta, a zatim automatizirati priče?

U nekim slučajevima kada su priče ispravci programskih pogrešaka ili neznatna izmjena ili poboljšanje postojeće značajke, tada ima smisla napisati automatizirane testove jer značajku modificiraju programeri. Možda postoji čak i postojeći automatizirani test za značajku koja se modificira u kojem trebate samo podesiti skriptu kako biste prilagodili nove promjene.

U drugim slučajevima, kada je priča o uvođenju nove značajke u aplikaciju, kako znamo kako će izgledati krajnji proizvod da bismo mogli unaprijed pisati testove? Ovdje ne govorim o datotekama značajki koje unaprijed opisuju testove prihvaćanja, već o stvarnim uređajima ili testovima selena (provedba testova) koji se protive isporučenom kodu.

Dno crta je - svaki test koji će se provoditi više puta treba biti automatiziran. I koje ćemo testove provesti više puta? Regresijski testovi. A što su regresijski testovi? Testovi koji utvrđuju je li aplikacija nazadovala u funkcionalnosti kao rezultat novih izmjena i značajki.

Ali, možete napisati samo dobre automatizirane regresijske testove protiv sustava koji je stabilan, dobro razumljiv i deterministički u smislu ponašanja s poznatim ulazima i izlazima.

Problem s pokušajem pisanja automatiziranih testova za značajku koja se razvija je to što biste potencijalno mogli potrošiti dugo vremena i puno napora pišući automatizirane skripte protiv nečega što je hlapljivo i podložno stalnim promjenama tijekom sprinta. Štoviše, koliko smo puta vidjeli da se priča posvećuje sprintu, a zatim kasnije izvlači iz sprinta? Tada smo izgubili vrijeme skriptirajući nešto što nije ušlo u sustav.

Neke organizacije čak nameću strogo pravilo da se priča ne 'radi' dok nije u potpunosti automatizirana! Hoćemo li zaustaviti objavljivanje važne značajke jer QA iz različitih razloga nije ili nije mogao pružiti automatizaciju na vrijeme? Ili priča nije 'gotova', jer nemamo automatiziranu skriptu za provjeru postojanja gumba na stranici. Ozbiljno?

Najbolja svrha automatiziranog testiranja je regresijsko testiranje, a regresijsko ispitivanje uvijek se izvodi protiv poznatog stanja i determinističkog sustava kako bi se moglo otkriti promjene u osnovnoj liniji i kako bi se dobio automatiziran test, a tek ako je test pokrenut i proslijeđen ručno barem jednom, tako da možete usporediti rezultate automatiziranog pokretanja s ručnim izvršavanjem.

Prema ovoj definiciji, priče bi trebale biti automatizirane (implementacija) unutar sprinta i to samo kad je značajka u potpunosti provjerena ručno. Jednom kada je priča završena i prvo je ručno provjerena, to je pouzdana značajka i stabilan sustav prema kojem možete dizajnirati i pisati automatizirane testove. Nakon što se automatizirano ispitivanje implementira, ono se dodaje u paket za regresijski test kako bi se nadziralo i otkrivalo regresijske nedostatke kako se razvijaju sljedeće značajke.