Povratak u školu: kako osposobiti ručne testere da rade s automatiziranim testovima

Četiri od pet kandidata za QA žele naučiti kako raditi s automatiziranim testovima. Ne mogu sve tvrtke ispuniti takve želje ručnih testera tijekom radnog vremena. Wrike je održao školu automatizacije za zaposlenike i mnogima ostvario tu želju. U ovoj školi sam sudjelovao upravo kao QA student.

Naučio sam raditi sa Seleniumom i sada samostalno podržavam određeni broj autotestova praktički bez vanjske pomoći. I, na temelju rezultata našeg zajedničkog iskustva i mojih osobnih zaključaka, pokušat ću izvesti samu formulu za najidealniju školu automatizacije.

Wrikeovo iskustvo u organizaciji škole

Kada je potreba za školom automatizacije postala jasna, njezina je organizacija pripala Stasu Davydovu, tehničkom voditelju automatizacije. Tko drugi nego on može objasniti zašto su krenuli s ovom inicijativom, jesu li postigli rezultate i žale li utrošenog vremena? Dajmo mu riječ:

— U 2016. napisali smo novi okvir za autotestove i napravili ga tako da je postalo lako pisati testove: pojavili su se normalni koraci, struktura je postala mnogo razumljivija. Došli smo na ideju: moramo uključiti sve koji žele pisati nove testove, a za lakše razumijevanje osmislili smo niz predavanja. Zajednički smo osmislili plan tema, svaki od budućih predavača uzeo je jednu za sebe i o njoj pripremio referat.

— Koje su poteškoće učenici imali?

— Prije svega, naravno, arhitektura. Bilo je mnogo pitanja o strukturi naših testova. U povratnoj informaciji puno je napisano o ovoj temi te smo morali održati dodatna predavanja kako bismo detaljnije objasnili.

— Je li se škola isplatila?

- Da definitivno. Zahvaljujući njoj, mnogo je ljudi bilo uključeno u pisanje testova, au prosjeku su u bolnici svi počeli bolje razumjeti što su autotestovi, kako se pišu i kako se pokreću. Opterećenje inženjera automatizacije također se smanjilo: sada primamo višestruko manje zahtjeva za pomoć pri analizi testova, budući da su se testeri i programeri počeli sami nositi s tim u gotovo svim situacijama. Pa, postoji nekoliko internih prednosti za odjel: stekli smo iskustvo u prezentacijama i predavanjima, zahvaljujući čemu su neki inženjeri automatizacije već uspjeli održati prezentacije na konferencijama, a također smo dobili moćan set videozapisa i prezentacija za novopridošlice.

U svoje osobno ime, dodati ću da je komunikacija između naših odjela pojednostavljena na krajnje smiješno laku razinu. Na primjer, sada praktički ne moram razmišljati o tome koje slučajeve i na kojoj razini atomičnosti automatizirati. Samim time svi zainteresirani vode punu brigu o pokrivenosti testom, koja je u stalnom porastu. Nitko od drugih ne zahtijeva nemoguće.

Općenito, utjecaj na rad timova svakako je pozitivan. Možda i kolege koji čitaju ovaj članak razmišljaju da naprave nešto slično? Tada će savjet biti jednostavan: isplati se ako su vam automatizirani testovi prioritet. Zatim ćemo govoriti o složenijem pitanju: kako sve to organizirati što je moguće ispravnije, tako da troškovi svih strana budu minimalni, a učinak maksimalan.

Savjeti za organiziranje

Škola je bila korisna, ali, kako je Stas priznao, bilo je poteškoća, zbog kojih je bilo potrebno dogovoriti dodatna predavanja. I kao nedavni student koji je uspoređivao sebe-u-neznanju i sebe-sada formulirao sam sljedeće korake kako bih stvorio, po mom mišljenju, idealan način da naučim testere da razumiju automatizirane testove.

Korak 0. Napravite rječnik

Naravno, ovaj korak nije potreban samo za osiguranje kvalitete. Međutim, želim to učiniti eksplicitnim: kodna baza automatizacije mora se čuvati u čitljivom obliku. Programski jezici - ne manje važno jezici, i od ovoga možete započeti ronjenje.

