Grįžti į mokyklą: kaip išmokyti rankinius testuotojus atlikti automatizuotus testus

Keturi iš penkių QA kandidatų nori išmokti dirbti su automatizuotais testais. Ne visos įmonės gali išpildyti tokius rankinių testerių norus darbo valandomis. Wrike surengė automatizavimo mokyklą darbuotojams ir įgyvendino šį norą daugeliui. Šioje mokykloje dalyvavau būtent kaip QA studentė.

Išmokau dirbti su Selenu ir dabar savarankiškai palaikau tam tikrą skaičių automatinių testų, praktiškai be pašalinės pagalbos. Ir, remdamasis mūsų bendros patirties rezultatais ir savo asmeninėmis išvadomis, pabandysiu išvesti pačią idealiausios automatikos mokyklos formulę.

Wrike'o patirtis organizuojant mokyklą

Paaiškėjus automatikos mokyklos poreikiui, jos organizavimas atiteko Stasui Davydovui, techniniam automatikos vadovui. Kas kitas, jei ne jis, gali paaiškinti, kodėl jie sugalvojo šią iniciatyvą, ar pasiekė rezultatų ir ar nesigaili sugaišto laiko? Suteikime jam žodį:

— 2016 metais parašėme naują automatinių testų karkasą ir padarėme taip, kad testus rašyti tapo lengva: atsirado įprasti žingsneliai, struktūra tapo daug suprantamesnė. Sugalvojome idėją: reikia įtraukti visus norinčius rašyti naujus testus, o kad būtų lengviau suprasti, sukūrėme paskaitų ciklą. Bendrai sugalvojome temų planą, kiekvienas būsimasis dėstytojas pasiėmė po vieną sau ir parengė pranešimą.

– Kokių sunkumų turėjo mokiniai?

– Daugiausia, žinoma, architektūra. Buvo daug klausimų dėl mūsų testų struktūros. Atsiliepimuose šia tema buvo daug parašyta ir teko surengti papildomas paskaitas, kad paaiškintume plačiau.

– Ar mokykla pasiteisino?

- Taip, būtinai. Jos dėka daug žmonių dalyvavo rašant testus, o vidutiniškai ligoninėje visi pradėjo geriau suprasti, kas yra autotestai, kaip jie rašomi ir kaip paleidžiami. Sumažėjo ir automatikos inžinierių apkrova: dabar sulaukiame daug kartų mažiau pagalbos prašymų analizuojant testus, nes bandytojai ir kūrėjai beveik visose situacijose pradėjo su tuo susidoroti patys. Na, o katedra turi keletą vidinių privalumų: įgijome prezentacijų ir paskaitų patirties, kurios dėka kai kurie automatikos inžinieriai jau spėjo rengti pranešimus konferencijose, taip pat gavome galingą vaizdo įrašų ir pristatymų rinkinį, skirtą naujokams.

Savo vardu pridursiu, kad bendravimas tarp mūsų skyrių buvo supaprastintas iki visiškai juokingai lengvo lygio. Pavyzdžiui, dabar man praktiškai nebereikia galvoti, kokius atvejus ir kokiu atomiškumo lygiu automatizuoti. Dėl to visos suinteresuotos šalys visapusiškai rūpinasi testų aprėptimi, kuri nuolat auga. Niekas nereikalauja iš kitų neįmanomo.

Apskritai įtaka komandų darbui tikrai teigiama. Galbūt šį straipsnį skaitantys kolegos taip pat galvoja apie ką nors panašaus? Tada patarimas bus paprastas: verta, jei automatizuoti testai yra jūsų prioritetas. Toliau kalbėsime apie sudėtingesnį klausimą: kaip visa tai organizuoti kuo teisingiau, kad visų šalių sąnaudos būtų minimalios, o išeiga maksimali.

Patarimai, kaip organizuoti

Mokykla buvo naudinga, tačiau, kaip prisipažino Stasas, kilo sunkumų, dėl kurių teko rengti papildomas paskaitas. Ir kaip neseniai studentas, lygindamas save nežinant ir save dabar, aš suformulavau šiuos veiksmus, kad sukurčiau, mano nuomone, idealų būdą išmokyti testuotojus suprasti automatizuotus testus.

0 veiksmas. Sukurkite žodyną

Žinoma, šis žingsnis reikalingas ne tik kokybės užtikrinimui. Tačiau noriu tai aiškiai pasakyti: automatikos kodų bazė turi būti skaitoma. Programavimo kalbos – ne mažiau kalbomis, ir nuo to galite pradėti nardymą.

