how implement efficient test automation agile world
Automatizacija u agilnosti vrlo je kritična.
Razmislite o mnogim značajkama koje se dodaju i isporučuju u svakom Sprintu. Mora postojati način da se osigura da novo dodana značajka ne utječe na postojeću funkcionalnost.
Zbog malog trajanja sprinta, praktički je nemoguće izvršiti cijelo odijelo svaki put kad se proizvod poveća na kraju sprinta. Imati automatizirano testno odijelo ovdje bi definitivno igralo veću ulogu.
Međutim, uvođenje i sazrijevanje u automatizaciju definitivno bi potrajalo. Početno ulaganje u planiranje i dizajniranje automatizacije definitivno bi se dugoročno isplatilo.
U ovom 3. dijelu napredne serije Agile Testing pokušavam navesti nekoliko uputa na temelju mog iskustva, dok u svoj projekt unosite automatizaciju.
Također, pročitajte 1. dio i 2. dio prvo da bi imali bolje razumijevanje teme.
Što ćete naučiti:
Što automatizirati u agilnom načinu rada?
Kad god planiramo uvesti automatizaciju u svoje projekte, većina nas odmah glasa za „Odijelo za testiranje dima“ ili „odijelo za regresijsko testiranje“ da bude najbolje kandidat za automatizaciju . Naravno da jesu, ali kad razmišljamo o piramidi za ispitivanje automatizacije, možemo zaključiti da je to samo gornji sloj piramide o kojem govorimo.
Osim gornjeg sloja još uvijek imamo i servisni sloj i jedinični sloj koji su važniji.
alati za testiranje mirnih web usluga
Pa koji testovi, osim testova dima i regresije, mogu biti dobri kandidati za automatizaciju?
# 1) Izrade i implementacije
U tradicionalnim okruženjima unaprijed smo definirali izrade koje mogu biti tjedne, dvotjedne ili ponekad čak i mjesečne. Jedan od razloga je taj što te implementacije trebaju vremena. Problem s ovim pristupom je taj što moramo pričekati unaprijed definirane datume da bismo ispravili pogreške ili implementirali nove značajke, pa dolazi do kašnjenja.
Drugi je razlog bio - dok su testeri završili s testiranjem i otkrili greške i nedostatke, programeri su prešli na različite dijelove implementacije i manje ih zanima rješavanje grešaka starije aplikacije. Ovaj pristup također odgađa vrijeme za stavljanje značajke na raspolaganje u proizvodnji.
Izgradnja i implementacija su entiteti koji se ponavljaju i ponekad su dosadni. Također mogu potrajati sati za postavljanje gradnje, što odgađa testiranje i na kraju povratne informacije. Budući da se ponavljajući zadatak, implementacije postaju dobar kandidat za automatizaciju.
Također pročitajte=> Postupak upravljanja puštanjem i postavljanjem
Neke od prednosti automatiziranog postavljanja gradnje su:
- Nema šanse za pogreške u postavljanju (mogu se izbjeći ljudske pogreške poput kopiranja netočne datoteke ili kopiranja datoteke na netočno mjesto)
- Bug / značajke dostupne su za testiranje čim se isprave
- Ispitivači dobivaju više vremena za testiranje
- Značajka je spremna za premještanje u proizvodnju za manje vremena
- Brze povratne informacije
# 2) Jedinstveni testovi / testovi komponenata
Već sam govorio o važnosti automatizacije sloja jedinice pomoću TDD pristup u mom zadnjem tutorialu .
To čini najniži sloj piramide, stoga temelj i svi temelji moraju biti čvrsti. Razvojni tim trebao bi surađivati i surađivati kako bi se veći dio testa uklopio u ovaj sloj.
# 3) API / testiranje web usluga
Web usluge su medij u kojem dvije aplikacije razmjenjuju podatke ili informacije u smislu zahtjeva i odgovora, bez zamaranja osnovnom arhitekturom ili tehnologijom. Jednostavnije rečeno - davanje zahtjeva i potvrđivanje odgovora ono je što obično radimo u testiranju web usluga.
Testiranje web usluga podrazumijeva pisanje programa za pozivanje tih metoda web usluga i provjeru vrijednosti / vrijednosti koje ona vraća. Možemo čak testirati usluge na razne permutacije i kombinacije. Neka se svi ispitni podaci nalaze u excel listu, a vaš program može pročitati podatke i nazvati uslugu koja se može testirati tako što će proslijediti test podatke kao parametar i potvrditi rezultate.
Ovo posebno ispitivanje dio je srednjeg sloja piramide. Većina funkcionalnog ispitivanja može se ugurati u ovaj sloj. Rješavanje nedostataka koji nastanu u ovom sloju postaje lako popraviti i oni se ne odgađaju sve dok UI ne postane dostupno.
koja se vrsta testa koristi za provjeru ispravnosti svih programa u aplikaciji?
# 4) Testiranje iza GUI-a
Automatizacija testiranja iza GUI-a relativno je lakša od automatizacije stvarnog GUI-a. Sljedeća je prednost što, bez obzira na promjene korisničkog sučelja, funkcionalnost ostaje netaknuta. Čak i ako se promijeni neki od elemenata korisničkog sučelja, funkcionalnost značajke se ne mijenja. Ova se tehnika uglavnom fokusira na poslovnu logiku i pravila.
Ispitni slučajevi uglavnom su napisani u tabličnom obliku ili u proračunskoj tablici, a ispisani su dijelovi / isječci koda koji prihvaćaju unos iz ovih tablica i vraćaju rezultate. Rezultati se generiraju odmah i pružaju sjajnu platformu za netehničke dionike da izvrše ova ispitivanja i dobiju očekivane rezultate. Jedan od alata koji se koristi za postizanje ove tehnike je Fitness .
# 5) Nefunkcionalno ispitivanje
Ovaj nefunkcionalna tehnika ispitivanja u osnovi uključuje ispitivanje opterećenja, performansi i stresa. Na tržištu su dostupni različiti alati koji se mogu koristiti za automatizaciju ovih testova.
# 6) Usporedbe podataka
Mnoga naša ispitivanja zahtijevaju da usporedimo podatkovne datoteke, uključujući tekstualne datoteke, CSV ili excel datoteke
- Te se datoteke mogu usporediti s osnovnim crtama za provjeru valjanosti podataka
- Usporedbe mogu biti istih podataka, ali različitog formata. To se u osnovi događa kada imamo dvije iste datoteke generirane iz dva različita izvora
Te se usporedbe mogu ponavljati, pa stoga i automatizirati.
# 7) Pretraživanje
Traženje određenog entiteta iz velike gomile datoteka također može biti zamorno i Bog nam pomaže ako je to ponavljajući zadatak. Jedan od primjera je pretraživanje datoteka dnevnika. Ako je ovo i dosadan i ponavljajući zadatak, trebali bismo razmisliti o njegovom automatiziranju.
# 8) Ponavljajući zadaci
Svaki zadatak koji započinje interakcijom s krajnjim korisnicima ili pisanjem priča da bi se razvio, ako se ponavlja, treba uzeti u obzir u automatizaciji. Morali bismo razumjeti da automatizacija ne znači da u nju mora biti uključen sofisticirani alat / tehnologija. To može biti jednostavan VB makro ili Java program s Javascriptom za rješavanje svrhe.
Gdje započeti?
Ne postoje točke ili detaljni vodič koji govori odakle započeti automatizaciju. Pokretanje automatizacije za tim zahtijeva od vas da pametujete i primijenite duboke misli o tome koje aspekte želite automatizirati, ili što je krajnji cilj automatizacije?
Možete započeti sa:
- Identificiranje ponavljajućih zadataka,
- Utvrđivanje područja boli u aplikaciji
- Utvrđivanje izazova ispitivanja
Ako nemate automatizaciju u projektu / timu obilaska, onda vjerojatno možete ići na višeslojni pristup gdje se najprije mogu automatizirati jedinstvena ispitivanja. To bi vam omogućilo najveći ROI.
Istodobno, testeri mogu početi raditi na test odijelu za dim, a zatim i na regresiji. Jednom kada tim stekne vještine i osjeća se ugodno, postupno krenite prema automatizaciji ostalih ponavljajućih zadataka.
Nemojte izravno ulaziti u kupnju novog alata bez procjene svojih potreba. Kao što sam ranije rekao, jednostavni program ili makronaredba mogu vam riješiti svrhu automatizacije nekih ponavljajućih zadataka. Dakle, prije nego što odlučite kupiti alat, učiniti POC i procijenite bi li taj alat bio učinkovit za upotrebu.
Molimo vas da prođete kroz ove dokumente u kojima sam pružio više detalja o tome kako odabrati ispravne ispitne slučajeve za automatizaciju i neke uvide u procjenu napora u automatizaciji u sljedećim člancima priručnik za izazove procesa automatizacije i test procjena projekta automatizacije selena.
Nakon što se dovrši opseg automatizacije i alata, slijedi dizajniranje okvira.
Zapamtite, u Agileu je okvir razvijen. NEMOJTE prvo ciljati dizajnirati cijeli okvir, a zatim ga implementirati. Dizajnirajte i implementirajte MVP (minimalno održivi proizvod), a zatim poboljšajte postojeći okvir tako da uključuje više značajki. Također morate primijeniti dobru praksu kodiranja i razvoja ako želite da vaš paket automatizacije bude robustan.
Neki najbolji primjeri iz prakse
- Ne ciljajte na automatizaciju 100% odjednom. Počnite s malim. Zapamtite da je to proces koji se razvija
- Slijedite iste agilne prakse koje slijedite za bilo koji razvoj softvera. Automatizacija također zahtijeva pravilno planiranje i projektiranje. Ne biste željeli povećavati svoje tehničke dugove kada automatizirate
- Stvorite zaostatak za automatizacijom testa. Taj zaostatak može se kretati od primjene nove značajke do poboljšanja postojeće značajke. Dajte bodove pričama svojim identificiranim predmetima i dodijelite im ih u skladu s tim. Odnesite ove zaostale stavke na svoj Sprint i pratite ih pomoću Kanban ploče
- Napišite kriterije prihvaćanja za svoje priče o automatizaciji. Ovi kriteriji prihvaćanja mogu obuhvaćati:
- Integracija paketa za testiranje s CI
- Prenošenje odijela na centralizirano mjesto
- Pošaljite rezultate e-poštom
- Omogućavanje slanja datoteka dnevnika pogrešaka kada test ne uspije
- Bilo koji drugi kriterij….
- Ne trošite vrijeme na procjenu novog alata. Možete stvoriti prioritetni kontrolni popis onoga što sve želite od novog alata i odrediti vremensku traku za njegovu procjenu. Ako ne vidite svoje rezultate u predviđenom vremenu, prijeđite na sljedeći
- Donesite promišljenu odluku o tome što automatizirati. Nije svaki dio automatizacije učinkovit i donosi pozitivan ROI. Ne automatizirajte samo radi automatizacije
- Iskoristite odgovarajuće razvojno okruženje. Ne držite kod kod svog lokalnog. Imajte spremište za čuvanje koda i stvorite naviku provjere koda na kraju dana
- Na sličan način pokušajte izvršavati svoje automatizirane testove s centraliziranog mjesta. Neka osoba bude neovisna. Trebalo bi da bilo tko iz tima može pokrenuti skripte sa svog stroja, a rezultati se dobivaju putem e-pošte
Koji su agilni principi koji se mogu primijeniti na automatizaciju?
Nekoliko vrlo jednostavnih savjeta:
- Neka stvari budu jednostavne. Učini što je potrebno. Vidio sam mnogo slučajeva kada isporučujemo primjenu presvučenu šećerom što automatizaciju čini nepotrebno kompliciranom. Izbjegavajmo stvari koje nisu potrebne
- Raditi jednostavne stvari ne znači raditi najlakše stvari. To znači poduzimati dječje korake za postizanje vaših ciljeva automatizacije. Možda ćete zauzeti jednostavnu značajku za automatizaciju, ali može se dogoditi da se pokaže da je implementacija automatizacije složena
- Primijenite pristup cijelog tima . Vjerujem da su svi ispitivači u agilnom timu. Ne ograničavajmo posao automatizacije ni samo ispitivačima ni samo programerima. Svaka od disciplina mora ući jedna u drugu kako bi postigla automatizaciju projekta. Ovaj bi pristup također bio učinkovit za rješavanje bilo kojeg tehničkog problema koji dolazi s provedbom
- Okvir je razvijen u Agileu . Ne pokušavajte pružiti previše značajki koje mogu nepotrebno učiniti dio automatizacije složenim
- Odvojite vrijeme da to učinite kako treba. Odvojite malo vremena da ga pravilno dizajnirate kako biste izbjegli tehničke dugove
- Primajte česte povratne informacije
- Primijenite odgovarajuće standarde kodiranja i praksu. Dizajn bi trebao biti jednostavan, primijeniti koncepte OOPS-a i nastojati da testovi budu nezavisni jedni od drugih. Uzmite u obzir čimbenike poput 'održavanja' testne odijela
Vidim li neke izazove dok automatiziram u Agileu?
Automatizacija u agilnom svijetu dolazi s vlastite izazove :
- Moramo stvarno dobro planirati. Odlučivanje o odgovarajućem ispitnom paketu, alatu, okviru i pristupu, svi trebaju odgovarajuću strategiju. Međutim, trebali bismo se sjetiti da NE planiramo previše. Imajte na umu MVP (minimalno održivi proizvod)
- Kompromitirajući kvalitetu koda jer želimo brzo isporučiti: Moramo imati na umu da se tehnički dugovi dobro zadržavaju i u automatizaciji
- Tim većinu vremena timovi ne slijede 'Pristup cijelog tima' i prepuštaju cjelokupnu odgovornost kodiranja i održavanja automatiziranog paketa za testere, što dodaje odgovornost testera
- Automatizacija funkcionalnih testova teža je od automatizacije korisničkog sučelja
Među svim tim izazovima, najkritičniji je izazov nadograditi vještine testera.
Raditi i održavati automatizaciju za tim gotovo je poput programske (razvojne) aktivnosti koju programeri (programeri) rade. Važna je ne samo implementacija, već i integracija automatiziranog odijela u CI i zahtijeva da testeri nauče i usvoje nove vještine i nauče nove alate i tehnologije.
Neki alati otvorenog koda koji se uklapaju u Agile
- Selen WebDriver - Za korisničko sučelje
- Selen Grid - Za paralelno izvršavanje
- Krastavac - za BDD
- JMeter - Za ispitivanje performansi
- SAPUN - Za web usluge
- WireMock - Testiranje web usluga kada web usluga nije dostupna.
- Epohe - za mobitel
Dopustite mi da zaključim s poznatim Agile test kvadrantima:
Kvadrant 1 je test jedinice i komponenata koji se mogu automatizirati TDD pristupom.
stvari koje možete raditi s c ++-om
Kvadrant 2 govori o ispitivanju funkcionalnosti, gdje možemo primijeniti BDD pristup.
Kvadrant 3 jedini je kvadrant koji ima opseg ručnog ispitivanja.
Kvadrant 4 u osnovi govori o testiranju koje se mogu postići nekim alatima. Ovo se brine o testovima opterećenja, stres testovima, ispitivanjima glasnoće i sigurnosnim testovima.
Zaključak
Postoji puno dometa automatizacije, osim testova dima i testova regresije. Stoga se moramo osloboditi koncepta ograničavanja automatizacije samo na ove vrste testiranja, što zauzvrat znači da skup vještina ispitivača u Agileu zahtijeva više od pukog pronalaženja bugova i nedostataka.
Ispitivači moraju biti više suradljivi i izoštriti svoje vještine programiranja / automatizacije. Ako se automatizira sve više testova, to bi testerima dalo više vremena da se uključe u sofisticiranije i zahtjevnije zadatke.
O autoru: Ovaj je članak član STH tima Shilpa. Posljednjih 10 i više godina radi na polju testiranja softvera na domenama poput internetskog oglašavanja, investicijskog bankarstva i telekoma.
Molimo podijelite svoje komentare i razmišljanja u nastavku.
Preporučena literatura
- Vodič za AutoIt - Automatsko preuzimanje, instaliranje i osnovna skripta za AutoIt
- Izgubljuju li ispitivači stisak zbog testiranja zbog automatizacije?
- Izazovi ručnog i automatiziranog ispitivanja
- Najbolji alati za testiranje softvera 2021. (Alati za automatizaciju ispitivanja kvalitete)
- Proces automatskog testiranja u 10 koraka: kako započeti automatsko testiranje u svojoj organizaciji
- Jeste li stručnjak za ručno ili automatizirano testiranje? Radite skraćeno za nas!
- 11 najboljih alata za automatizaciju za testiranje Android aplikacija (Android Tools Testing Tools)
- Top 10+ najboljih knjiga za testiranje softvera (knjige za ručno testiranje i automatizaciju)