Povratak u školu: kako osposobiti ručne testere da rade s automatiziranim testovima

Ovdje je snimak zaslona prikaza zadataka s nazivima elemenata. Zamislimo da testirate taskview kao crnu kutiju i nikada u životu niste vidjeli Selenium. Što ovaj kod radi?

Povratak u školu: kako osposobiti ručne testere da rade s automatiziranim testovima

(Spoiler - zadatak se briše preko resta u ime administratora, a onda vidimo da postoji zapis o tome u streamu.)

Ovaj korak sam po sebi približava QAA i QA jezike. Timovima za automatizaciju lakše je objasniti rezultate izvođenja; ručni testeri moraju uložiti manje truda u stvaranje slučajeva: oni mogu biti manje detaljni. Ipak, svi se razumiju. Dobitke smo primili i prije nego što je sam trening počeo.

Korak 1. Ponovite fraze

Nastavimo paralelu s jezikom. Kad kao djeca učimo govoriti, ne polazimo od etimologije i semantike. Ponavljamo "mama", "kupi igračku", ali ne ulazimo odmah u protoindoeuropske korijene ovih riječi. Tako je i ovdje: nema smisla roniti u same dubine tehničkih značajki autotestova bez pokušaja da napišete nešto što radi.
Zvuči pomalo kontraintuitivno, ali djeluje.

U prvoj lekciji vrijedi dati osnovu o tome kako izravno pisati autotestove. Pomažemo u postavljanju razvojnog okruženja (u mom slučaju Intellij IDEA), objašnjavamo minimalna jezična pravila koja su potrebna za pisanje druge metode u postojećoj klasi koristeći postojeće korake. S njima napišemo jedan ili dva testa i zadamo im domaću zadaću, koju bih ja ovako formatirao: od majstora se odvaja grana, ali s nje je uklonjeno nekoliko testova. Ostali su samo njihovi opisi. Molimo testere da obnove te testove (naravno, ne kroz show diff).

Kao rezultat toga, onaj tko je slušao i učinio sve moći će:

  1. naučiti raditi sa sučeljem razvojnog okruženja: stvaranje grana, prečaca, predaja i guranja;
  2. ovladati osnovama strukture jezika i klasa: gdje umetnuti injekcije, a gdje importirati, zašto su potrebne napomene i kakvi se simboli tamo nalaze, osim koraka;
  3. razumjeti razliku između radnje, čekanja i provjere, gdje koristiti što;
  4. primijetite razliku između autotestova i ručnih provjera: u autotestovima možete povući jedan ili drugi rukovatelj umjesto izvršavanja radnji kroz sučelje. Na primjer, pošaljite komentar izravno u pozadinu umjesto da otvorite pregled zadataka, odaberete unos, upišete tekst i kliknete gumb Pošalji;
  5. formulirati pitanja na koja će se odgovoriti u sljedećem koraku.

Posljednja točka je vrlo važna. Ti se odgovori lako mogu dati unaprijed, ali važno je načelo podučavanja da se odgovori bez formuliranih pitanja ne pamte i ne koriste kada su konačno potrebni.

Bilo bi idealno kada bi mu u ovom trenutku inženjer automatizacije iz QA tima dodijelio zadatak da napiše nekoliko testova u borbi i dopustio mu da se preda svojoj podružnici.

Što ne davati:

  1. dublje poznavanje funkcionalnosti razvojnog okruženja i samog programskog jezika koje će biti potrebno samo pri samostalnom radu s ograncima. Neće se pamtiti, morat ćete to objasniti dvaput ili triput, ali mi cijenimo vrijeme inženjera automatizacije, zar ne? Primjeri: rješavanje sukoba, dodavanje datoteka u git, stvaranje klasa od nule, rad sa ovisnostima;
  2. sve vezano za xpath. Ozbiljno. O tome morate razgovarati odvojeno, jednom i vrlo koncentrirano.

Korak 2. Pažljiviji pregled gramatike

