Povratak u školu: kako obučiti ručne testere da se bave automatiziranim testovima

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

Naučio sam kako da radim sa Selenom i sada samostalno podržavam određeni broj autotestova gotovo bez pomoći spolja. I, na osnovu rezultata našeg zajedničkog iskustva i mojih ličnih zaključaka, pokušaću da izvedem samu formulu za najidealniju školu automatizacije.

Wrikeovo iskustvo u organizaciji škole

Kada je postala jasna potreba za školom automatizacije, njena organizacija je pripala Stasu Davidovu, tehničkom vođi automatizacije. Ko drugi osim njega može objasniti zašto su došli na ovu inicijativu, da li su postigli rezultate i da li žale za utrošenim vremenom? Prepustimo mu riječ:

— 2016. smo napisali 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 da pišu nove testove, a da bismo lakše razumjeli, napravili smo seriju predavanja. Zajednički smo osmislili plan tema, svaki od budućih predavača je uzeo jednu za sebe i pripremio izvještaj o tome.

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

— Uglavnom, naravno, arhitektura. Bilo je mnogo pitanja o strukturi naših testova. U povratnim informacijama, dosta se pisalo o ovoj temi i morali smo održati dodatna predavanja kako bismo detaljnije objasnili.

— Da li se škola isplatila?

- Da, definitivno. Zahvaljujući njoj, puno ljudi je bilo uključeno u pisanje testova i, u prosjeku, u bolnici su svi počeli bolje razumjeti šta su autotestovi, kako su napisani i kako se pokreću. Opterećenje inženjera automatizacije je također smanjeno: sada primamo višestruko manje zahtjeva za pomoć u 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 kojima su neki inženjeri automatizacije već uspjeli napraviti prezentacije na konferencijama, a dobili smo i moćan set videa i prezentacija za onboarding novopridošlica.

U svoje lično ime, dodaću da je komunikacija između naših odjela pojednostavljena na potpuno smiješno lak nivo. Na primjer, sada praktički ne moram razmišljati o tome koje slučajeve i na kojem nivou atomičnosti da automatizujem. Kao rezultat toga, svi zainteresovani u potpunosti vode računa o pokrivenosti testom, koja je u stalnom porastu. Niko od drugih ne zahteva nemoguće.

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

Savjeti za organiziranje

Škola je bila korisna, ali je, kako je priznao Stas, bilo nekih poteškoća, zbog kojih je bilo potrebno dogovoriti dodatna predavanja. I tek sam kao student koji je nedavno upoređivao sebe – u neznanju i sebe – sada sam formulisao sledeće korake da stvorim, po mom mišljenju, idealan način da naučim testere da razumeju automatizovane testove.

Korak 0. Kreirajte rječnik

Naravno, ovaj korak je potreban ne samo za QA. Međutim, želim to eksplicitno naglasiti: automatska kodna baza mora se čuvati u čitljivom obliku. Programski jezici - ne manje važno jezicima, i od toga možete započeti svoje ronjenje.

Povratak u školu: kako obučiti ručne testere da se bave automatiziranim testovima

Evo snimka ekrana prikaza zadataka s imenima elemenata. Zamislimo da testirate taskview kao crnu kutiju i nikada u životu niste vidjeli Selenium. Šta radi ovaj kod?

Povratak u školu: kako obučiti ručne testere da se bave automatiziranim testovima

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

Sam ovaj korak zbližava QAA i QA jezike. Timovima za automatizaciju je lakše objasniti rezultate pokretanja; ručni testeri moraju uložiti manje truda na kreiranje slučajeva: oni mogu biti manje detaljni. Ipak, svi se međusobno razumiju. Dobitke smo dobili i prije nego što je trening počeo.

Korak 1. Ponovite fraze

Nastavimo paralelu sa jezikom. Kada učimo govoriti kao djeca, ne polazimo od etimologije i semantike. Ponavljamo "mama", "kupi igračku", ali ne ulazimo odmah u protoindoevropske korijene ovih riječi. Tako je i ovdje: nema smisla roniti u samu dubinu tehničkih karakteristika autotestova bez pokušaja da napišete nešto što funkcionira.
Zvuči malo kontraintuitivno, ali funkcionira.

U prvoj lekciji vrijedi dati osnovu o tome kako direktno pisati autotestove. Pomažemo u postavljanju razvojnog okruženja (u mom slučaju Intellij IDEA), objašnjavamo minimalna jezička pravila koja su neophodna za pisanje druge metode u postojećoj klasi koristeći postojeće korake. Sa njima pišemo jedan ili dva testa i dajemo im domaći zadatak, koji bih ja ovako formatirao: grana se odvojila od mastera, ali je nekoliko testova uklonjeno iz nje. Ostali su samo njihovi opisi. Tražimo od testera da vrate ove testove (naravno, ne kroz show diff).