Grįžti į mokyklą: kaip išmokyti rankinius testuotojus atlikti automatizuotus testus

Čia yra užduočių peržiūros ekrano kopija su elementų pavadinimais. Įsivaizduokime, kad testuojate Taskview kaip juodąją dėžę ir niekada gyvenime nematėte Seleno. Ką daro šis kodas?

Grįžti į mokyklą: kaip išmokyti rankinius testuotojus atlikti automatizuotus testus

(Spoileris – užduotis administratoriaus vardu ištrinama per rest, tada matome, kad sraute yra šios informacijos įrašas.)

Vien šis žingsnis suartina QAA ir QA kalbas. Automatizavimo komandoms lengviau paaiškinti neautomatinio paleidimo rezultatus. Vis dėlto visi vienas kitą supranta. Laimėjimą gavome dar prieš prasidedant treniruotėms.

1 veiksmas. Pakartokite frazes

Tęskime paralelę su kalba. Kai mokomės kalbėti vaikystėje, pradedame ne nuo etimologijos ir semantikos. Kartojame „mama“, „pirk žaislą“, bet ne iš karto įsigiliname į šių žodžių proto-indoeuropietiškas šaknis. Taip yra čia: nėra prasmės nerti į pačias techninių savybių gelmes, kaip veikia automatiniai testai, nebandant parašyti to, kas veikia.
Tai skamba šiek tiek prieštaringai, bet tai veikia.

Pirmoje pamokoje verta duoti pagrindą, kaip tiesiogiai rašyti automatinius testus. Padedame sukurti kūrimo aplinką (mano atveju Intellij IDEA), paaiškiname minimalias kalbos taisykles, kurių reikia norint parašyti kitą metodą esamoje klasėje naudojant esamus veiksmus. Su jais parašome vieną ar du testus ir pateikiame namų darbus, kuriuos suformatuočiau taip: nuo meistro atsišakojusi šaka, bet iš jos išimta keletas testų. Liko tik jų aprašymai. Mes prašome bandytojų atkurti šiuos testus (žinoma, ne per rodyti skirtumą).

Dėl to tas, kuris klausėsi ir padarė viską, galės:

  1. išmokti dirbti su kūrimo aplinkos sąsaja: kurti atšakas, sparčiuosius klavišus, įsipareigojimus ir pastūmimus;
  2. įsisavinti kalbos ir klasių sandaros pagrindus: kur dėti injekcijas ir kur importuoti, kam reikalingos anotacijos ir kokie simboliai ten, be žingsnių, yra;
  3. suprasti skirtumą tarp veiksmo, laukti ir patikrinti, kur ką naudoti;
  4. pastebėkite skirtumą tarp automatinių ir rankinių patikrinimų: automatiniuose testuose galite patraukti vieną ar kitą tvarkyklę, užuot atlikę veiksmus per sąsają. Pavyzdžiui, siųskite komentarą tiesiai į užpakalinę programą, o ne atidarę užduočių rodinį, pasirinkę įvestį, įvesdami tekstą ir spustelėję mygtuką Siųsti;
  5. suformuluokite klausimus, į kuriuos bus atsakyta kitame žingsnyje.

Paskutinis punktas yra labai svarbus. Šiuos atsakymus galima nesunkiai pateikti iš anksto, tačiau svarbus mokymo principas – atsakymai be suformuluotų klausimų nėra įsimenami ir nenaudojami, kai pagaliau reikia.

Būtų idealu, jei šiuo metu automatikos inžinierius iš QA komandos paskirtų jam užduotį parašyti keletą testų mūšyje ir leistų įsipareigoti savo šakai.

Ko nedovanoti:

  1. gilesnių žinių apie kūrimo aplinkos funkcionalumą ir pačią programavimo kalbą, kurių prireiks tik dirbant su filialais savarankiškai. Tai nebus prisiminta, teks paaiškinti du ar tris kartus, bet mes vertiname automatikos inžinierių laiką, tiesa? Pavyzdžiai: konfliktų sprendimas, failų įtraukimas į git, klasių kūrimas nuo nulio, darbas su priklausomybėmis;
  2. viskas, kas susiję su xpath. Rimtai. Apie tai reikia kalbėti atskirai, vieną kartą ir labai koncentruotai.

2 veiksmas. Atidžiau pažvelkite į gramatiką

