Повратак у школу: како обучити ручне тестере да се баве аутоматизованим тестовима

Четири од пет кандидата за осигурање квалитета желе да науче како да раде са аутоматизованим тестовима. Не могу све компаније да испуне такве жеље ручних тестера током радног времена. Врике је одржао школу аутоматизације за запослене и многима је остварио ову жељу. Учествовао сам у овој школи управо као КА студент.

Научио сам како да радим са Селеном и сада самостално подржавам одређени број аутотестова практично без помоћи споља. И, на основу резултата нашег заједничког искуства и мојих личних закључака, покушаћу да изведем саму формулу за најидеалнију школу аутоматизације.

Врике-ово искуство у организовању школе

Када је постала јасна потреба за школом аутоматизације, њена организација је припала Стасу Давидову, техничком руководиоцу аутоматизације. Ко други осим њега може да објасни зашто су дошли на ову иницијативу, да ли су постигли резултате и да ли жале за утрошеним временом? Да му дамо реч:

— У 2016. смо написали нови оквир за аутотестове и направили га тако да је постало лако писати тестове: појавили су се нормални кораци, структура је постала много разумљивија. Дошли смо на идеју: треба да укључимо све који желе да пишу нове тестове, а да бисмо лакше разумели, направили смо серију предавања. Заједнички смо осмислили план тема, сваки од будућих предавача је узео једну за себе и о томе припремио извештај.

— Које су потешкоће ученици имали?

— Углавном, наравно, архитектура. Било је много питања о структури наших тестова. У повратним информацијама, доста се писало на ову тему и морали смо да држимо додатна предавања да бисмо детаљније објаснили.

— Да ли се школа исплатила?

- Да дефинитивно. Захваљујући њој, пуно људи је било укључено у писање тестова и, у просеку, у болници су сви почели боље да разумеју шта су аутотестови, како су написани и како се покрећу. Оптерећење инжењера аутоматизације је такође смањено: сада добијамо вишеструко мање захтева за помоћ у анализи тестова, пошто су тестери и програмери почели да се сами носе са тим у скоро свим ситуацијама. Па, постоји неколико интерних предности за одељење: стекли смо искуство у презентацијама и предавањима, захваљујући којима су неки инжењери аутоматизације већ успели да направе презентације на конференцијама, а такође су добили моћан сет видео записа и презентација за онбоардинг новајлија.

У своје лично име, додаћу да је комуникација између наших одељења поједностављена на потпуно смешно лак ниво. На пример, сада практично не морам да размишљам о томе које случајеве и на ком нивоу атомизације да аутоматизујем. Као резултат тога, сви заинтересовани у потпуности воде рачуна о покривености тестом, која је у сталном порасту. Нико од других не захтева немогуће.

Генерално, утицај на рад тимова је свакако позитиван. Можда и колеге који читају овај чланак размишљају о томе да ураде нешто слично? Тада ће савет бити једноставан: вреди ако су вам аутоматизовани тестови приоритет. Затим ћемо говорити о сложенијем питању: како све ово организовати што је могуће исправније, тако да трошкови свих страна буду минимални, а излаз максималан.

Савети за организовање

Школа је била корисна, али, како је Стас признао, било је неких потешкоћа, због којих је било потребно организовати додатна предавања. И тек као студент који је недавно упоређивао себе – у незнању и себе – сада сам формулисао следеће кораке да створим, по мом мишљењу, идеалан начин да научим тестере да разумеју аутоматизоване тестове.

Корак 0. Направите речник

Наравно, овај корак је потребан не само за КА. Међутим, желим да буде експлицитно: аутоматизована кодна база мора да се чува у читљивом облику. Програмски језици - не мање важно језика, и од овога можете започети своје роњење.

Повратак у школу: како обучити ручне тестере да се баве аутоматизованим тестовима

Ево снимка екрана приказа задатака са именима елемената. Замислимо да тестирате Тасквиев као црну кутију и да никада у животу нисте видели Селен. Шта ради овај код?

Повратак у школу: како обучити ручне тестере да се баве аутоматизованим тестовима

(Споилер – задатак се брише преко рест у име администратора, а онда видимо да постоји запис о томе у стриму.)

Сам овај корак приближава КАА и КА језике. Тимовима за аутоматизацију је лакше да објасне резултате покретања; ручни тестери морају да уложе мање труда на креирање случајева: они могу бити мање детаљни. Ипак, сви се разумеју. Добитке смо примили и пре почетка тренинга.

Корак 1. Поновите фразе

Наставимо паралелу са језиком. Када учимо да говоримо као деца, не полазимо од етимологије и семантике. Понављамо „мама“, „купи играчку“, али не улазимо одмах у протоиндоевропске корене ових речи. Тако је и овде: нема смисла урањати у саму дубину техничких карактеристика аутотестова без покушаја да напишете нешто што функционише.
Звучи мало контраинтуитивно, али функционише.

У првој лекцији вреди дати основу о томе како директно писати аутотестове. Помажемо у подешавању развојног окружења (у мом случају Интеллиј ИДЕА), објашњавамо минимална језичка правила која су неопходна за писање другог метода у постојећој класи користећи постојеће кораке. Са њима напишемо један или два теста и задамо им домаћи задатак, који бих ја овако форматирао: грана се одвојила од мастера, али је неколико тестова из ње уклоњено. Остали су само њихови описи. Тражимо од тестера да врате ове тестове (наравно, не кроз схов дифф).

