Nazaj v šolo: kako usposobiti ročne preizkuševalce za delo z avtomatiziranimi testi

Štirje od petih kandidatov za QA se želijo naučiti delati z avtomatiziranimi testi. Vsa podjetja ne morejo uresničiti takšnih želja ročnih testerjev med delovnim časom. Wrike je izvedel šolo avtomatizacije za zaposlene in mnogim uresničil to željo. Te šole sem se udeležila ravno kot QA študentka.

Naučil sem se delati s Selenom in sedaj samostojno podpiram določeno število samodejnih testov tako rekoč brez zunanje pomoči. In na podlagi rezultatov naših skupnih izkušenj in mojih osebnih zaključkov bom poskušal izpeljati samo formulo za najbolj idealno šolo avtomatizacije.

Wrikove izkušnje pri organizaciji šole

Ko je potreba po šoli avtomatizacije postala jasna, je njeno organizacijo prevzel Stas Davydov, tehnični vodja avtomatizacije. Kdo drug kot on lahko pojasni, zakaj so prišli na to pobudo, ali so dosegli rezultate in ali jim je žal porabljenega časa? Dajmo mu besedo:

— Leta 2016 smo napisali novo ogrodje za samodejne teste in naredili tako, da je pisanje testov postalo enostavno: pojavili so se običajni koraki, struktura je postala veliko bolj razumljiva. Porodila se nam je ideja: vključiti moramo vse, ki želijo pisati nove teste, in za lažje razumevanje smo ustvarili serijo predavanj. Skupaj smo naredili načrt tem, vsak od bodočih predavateljev si je vzel eno zase in o njej pripravil poročilo.

— Kakšne težave so imeli učenci?

— Predvsem seveda arhitektura. Bilo je veliko vprašanj o strukturi naših testov. V povratnih informacijah je bilo veliko napisanega na to temo in morali smo imeti dodatna predavanja, da bi podrobneje pojasnili.

— Se je šola obrestovala?

- Da, vsekakor. Zahvaljujoč njej je veliko ljudi sodelovalo pri pisanju testov in v povprečju so v bolnišnici vsi začeli bolje razumeti, kaj so avtotesti, kako se pišejo in kako se sprožijo. Zmanjšala se je tudi obremenitev inženirjev za avtomatizacijo: zdaj prejmemo večkrat manj prošenj za pomoč pri analizi testov, saj so se preizkuševalci in razvijalci tega v skoraj vseh situacijah začeli spopadati sami. No, notranjih prednosti za oddelek je več: pridobili smo izkušnje s predstavitvami in predavanji, zahvaljujoč katerim je nekaterim inženirjem avtomatizacije že uspelo izvesti predstavitve na konferencah, prejeli pa smo tudi zmogljiv nabor videoposnetkov in predstavitev za vključevanje novincev.

V svojem imenu bom dodal, da smo komunikacijo med našimi oddelki poenostavili na naravnost smešno enostavno raven. Na primer, zdaj mi praktično ni treba razmišljati o tem, katere primere in na kateri ravni atomičnosti naj avtomatiziram. Posledično vsi zainteresirani v celoti skrbijo za pokritost testov, ki nenehno raste. Nihče od drugih ne zahteva nemogočega.

Na splošno je vpliv na delo timov vsekakor pozitiven. Morda tudi kolegi, ki berejo ta članek, razmišljajo, da bi naredili kaj podobnega? Potem bo nasvet preprost: splača se, če so avtomatizirani testi za vas prioriteta. Nato bomo govorili o bolj zapletenem vprašanju: kako vse to organizirati čim bolj pravilno, tako da so stroški vseh strank minimalni in rezultat največji.

Nasveti za organizacijo

Šola je bila koristna, vendar je bilo, kot je priznal Stas, nekaj težav, zaradi katerih je bilo treba organizirati dodatna predavanja. In kot nedavni študent, ki je primerjal sebe-v-nevednosti in sebe-zdaj, sem oblikoval naslednje korake, da bi ustvaril, po mojem mnenju, idealen način za učenje preizkuševalcev razumevanja avtomatiziranih testov.

Korak 0. Ustvarite slovar

Seveda ta korak ni potreben le za zagotavljanje kakovosti. Vendar pa želim jasno povedati: zbirko kod za avtomatizacijo je treba hraniti v berljivi obliki. Programski jeziki - nenazadnje jezikov, in od tega lahko začnete svoj potop.

