Späť do školy: ako vycvičiť manuálnych testerov, aby zvládli automatizované testy

Štyria z piatich žiadateľov o kontrolu kvality sa chcú naučiť pracovať s automatizovanými testami. Nie všetky firmy dokážu takéto túžby manuálnych testerov splniť počas pracovnej doby. Wrike usporiadal automatizačnú školu pre zamestnancov a túto túžbu mnohých zrealizoval. Na tejto škole som sa zúčastnil práve ako študent QA.

Naučil som sa pracovať so Selenium a teraz nezávisle podporovať určitý počet autotestov prakticky bez vonkajšej pomoci. A na základe výsledkov našej spoločnej skúsenosti a mojich osobných záverov sa pokúsim odvodiť samotný vzorec najideálnejšej školy automatizácie.

Wrikeho skúsenosti s organizáciou školy

Keď sa vyjasnila potreba automatizačnej školy, jej organizácia pripadla Stasovi Davydovovi, technickému vedúcemu automatizácie. Kto iný ako on môže vysvetliť, prečo prišli s touto iniciatívou, či dosiahli výsledky a či ľutujú strávený čas? Dajme mu slovo:

— V roku 2016 sme napísali nový rámec pre autotesty a urobili sme ho tak, aby bolo jednoduché písať testy: objavili sa bežné kroky, štruktúra sa stala oveľa zrozumiteľnejšou. Prišli sme s nápadom: musíme zapojiť všetkých, ktorí chcú písať nové testy, a aby to bolo ľahšie pochopiteľné, vytvorili sme sériu prednášok. Spoločne sme vymysleli plán tém, každý z budúcich lektorov si vzal jednu pre seba a vypracoval o nej reportáž.

— Aké ťažkosti mali študenti?

— Hlavne, samozrejme, architektúra. Bolo veľa otázok o štruktúre našich testov. V spätnej väzbe sa o tejto téme veľa napísalo a museli sme usporiadať ďalšie prednášky, aby sme to vysvetlili podrobnejšie.

— Oplatila sa škola?

- Rozhodne áno. Vďaka nej sa do písania testov zapojilo množstvo ľudí a v priemere v nemocnici každý začal lepšie chápať, čo sú autotesty, ako sa píšu a ako sa spúšťajú. Znížila sa aj záťaž pre automatizačných inžinierov: v súčasnosti dostávame mnohonásobne menej žiadostí o pomoc s analýzou testov, pretože testeri a vývojári sa s tým začali vyrovnávať sami takmer vo všetkých situáciách. Interných výhod pre oddelenie je hneď niekoľko: získali sme skúsenosti na prezentáciách a prednáškach, vďaka ktorým už niektorí automatizační inžinieri stihli prezentovať na konferenciách a získali sme aj výkonnú sadu videí a prezentácií pre onboarding nováčikov.

Vo svojom mene dodám, že komunikácia medzi našimi oddeleniami sa zjednodušila na priam smiešne ľahkú úroveň. Napríklad teraz prakticky nemusím premýšľať o tom, ktoré prípady a na akej úrovni atomicity zautomatizovať. Vďaka tomu sa všetky zainteresované strany plne starajú o testovacie pokrytie, ktoré neustále rastie. Nikto od ostatných nepožaduje nemožné.

Vo všeobecnosti je dopad na prácu tímov určite pozitívny. Možno kolegovia, ktorí čítajú tento článok, tiež uvažujú o niečom podobnom? Potom bude rada jednoduchá: stojí to za to, ak sú pre vás automatické testy prioritou. Ďalej budeme hovoriť o zložitejšej otázke: ako to všetko zorganizovať čo najsprávnejšie, aby náklady všetkých strán boli minimálne a výstup bol maximálny.

Tipy na organizáciu

Škola bola užitočná, ale ako Stas priznal, vyskytli sa určité ťažkosti, kvôli ktorým bolo potrebné usporiadať ďalšie prednášky. A ako nedávny študent porovnávajúci seba – v nevedomosti a seba – som teraz sformuloval nasledujúce kroky na vytvorenie, podľa môjho názoru, ideálneho spôsobu, ako naučiť testerov rozumieť automatizovaným testom.

Krok 0. Vytvorte slovník