Prisiminkime užduočių peržiūros ekrano kopiją iš 0 veiksmo. Turime veiksmą, vadinamą checkCommentWithTextExists. Mūsų testuotojas jau supranta, ką daro šis veiksmas, ir galime pažvelgti į žingsnį ir šiek tiek jį išskaidyti.

O viduje turime:

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

Kur yra onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Dabar išmokstame sakyti ne „pirkite žaislą“, o „pirkite žaislą iš Detsky Mir parduotuvės, esančios mėlynoje spintelėje trečioje lentynoje nuo viršaus“. Būtina paaiškinti, kad į elementą rodome nuosekliai, iš didesnių elementų (srautas -> blokas su tam tikro asmens komentarais -> ta šio bloko dalis, kurioje yra nurodytas tekstas).

Ne, dar ne laikas kalbėti apie xpath. Tiesiog trumpai paminėkite, kad visi šie nurodymai yra jų aprašyti ir paveldėjimas vyksta per juos. Bet mes turime kalbėti apie visus šiuos atitikmenis ir padavėjus, jie yra susiję konkrečiai su šiuo žingsniu ir yra būtini norint suprasti, kas vyksta. Tačiau neperkraukite: vėliau jūsų mokinys gali pats išnagrinėti sudėtingesnius teiginius. Greičiausiai turėtų pakakti, palaukti, rodomas();, egzistuoja();, not();

Namų darbai akivaizdūs: atšaka, kurioje pašalintas kelių žingsnių, reikalingų tam tikram testų skaičiui, turinys. Tegul bandytojai juos atkuria ir bėgimas vėl tampa žalias.

Be to, jei testavimo komanda turi ne tik naujų funkcijų, bet ir kai kurių klaidų pataisymų, galite paprašyti jo nedelsiant parašyti šių klaidų testus ir juos išleisti. Greičiausiai visi elementai jau aprašyti, gali trūkti tik kelių žingsnių. Tai bus tobula treniruotė.

3 žingsnis. Visiškas panardinimas

Kiek įmanoma išsamesnis testuotojui, kuris ir toliau eis savo tiesiogines pareigas. Galiausiai turime pakalbėti apie xpath.

Pirmiausia paaiškinkime, kad visi šie onCommentBlock ir komentarai yra jų aprašyti.

Grįžti į mokyklą: kaip išmokyti rankinius testuotojus atlikti automatizuotus testus

Iš viso:

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

Labai svarbi istorijos tvarka. Pirmiausia paimame bet kurį esamą xpath ir parodome, kaip elementų skirtuke yra vienas ir tik vienas elementas. Toliau kalbėsime apie struktūrą: kada reikia naudoti WebElement ir kada reikia sukurti atskirą failą naujam elementui. Tai leis jums geriau suprasti paveldėjimą.

Turi būti aiškiai nurodyta, kad vienas elementas yra visas užduoties rodinys, jame yra antrinis elementas - visas srautas, kuriame yra antrinis elementas - atskiras komentaras ir tt. Antriniai elementai yra pirminiuose elementuose tiek puslapyje, tiek automatinio testavimo sistemos struktūroje.

Šiuo metu auditorija turėjo tvirtai suprasti, kaip jie yra paveldimi ir ką galima įvesti po taško onCommentBlock. Šioje vietoje paaiškiname visus operatorius: /, //, ., [] ir pan. Į krovinį pridedame žinių apie naudojimą @class ir kiti reikalingi dalykai.

Grįžti į mokyklą: kaip išmokyti rankinius testuotojus atlikti automatizuotus testus

Mokiniai turėtų suprasti, kaip tokiu būdu išversti xpath. Konsoliduoti – teisingai, namų darbai. Elementų aprašymus ištriname, leidžiame atkurti testų darbą.

Kodėl būtent šis kelias?

Neturėtume perkrauti žmogaus sudėtingomis žiniomis, tačiau viską turime paaiškinti iš karto, ir tai yra sunki dilema. Šis kelias leis mums iš pradžių priversti klausytojus užduoti klausimus ir kažko nesuprasti, o jau kitą akimirką į juos atsakyti. Jei kalbėsime apie visą architektūrą, tai kol bus išanalizuota žingsnių ar xpath tema, svarbiausios jos dalys jau bus pamirštos dėl savo nesuprantamumo.

Tačiau kai kurie iš jūsų tikriausiai galės pasidalinti savo patirtimi, kaip procesą galima dar labiau optimizuoti. Mielai perskaitysiu panašius pasiūlymus komentaruose!

Šaltinis: www.habr.com

Добавить комментарий