Nazaj v šolo: kako usposobiti ročne preizkuševalce za delo z avtomatiziranimi testi

Tukaj je posnetek zaslona opravilnega pogleda z imeni elementov. Predstavljajmo si, da preizkušate taskview kot črno skrinjico in še nikoli v življenju niste videli Selena. Kaj počne ta koda?

Nazaj v šolo: kako usposobiti ročne preizkuševalce za delo z avtomatiziranimi testi

(Spoiler - opravilo se izbriše prek počitka v imenu skrbnika, nato pa vidimo, da je v toku zapis o tem.)

Samo ta korak zbliža jezika QAA in QA. Ekipe za avtomatizacijo lažje razložijo rezultate zagona; ročni preizkuševalci morajo porabiti manj truda za ustvarjanje primerov: lahko so manj podrobni. Vseeno se vsi razumejo. Dobitke smo prejeli še preden se je sam trening začel.

Korak 1. Ponovite fraze

Nadaljujmo vzporednico z jezikom. Ko se kot otroci učimo govoriti, ne izhajamo iz etimologije in semantike. Ponavljamo "mama", "kupi igračo", vendar ne gremo takoj v protoindoevropske korenine teh besed. Tako je tudi tukaj: nima smisla se potapljati v same globine tehničnih značilnosti samodejnih testov, ne da bi poskušali napisati nekaj, kar deluje.
Sliši se nekoliko kontraintuitivno, vendar deluje.

V prvi lekciji je vredno dati osnovo, kako neposredno napisati samodejne teste. Pomagamo pri nastavitvi razvojnega okolja (v mojem primeru Intellij IDEA), razložimo minimalna jezikovna pravila, ki so potrebna za pisanje druge metode v obstoječem razredu z uporabo obstoječih korakov. Z njimi napišemo enega ali dva testa in jim damo domačo nalogo, ki bi jo jaz oblikoval takole: od mojstra se je odcepila veja, a ji je bilo odstranjenih več testov. Ostali so samo njihovi opisi. Preizkuševalce prosimo, da obnovijo te teste (seveda ne prek show diff).

Posledično bo tisti, ki je poslušal in naredil vse, lahko:

  1. naučite se delati z vmesnikom razvojnega okolja: ustvarjanje vej, hitrih tipk, potrditev in potiskanja;
  2. obvladati osnove strukture jezika in razredov: kam vstaviti injekcije in kam uvoziti, zakaj so potrebne opombe in kakšni simboli se tam nahajajo poleg korakov;
  3. razumejo razliko med dejanjem, čakanjem in preverjanjem, kje uporabiti kaj;
  4. opazite razliko med samodejnimi testi in ročnimi preverjanji: pri samodejnih testih lahko povlečete enega ali drugega upravljalnika, namesto da izvajate dejanja prek vmesnika. Na primer, pošljite komentar neposredno v zaledje, namesto da odprete pogled opravil, izberete vnos, vtipkate besedilo in kliknete gumb Pošlji;
  5. oblikujte vprašanja, na katera boste odgovorili v naslednjem koraku.

Zadnja točka je zelo pomembna. Te odgovore je mogoče zlahka podati vnaprej, vendar je pomembno načelo poučevanja, da se odgovori brez oblikovanih vprašanj ne zapomnijo in ne uporabijo, ko so končno potrebni.

Idealno bi bilo, če bi mu v tem času inženir za avtomatizacijo iz ekipe QA dodelil nalogo, da napiše nekaj testov v bitki in mu dovolil, da se podpre v svojo vejo.

Česa ne dajati:

  1. bolj poglobljeno poznavanje funkcionalnosti razvojnega okolja in samega programskega jezika, ki bo potrebno le pri samostojnem delu z vejami. Ne bo si zapomnil, razložiti ga boste morali dvakrat ali trikrat, vendar cenimo čas inženirjev za avtomatizacijo, kajne? Primeri: reševanje konfliktov, dodajanje datotek v git, ustvarjanje razredov iz nič, delo z odvisnostmi;
  2. vse v zvezi z xpath. resno O tem se morate pogovoriti ločeno, enkrat in na zelo koncentriran način.