Kao rezultat toga, onaj koji je sve slušao i uradio moći će:

  1. naučite raditi sa interfejsom razvojnog okruženja: kreiranje grananja, interventnih tastera, urezivanja i pritiska;
  2. ovladati osnovama strukture jezika i klasa: gde ubaciti injekcije, a gde uvesti, zašto su potrebne napomene i kakvi se simboli tu nalaze, osim koraka;
  3. razumjeti razliku između akcije, čekanja i provjere, gdje šta koristiti;
  4. primijetite razliku između autotestova i ručnih provjera: u autotestovima možete povući jedan ili drugi rukovalac umjesto da izvršavate radnje kroz interfejs. Na primjer, pošaljite komentar direktno backendu umjesto otvaranja prikaza zadataka, odabira unosa, kucanja teksta i klika na dugme Pošalji;
  5. formulirati pitanja na koja će se odgovoriti u sljedećem koraku.

Poslednja tačka je veoma važna. Ovi odgovori se lako mogu dati unaprijed, ali je važan princip nastave da se odgovori bez formulisanih 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 dao zadatak da napiše nekoliko testova u borbi i dozvolio mu da se preda svojoj grani.

Šta ne dati:

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

Korak 2. Pažljivije sagledavanje gramatike

Prisjetimo se snimka zaslona prikaza zadataka iz koraka #0. Imamo korak koji se zove checkCommentWithTextExists. Naš tester već razumije šta ovaj korak radi i možemo pogledati unutar koraka i malo ga razložiti.

A unutra imamo sledeće:

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

Gdje je onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Sada učimo da kažemo ne "kupi igračku", već "kupi igračku iz prodavnice Detsky Mir, koja se nalazi u plavom ormariću na trećoj polici odozgo." Potrebno je objasniti da na element ukazujemo sekvencijalno, od većih elemenata (stream -> blok sa komentarima određene osobe -> onaj dio ovog bloka gdje se nalazi navedeni tekst).

Ne, još uvijek nije vrijeme za razgovor o xpathu. Samo ukratko spomenite da su sve ove upute opisali oni i da nasljeđivanje ide kroz njih. Ali moramo razgovarati o svim tim šibicama i konobarima; oni se posebno odnose na ovaj korak i neophodni su da bismo razumjeli šta se dešava. Ali nemojte se preopteretiti: vaš učenik kasnije može samostalno proučavati složenije tvrdnje. Najvjerovatnije bi trebalo, čekatiUntil, displayed();, exist();, not(); bi trebalo biti dovoljno.

Domaća zadaća je očigledna: grana u kojoj je uklonjen sadržaj nekoliko koraka koji su neophodni za određeni broj testova. Neka ih testeri vrate i neka trčanje ponovo bude zeleno.

Dodatno, ako tim za testiranje ima ne samo nove funkcije u svom radu, već i neke ispravke grešaka, možete ga zamoliti da odmah napiše testove za ove greške i objavi ih. Najvjerovatnije su svi elementi već opisani, možda nedostaje samo nekoliko koraka. Ovo će biti savršen trening.

Korak 3. Potpuno uranjanje

Što kompletniji za testera koji će nastaviti da obavlja svoje direktne dužnosti. Konačno, moramo razgovarati o xpath-u.

Prvo, razjasnimo da su svi ovi onCommentBlock i komentari opisani njima.

Povratak u školu: kako obučiti ručne testere da se bave automatiziranim testovima

Ukupno:

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

Redosled priče je veoma važan. Prvo, uzimamo bilo koji postojeći xpath i pokazujemo kako kartica elemenata sadrži jedan i samo jedan element. Zatim ćemo razgovarati o strukturi: kada trebate koristiti WebElement i kada trebate kreirati zasebnu datoteku za novi element. Ovo će vam omogućiti bolje razumijevanje nasljeđivanja.

Mora se eksplicitno navesti da je jedan element cijeli taskview, sadrži podređeni element - cijeli stream, koji sadrži podređeni element - poseban komentar itd. Podređeni elementi su unutar nadređenih elemenata i na stranici i u strukturi okvira za autotest.

U ovom trenutku, publika je trebala čvrsto razumjeti kako se nasljeđuje i šta se može unijeti nakon tačke na onCommentBlock. U ovom trenutku objašnjavamo sve operatore: /, //, ., [] i tako dalje. U opterećenje dodajemo znanje o upotrebi @class i druge neophodne stvari.

Povratak u školu: kako obučiti ručne testere da se bave automatiziranim testovima

Učenici bi trebali razumjeti kako da prevedu xpath na ovaj način. Za konsolidaciju - tako je, domaći zadatak. Brišemo opise elemenata, pustimo ih da vrate rad testova.

Zašto baš ovaj put?

Čoveka ne treba opterećivati ​​kompleksnim znanjem, već moramo sve objasniti odjednom, a to je teška dilema. Ovaj put će nam omogućiti da prvo nateramo slušaoce da postavljaju pitanja, a ne razumeju nešto i da odgovorimo na njih već sledećeg trenutka. Ako govorite o cjelokupnoj arhitekturi, onda kada se analizira tema koraka ili xpath-a, najvažniji dijelovi će već biti zaboravljeni zbog njihove nerazumljivosti.

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

izvor: www.habr.com

Dodajte komentar