Samozrejme, tento krok je potrebný nielen pre QA. Chcem to však povedať jasne: kódová základňa automatizácie musí byť udržiavaná v čitateľnej forme. Programovacie jazyky - v neposlednom rade jazyky, a odtiaľ môžete začať s ponorom.

Späť do školy: ako vycvičiť manuálnych testerov, aby zvládli automatizované testy

Tu je snímka obrazovky taskview s názvami prvkov. Predstavme si, že testujete taskview ako čiernu skrinku a Selenium ste v živote nevideli. Čo robí tento kód?

Späť do školy: ako vycvičiť manuálnych testerov, aby zvládli automatizované testy

(Spoiler - úloha je vymazaná cez zvyšok v mene správcu a potom vidíme, že v streame je o tom záznam.)

Tento krok sám o sebe zbližuje jazyky QAA a QA. Pre automatizačné tímy je jednoduchšie vysvetliť výsledky behu; manuálni testeri musia vynaložiť menej úsilia na vytváranie prípadov: môžu byť menej podrobné. Napriek tomu si všetci rozumejú. Výhru sme dostali ešte pred začatím samotného tréningu.

Krok 1. Opakujte frázy

Pokračujme v paralele s jazykom. Keď sa ako deti učíme rozprávať, nevychádzame z etymológie a sémantiky. Opakujeme „mama“, „kúpiť hračku“, ale nejdeme hneď do protoindoeurópskych koreňov týchto slov. Tak je to tu: nemá zmysel ponárať sa do hlbín technických vlastností autotestov bez toho, aby sme sa pokúsili napísať niečo, čo funguje.
Znie to trochu neintuitívne, ale funguje to.

V prvej lekcii sa oplatí poskytnúť základ, ako priamo písať autotesty. Pomáhame nastaviť vývojové prostredie (v mojom prípade Intellij IDEA), vysvetliť minimálne jazykové pravidlá, ktoré sú potrebné na napísanie inej metódy v existujúcej triede pomocou existujúcich krokov. Napíšeme s nimi jeden-dva testy a zadáme im domácu úlohu, ktorú by som naformátoval takto: z predlohy sa odvetvila vetva, ale niekoľko testov z nej bolo odstránených. Zostali len ich opisy. Žiadame testerov, aby obnovili tieto testy (samozrejme nie cez show diff).

Výsledkom je, že ten, kto počúval a urobil všetko, bude môcť:

  1. naučiť sa pracovať s rozhraním vývojového prostredia: vytváranie vetiev, klávesových skratiek, commitov a pushov;
  2. zvládnuť základy štruktúry jazyka a tried: kam vložiť injekcie a kam importovať, prečo sú potrebné anotácie a aké druhy symbolov sa tam nachádzajú, okrem krokov;
  3. pochopiť rozdiel medzi akciou, čakaním a kontrolou, kde čo použiť;
  4. všimnite si rozdiel medzi autotestmi a manuálnymi kontrolami: v autotestoch môžete namiesto vykonávania akcií cez rozhranie potiahnuť jeden alebo druhý handler. Napríklad odošlite komentár priamo do backendu namiesto otvorenia zobrazenia úloh, výberu vstupu, zadávania textu a kliknutia na tlačidlo Odoslať;
  5. formulovať otázky, ktoré budú zodpovedané v ďalšom kroku.

Posledný bod je veľmi dôležitý. Tieto odpovede možno ľahko poskytnúť vopred, ale dôležitým princípom vyučovania je, že odpovede bez formulovaných otázok sa nezapamätajú a nepoužijú sa, keď sú nakoniec potrebné.

Ideálne by bolo, keby mu v tomto čase automatizačný inžinier z tímu QA zadal úlohu napísať pár testov v boji a dovolil mu podriadiť sa svojej pobočke.

Čo nedávať:

  1. hlbšie znalosti funkčnosti vývojového prostredia a samotného programovacieho jazyka, ktoré budú potrebné len pri samostatnej práci s pobočkami. Nebude sa to pamätať, budete to musieť vysvetľovať dvakrát alebo trikrát, ale ceníme si čas automatizačných inžinierov, však? Príklady: riešenie konfliktov, pridávanie súborov do git, vytváranie tried od začiatku, práca so závislosťami;
  2. všetko, čo súvisí s xpath. vážne. Treba sa o tom porozprávať oddelene, raz a veľmi koncentrovane.

Krok 2. Pri bližšom pohľade na gramatiku