Sjetimo se snimke zaslona taskviewa iz koraka #0. Imamo korak koji se zove checkCommentWithTextExists. Naš ispitivač već razumije što ovaj korak radi i možemo pogledati unutar koraka i malo ga raščlaniti.

A unutra imamo sljedeće:

onCommentBlock(userName).comment(expectedText).should(displayed());

Gdje je onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Sada učimo reći ne "kupite igračku", već "kupite igračku u trgovini Detsky Mir, koja se nalazi u plavom ormariću na trećoj polici odozgo." Potrebno je objasniti da na element ukazujemo redom, od većih elemenata (stream -> blok s komentarima određene osobe -> onaj dio tog bloka gdje se nalazi navedeni tekst).

Ne, još uvijek nije vrijeme za razgovor o xpath-u. Samo kratko spomenite da su sve te upute opisane od strane njih i nasljeđivanje ide kroz njih. Ali moramo razgovarati o svim tim utakmicama i konobarima; oni se posebno odnose na ovaj korak i neophodni su da bismo razumjeli što se događa. Ali nemojte preopteretiti: vaš učenik kasnije može sam proučavati složenije tvrdnje. Najvjerojatnije bi trebali, waitUntil, displayed();, exist();, not(); trebali biti dovoljni.

Domaća zadaća je očita: grana u kojoj je izbačen sadržaj nekoliko koraka koji su potrebni za određeni broj testova. Pustite testere da ih obnove i neka ciklus ponovno bude zelen.

Osim toga, ako tim za testiranje ima ne samo nove značajke u svom radu, već i neke popravke grešaka, možete ga zamoliti da odmah napiše testove za te greške i objavi ih. Najvjerojatnije su svi elementi već opisani, možda nedostaje samo nekoliko koraka. Ovo će biti savršena vježba.

Korak 3. Potpuno uranjanje

Što potpuniji za ispitivača koji će nastaviti obavljati svoje izravne dužnosti. Konačno, moramo razgovarati o xpath-u.

Prvo, razjasnimo da su svi ti onCommentBlock i komentari opisani od strane njih.

Povratak u školu: kako osposobiti ručne testere da rade s automatiziranim testovima

Ukupno:

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Redoslijed priče je vrlo važan. Prvo, uzimamo bilo koji postojeći xpath i pokazujemo kako kartica elemenata sadrži jedan i samo jedan element. Zatim ćemo govoriti o strukturi: kada trebate koristiti WebElement i kada trebate stvoriti zasebnu datoteku za novi element. To će vam omogućiti da bolje razumijete nasljeđe.

Mora se izričito navesti da je jedan element cijeli taskview, sadrži podređeni element - cijeli tok, koji sadrži podređeni element - zasebni komentar itd. Podređeni elementi nalaze se unutar nadređenih elemenata i na stranici i u strukturi okvira za automatsko testiranje.

U ovom trenutku, publika je trebala jasno razumjeti kako se oni nasljeđuju i što se može unijeti nakon točke na onCommentBlock. U ovom trenutku objašnjavamo sve operatore: /, //, ., [] i tako dalje. U opterećenje dodajemo znanje o korištenju @class i druge potrebne stvari.

Povratak u školu: kako osposobiti ručne testere da rade s automatiziranim testovima

Učenici bi trebali razumjeti kako prevesti xpath na ovaj način. Za učvršćivanje – tako je, zadaća. Brišemo opise elemenata, neka obnove rad testova.

Zašto baš ovaj put?

Ne treba čovjeka opteretiti složenim znanjem, ali moramo sve objasniti odjednom, a to je teška dilema. Taj će nam put omogućiti da slušatelje prvo natjeramo da postavljaju pitanja i da nešto ne razumiju te da im odgovorimo već u sljedećem trenutku. Ako govorimo o cjelokupnoj arhitekturi, tada će do trenutka kada se analizira tema koraka ili xpath, njezini najvažniji dijelovi već biti zaboravljeni zbog svoje nerazumljivosti.

Međutim, neki od vas će vjerojatno moći podijeliti svoje iskustvo o tome kako se proces može još više optimizirati. Bit će mi drago pročitati slične prijedloge u komentarima!

Izvor: www.habr.com

Dodajte komentar