Као резултат тога, онај ко је све слушао и урадио ће моћи:

  1. научите да радите са интерфејсом развојног окружења: креирање гранања, интервентних тастера, урезивања и притиска;
  2. овладају основама структуре језика и часова: где убацити ињекције и где увести, зашто су потребне напомене и какви се симболи ту налазе, осим корака;
  3. разумети разлику између акције, чекања и провере, где шта користити;
  4. приметите разлику између аутотестова и ручних провера: у аутотестовима можете повући један или други руковалац уместо да извршавате радње кроз интерфејс. На пример, пошаљите коментар директно на позадину уместо отварања приказа задатака, одабира уноса, куцања текста и клика на дугме Пошаљи;
  5. формулисати питања на која ће бити одговорено у следећем кораку.

Последња тачка је веома важна. Ови одговори се лако могу дати унапред, али је важан принцип наставе да се одговори без формулисаних питања не памте и не користе када су коначно потребни.

Било би идеално када би му у овом тренутку инжењер за аутоматизацију из КА тима доделио задатак да напише неколико тестова у борби и дозволио му да се преда својој грани.

Шта не дати:

  1. дубље познавање функционалности развојног окружења и самог програмског језика, што ће бити потребно само при самосталном раду са гранама. Неће се памтити, мораћете да објашњавате два или три пута, али ми ценимо време инжењера аутоматизације, зар не? Примери: решавање конфликата, додавање датотека у гит, креирање класа од нуле, рад са зависностима;
  2. све у вези са кпатхом. Озбиљно. О томе треба разговарати одвојено, једном и веома концентрисано.

Корак 2. Пажљивије разматрање граматике

Сетимо се снимка екрана приказа задатака из корака #0. Имамо корак који се зове цхецкЦомментВитхТектЕкистс. Наш тестер већ разуме шта овај корак ради и можемо да погледамо унутар корака и да га мало разложимо.

А унутра имамо следеће:

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

Где је онЦомментБлоцк

onCommonStreamPanel().commentBlock(userName);

Сада учимо да кажемо не „купи играчку“, већ „купи играчку из продавнице Детски Мир, која се налази у плавом ормарићу на трећој полици одозго“. Потребно је објаснити да на елемент указујемо секвенцијално, од већих елемената (ток -> блок са коментарима одређене особе -> онај део овог блока где се налази наведени текст).

Не, још увек није време да причамо о кпатх-у. Само напомените укратко да су сва ова упутства описана од њих и да наслеђивање иде преко њих. Али морамо да причамо о свим овим шибицама и конобарима; они се посебно односе на овај корак и неопходни су да бисмо разумели шта се дешава. Али немојте се преоптеретити: ваш ученик касније може сам да проучава сложеније тврдње. Највероватније, требало би, чекајУнтил, дисплаиед();, екист();, нот(); требало би да буде довољно.

Домаћи задатак је очигледан: грана у којој је уклоњен садржај неколико корака који су неопходни за одређени број тестова. Нека их тестери врате и учине да трчање поново буде зелено.

Поред тога, ако тим за тестирање има не само нове функције у свом раду, већ и неке исправке грешака, можете га замолити да одмах напише тестове за ове грешке и објави их. Највероватније су сви елементи већ описани, можда недостаје само неколико корака. Ово ће бити савршена вежба.

Корак 3. Потпуно урањање

Најпотпунији за тестера који ће наставити да обавља своје директне дужности. Коначно, морамо разговарати о кпатх-у.

Прво, разјаснимо да су сви ови онЦомментБлоцк и коментари описани од стране њих.

Повратак у школу: како обучити ручне тестере да се баве аутоматизованим тестовима

Укупно:

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

Редослед приче је веома важан. Прво, узимамо било који постојећи кпатх и показујемо како картица елемената садржи један и само један елемент. Затим ћемо разговарати о структури: када треба да користите ВебЕлемент и када треба да направите засебну датотеку за нови елемент. Ово ће вам омогућити да боље разумете наслеђе.

Мора се експлицитно навести да је један елемент цео приказ задатака, садржи подређени елемент – цео ток, који садржи подређени елемент – посебан коментар итд. Подређени елементи су унутар надређених елемената и на страници и у структури оквира за аутотест.

У овом тренутку, публика је требало да чврсто схвати како се наслеђује и шта се може унети после тачке на онЦомментБлоцк. У овом тренутку објашњавамо све операторе: /, //, ., [] и тако даље. У оптерећење додајемо знање о употреби @class и друге неопходне ствари.

Повратак у школу: како обучити ручне тестере да се баве аутоматизованим тестовима

Ученици треба да разумеју како да преведу кпатх на овај начин. Да се ​​консолидују - тако је, домаћи задатак. Избришемо описе елемената, пустимо их да обнове рад тестова.

Зашто баш овај пут?

Човека не треба преоптеретити сложеним знањем, већ морамо све објаснити одједном, а ово је тешка дилема. Овај пут ће нам омогућити да прво натерамо слушаоце да постављају питања, а не разумеју нешто и да им одговоримо већ следећег тренутка. Ако говорите о целокупној архитектури, онда када се анализира тема корака или кпатх-а, њени најважнији делови ће већ бити заборављени због њихове неразумљивости.

Међутим, неки од вас ће вероватно моћи да поделе своје искуство о томе како се процес може још више оптимизовати. Радо ћу прочитати сличне предлоге у коментарима!

Извор: ввв.хабр.цом

Додај коментар