Spomeňme si na snímku obrazovky taskview z kroku #0. Máme krok s názvom checkCommentWithTextExists. Náš tester už chápe, čo tento krok robí, a môžeme sa pozrieť dovnútra kroku a trochu ho rozložiť.

A vo vnútri máme nasledovné:

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

Kde je onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Teraz sa učíme hovoriť nie „kúpiť hračku“, ale „kúpiť hračku z obchodu Detsky Mir, ktorý sa nachádza v modrej skrinke na tretej polici zhora“. Je potrebné vysvetliť, že na prvok ukazujeme postupne, od väčších prvkov (stream -> blok s komentármi od určitej osoby -> tá časť tohto bloku, kde sedí zadaný text).

Nie, stále nie je čas hovoriť o xpath. Stačí v krátkosti spomenúť, že všetky tieto pokyny sú nimi popísané a ide cez ne aj dedičnosť. Musíme však hovoriť o všetkých týchto dohadzovačoch a čašníkoch; týkajú sa konkrétne tohto kroku a sú potrebné na pochopenie toho, čo sa deje. Ale nepreťažujte sa: váš študent môže neskôr študovať zložitejšie tvrdenia sám. S najväčšou pravdepodobnosťou by malo stačiť, počkajte, kým sa zobrazí ();, existuje ();, nie ();

Domáca úloha je zrejmá: vetva, v ktorej bol odstránený obsah niekoľkých krokov, ktoré sú potrebné pre určitý počet testov. Nech ich testeri obnovia a beh bude opäť zelený.

Navyše, ak má testovací tím vo svojej práci nielen nové funkcie, ale aj nejaké opravy chýb, môžete ho požiadať, aby okamžite napísal testy na tieto chyby a vydal ich. S najväčšou pravdepodobnosťou už boli všetky prvky opísané, môže chýbať iba niekoľko krokov. Toto bude dokonalé cvičenie.

Krok 3. Úplné ponorenie

Čo najúplnejšie pre testera, ktorý bude pokračovať vo vykonávaní svojich priamych povinností. Nakoniec musíme hovoriť o xpath.

Najprv si ujasnime, že všetky tieto bloky komentárov a komentáre sú nimi opísané.

Späť do školy: ako vycvičiť manuálnych testerov, aby zvládli automatizované testy

Celkom:

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

Poradie príbehu je veľmi dôležité. Najprv vezmeme akúkoľvek existujúcu cestu xpath a ukážeme, ako karta prvkov obsahuje iba jeden prvok. Ďalej budeme hovoriť o štruktúre: keď potrebujete použiť WebElement a keď potrebujete vytvoriť samostatný súbor pre nový prvok. To vám umožní lepšie pochopiť dedičnosť.

Musí byť výslovne uvedené, že jeden prvok je celý taskview, obsahuje podradený prvok - celý stream, ktorý obsahuje podradený prvok - samostatný komentár atď. Podradené prvky sú vo vnútri nadradených prvkov na stránke aj v štruktúre rámca automatického testu.

V tomto momente by už publikum malo pevne pochopiť, ako sa dedia a čo je možné zadať za bodkou na onCommentBlock. V tomto bode vysvetlíme všetky operátory: /, //, ., [] atď. Do záťaže pridávame poznatky o použití @class a ďalšie potrebné veci.

Späť do školy: ako vycvičiť manuálnych testerov, aby zvládli automatizované testy

Študenti by mali pochopiť, ako preložiť xpath týmto spôsobom. Upevniť sa - to je pravda, domáca úloha. Vymažeme popisy prvkov, nech obnovia prácu testov.

Prečo práve táto cesta?

Nemali by sme človeka preťažovať zložitými znalosťami, ale musíme všetko vysvetliť naraz, a to je ťažká dilema. Táto cesta nám umožní najskôr prinútiť poslucháčov, aby sa pýtali a niečomu nerozumeli a hneď v nasledujúcom momente na ne odpovedali. Ak hovoríte o celej architektúre, tak kým sa rozoberie téma krokov alebo xpath, na jej najdôležitejšie časti sa už pre ich nezrozumiteľnosť zabudne.

Niektorí z vás sa však pravdepodobne budú môcť podeliť o svoje skúsenosti s tým, ako možno proces ešte viac optimalizovať. Rád si podobné návrhy prečítam v komentároch!

Zdroj: hab.com

Pridať komentár