2. korak. Pobližje si oglejte slovnico

Spomnimo se posnetka zaslona taskview iz koraka #0. Imamo korak, imenovan checkCommentWithTextExists. Naš preizkuševalec že razume, kaj ta korak naredi, in lahko pogledamo v notranjost koraka ter ga nekoliko razčlenimo.

In v notranjosti imamo naslednje:

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

Kje je onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Zdaj se naučimo reči ne "kupite igračo", ampak "kupite igračo v trgovini Detsky Mir, ki se nahaja v modri omari na tretji polici od zgoraj." Treba je pojasniti, da na element kažemo zaporedno, od večjih elementov (tok -> blok s komentarji določene osebe -> tisti del tega bloka, kjer sedi določeno besedilo).

Ne, še ni čas za pogovor o xpath. Samo na kratko omenite, da so vsa ta navodila opisali oni in dedovanje poteka preko njih. Moramo pa govoriti o vseh teh tekmah in natakarjih; nanašajo se posebej na ta korak in so potrebni za razumevanje, kaj se dogaja. Vendar ne preobremenjujte: vaš učenec lahko kasneje sam preuči bolj zapletene trditve. Najverjetneje bi moralo zadostovati should, waitUntil, displayed();, exist();, not();

Domača naloga je očitna: veja, v kateri je bila odstranjena vsebina več korakov, ki so potrebni za določeno število testov. Naj jih preizkuševalci obnovijo in poskrbijo, da bo tek spet zelen.

Poleg tega, če skupina za testiranje nima le novih funkcij pri svojem delu, ampak tudi nekaj popravkov napak, ga lahko prosite, naj takoj napiše teste za te napake in jih izda. Najverjetneje so vsi elementi že opisani, manjka lahko le nekaj korakov. To bo popolna vadba.

Korak 3. Popolna potopitev

Čim bolj popoln za testerja, ki bo še naprej opravljal svoje neposredne naloge. Končno se moramo pogovoriti o xpath.

Najprej naj pojasnimo, da vse te onCommentBlock in komentarje opisujejo oni.

Nazaj v šolo: kako usposobiti ročne preizkuševalce za delo z avtomatiziranimi testi

Skupaj:

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

Vrstni red zgodbe je zelo pomemben. Najprej vzamemo kateri koli obstoječi xpath in pokažemo, kako zavihek Elements vsebuje en in samo en element. Nato bomo govorili o strukturi: kdaj morate uporabiti WebElement in kdaj morate ustvariti ločeno datoteko za nov element. To vam bo omogočilo boljše razumevanje dedovanja.

Izrecno je treba navesti, da je posamezen element celoten pogled opravila, vsebuje podrejeni element - celoten tok, ki vsebuje podrejeni element - ločen komentar itd. Podrejeni elementi so znotraj nadrejenih elementov na strani in v strukturi ogrodja samodejnega testiranja.

Na tej točki bi moralo občinstvo dobro razumeti, kako se dedujejo in kaj se lahko vnese za piko pri onCommentBlock. Na tej točki pojasnjujemo vse operatorje: /, //, ., [] in tako naprej. V obremenitev dodamo znanje o uporabi @class in druge potrebne stvari.

Nazaj v šolo: kako usposobiti ročne preizkuševalce za delo z avtomatiziranimi testi

Učenci bi morali razumeti, kako prevesti xpath na ta način. Za utrjevanje – tako je, domača naloga. Izbrišemo opise elementov, pustimo, da obnovijo delo testov.

Zakaj prav ta pot?

Človeka ne smemo preobremeniti s kompleksnim znanjem, ampak moramo razložiti vse naenkrat, kar je težka dilema. Ta pot nam bo omogočila, da poslušalce najprej pripravimo do tega, da postavljajo vprašanja in nečesa ne razumejo, in jim že naslednji trenutek odgovorimo. Če govorimo o celotni arhitekturi, potem do trenutka, ko se analizira tema korakov ali xpath, bodo njeni najpomembnejši deli že pozabljeni zaradi svoje nerazumljivosti.

Nekateri izmed vas pa boste verjetno lahko delili svoje izkušnje o tem, kako je mogoče proces še bolj optimizirati. Z veseljem bom prebrala podobne predloge v komentarjih!

Vir: www.habr.com

Dodaj komentar