Бозгашт ба мактаб: чӣ гуна бояд озмоишгарони дастӣ барои мубориза бо санҷишҳои автоматӣ

Аз панҷ довталаби QA чаҳор нафар мехоҳанд, ки чӣ тавр кор кардан бо санҷишҳои автоматиро омӯзанд. Чунин хохиши санчиш-хои дастй дар вакти кор на хамаи корхонахо ба чо оварда метавонанд. Wrike як мактаби автоматикунониро барои кормандон ташкил кард ва ин хоҳиши бисёриҳоро амалӣ кард. Ман дар ин мактаб маҳз ҳамчун донишҷӯи QA иштирок кардам.

Ман чӣ гуна кор карданро бо Selenium омӯхтам ва ҳоло мустақилона шумораи муайяни автотестҳоро бидуни кӯмаки беруна дастгирӣ мекунам. Ва дар асоси нати-чахои тачрибаи якчояи мо ва хулосахои шахсии худ кушиш мекунам, ки формулаи идеалтарин мактаби автоматикаро ба даст оварам.

Тачрибаи Wrike дар ташкили мактаб

Вакте ки зарурияти мактаби автоматика маълум шуд, ташкили он ба ихтиёри сардори техникии автоматика Стас Давыдов афтод. Ба чуз у кист, ки чаро бо ин ташаббус баромад карданд, натичае ба даст овардаанд ва аз вакти сарфшуда пушаймон шудаанд? Биёед ба ӯ сухан медиҳем:

— Дар соли 2016 мо чаҳорчӯбаи нави автотестҳо навиштем ва онро тавре сохтем, ки навиштани тестҳо осон гардад: қадамҳои муқаррарӣ пайдо шуданд, сохтор хеле фаҳмотар шуд. Мо як фикре ба миён омадем: мо бояд хамаи шахсонеро, ки имтихонхои нав навиштан мехоханд, чалб кунем ва барои осонтар фахмидани он цикли лекцияхо тартиб додем. Мо коллективона плани мавзуъхоро тартиб додем, хар як лектори оянда барои худ яктоашро гирифта, аз руи он маъруза тайёр мекардем.

— Хонандагон чй гуна душворихо доштанд?

— Асосан, албатта, меъморй. Дар бораи сохтори санҷишҳои мо саволҳои зиёде буданд. Дар фикру мулоҳизаҳо, дар ин мавзӯъ бисёр навишта шуда буд ва мо маҷбур шудем, ки лекцияҳои иловагӣ гузаронем, то муфассалтар фаҳмонем.

— Мактаб самара дод?

- Ҳа, албатта. Бо шарофати вай, бисёр одамон дар навиштани санҷишҳо ҷалб карда шуданд ва ба ҳисоби миёна дар беморхона ҳама беҳтар фаҳмиданд, ки автотестҳо чист, онҳо чӣ гуна навишта мешаванд ва чӣ гуна оғоз мешаванд. Сарборӣ ба муҳандисони автоматика низ коҳиш ёфт: мо ҳоло якчанд маротиба камтар дархостҳо барои кӯмак дар таҳлили санҷишҳо мегирем, зеро озмоишгарон ва таҳиягарон тақрибан дар ҳама ҳолатҳо худашон ба ин кор шурӯъ кардаанд. Хуб, барои кафедра як қатор бартариҳои дохилӣ мавҷуданд: мо дар презентатсияҳо ва лексияҳо таҷриба андӯхтаем, ки ба шарофати онҳо баъзе муҳандисони автоматика аллакай тавонистанд дар конфронсҳо баромад кунанд ва инчунин маҷмӯи пурқуввати видеоҳо ва презентатсияҳоро барои навоварон қабул карданд.

Аз номи худам илова мекунам, ки муоширати байни шӯъбаҳои мо ба сатҳи бениҳоят хандаовар содда карда шудааст. Масалан, ҳоло ба ман амалан лозим нест, ки дар бораи он фикр кунам, ки кадом ҳолатҳо ва дар кадом сатҳи атомӣ автоматӣ карда шавад. Дар натиҷа, ҳама ҷонибҳои манфиатдор дар бораи фарогирии санҷишҳо, ки мунтазам афзоиш меёбанд, ғамхорӣ мекунанд. Ҳеҷ кас имконнопазириро аз дигарон талаб намекунад.

Умуман, таъсир ба кори коллективхо бешубха мусбат аст. Шояд ҳамкасбоне, ки ин мақоларо мехонанд, дар бораи анҷом додани коре ба ин монанд фикр мекунанд? Он гоҳ маслиҳат оддӣ хоҳад буд: он меарзад, агар санҷишҳои автоматӣ барои шумо афзалият дошта бошанд. Минбаъд, мо дар бораи як саволи мураккабтар сӯҳбат хоҳем кард: чӣ гуна бояд ин ҳамаро то ҳадди имкон дуруст ташкил кард, то хароҷоти ҳамаи тарафҳо ҳадди ақал ва ҳадди аксар бошад.

Маслиҳатҳои ташкилӣ

Мактаб фоиданок буд, аммо, чунон ки Стас эътироф кард, баъзе душвориҳо вуҷуд доштанд, ки аз ин сабаб лекцияҳои иловагӣ ташкил кардан лозим буд. Ва маҳз як донишҷӯи наве буд, ки худам ва худамро муқоиса мекардам, ки ман қадамҳои зеринро таҳия кардам, то ба андешаи ман, роҳи беҳтарини таълим додани тесткунандагон барои фаҳмидани тестҳои автоматӣ эҷод карда шавад.

Қадами 0. Луғат эҷод кунед

Албатта, ин қадам на танҳо барои QA лозим аст. Бо вуҷуди ин, ман мехоҳам онро равшан кунам: пойгоҳи коди автоматӣ бояд дар шакли хондашаванда нигоҳ дошта шавад. Забонҳои барномасозӣ - на камтар аз он забонҳо, ва аз ин шумо метавонед ғаввоси худро оғоз кунед.

Бозгашт ба мактаб: чӣ гуна бояд озмоишгарони дастӣ барои мубориза бо санҷишҳои автоматӣ

Ин аст скриншоти намоиши вазифаҳо бо номҳои элементҳо. Биёед тасаввур кунем, ки шумо намуди вазифаҳоро ҳамчун қуттии сиёҳ меозмоед ва ҳеҷ гоҳ Selenium-ро дар ҳаёти худ надидаед. Ин код чӣ кор мекунад?

Бозгашт ба мактаб: чӣ гуна бояд озмоишгарони дастӣ барои мубориза бо санҷишҳои автоматӣ

(Спойлер - супориш тавассути истироҳат аз номи администратор нест карда мешавад ва мо мебинем, ки дар ин бора сабт мавҷуд аст.)

Танҳо ин қадам забонҳои QAA ва QA-ро ба ҳам наздиктар мекунад. Барои гурӯҳҳои автоматикунонӣ шарҳ додани натиҷаҳои давидан осонтар аст; озмоишгарони дастӣ бояд барои эҷоди парвандаҳо камтар саъй кунанд: онҳоро камтар муфассалтар кардан мумкин аст. Бо вуҷуди ин, ҳама якдигарро мефаҳманд. Мо бурдхоро хануз пеш аз огози машгулиятхои хакикй гирифтем.

Қадами 1. Ибораҳоро такрор кунед

Биёед параллелро бо забон идома диҳем. Вақте ки мо дар кӯдакӣ сухан гуфтанро ёд мегирем, мо аз этимология ва семантика оғоз намекунем. Мо такрор мекунем, ки "модар", "бозича харед", аммо дарҳол ба решаҳои прото-индоаврупоии ин калимаҳо дохил нашавед. Ҳамин тавр, дар ин ҷо: бе кӯшиши навиштани чизе, ки кор мекунад, ғарқ шудан ба умқи хусусиятҳои техникии автотестҳо маъно надорад.
Ин як каме мухолиф садо медиҳад, аммо он кор мекунад.

Дар дарси аввал, ба он асос додан лозим аст, ки чӣ тавр мустақиман навиштани автотестҳо. Мо дар ташкили муҳити рушд (дар ҳолати ман, Intellij IDEA) кӯмак мерасонем, қоидаҳои ҳадди ақали забонро шарҳ медиҳем, ки барои навиштани усули дигар дар синфи мавҷуда бо истифода аз қадамҳои мавҷуда заруранд. Мо бо онҳо як ё ду санҷиш менависем ва ба онҳо вазифаи хонагӣ медиҳем, ки ман чунин формат мекардам: шоха аз устод шоха шуд, аммо аз он чанд санҷиш хориҷ карда шуд. Танҳо тавсифи онҳо боқӣ мемонад. Мо аз озмоишгарон хоҳиш мекунем, ки ин санҷишҳоро барқарор кунанд (на тавассути нишон додани фарқият, албатта).

Дар натиҷа, касе, ки ҳама чизро гӯш кард ва анҷом дод, қодир аст:

  1. кор карданро бо интерфейси муҳити рушд омӯзед: эҷод кардани шохаҳо, тугмаҳо, фармонҳо ва телаҳо;
  2. асосҳои сохтори забон ва синфҳоро азхуд кунед: дар куҷо ворид кардани сӯзандору ва ба куҷо ворид кардан, барои чӣ эзоҳҳо лозиманд ва дар он ҷо ба ғайр аз қадамҳо чӣ гуна аломатҳо мавҷуданд;
  3. фарқи байни амалро дарк кунед, интизор шавед ва тафтиш кунед, дар куҷо истифода баред;
  4. Ба фарқияти байни санҷишҳои автоматӣ ва санҷишҳои дастӣ аҳамият диҳед: дар автотестҳо шумо метавонед ин ё он коркардкунандаро ба ҷои иҷрои амалҳо тавассути интерфейс кашед. Масалан, ба ҷои кушодани намоиши вазифаҳо, интихоби вуруд, чоп кардани матн ва пахш кардани тугмаи Ирсол тавзеҳро мустақиман ба пуштибон фиристед;
  5. тартиб додани саволҳое, ки дар қадами оянда ҷавоб хоҳанд дод.

Нуқтаи охирин хеле муҳим аст. Ин ҷавобҳоро метавон ба осонӣ пеш аз мӯҳлат дод, аммо ин як принсипи муҳими таълимӣ аст, ки ҷавобҳо бидуни саволҳои таҳияшуда дар хотир нигоҳ дошта намешаванд ва ҳангоми зарурат истифода намешаванд.

Идеалӣ мебуд, агар дар айни замон як муҳандиси автоматика аз гурӯҳи QA ба ӯ супориш диҳад, ки якчанд санҷишҳоро дар ҷанг нависед ва ба ӯ иҷозат диҳад, ки ба филиали худ итоат кунад.

Чӣ набояд дод:

  1. дониши амиқтар дар бораи функсияҳои муҳити таҳия ва худи забони барномасозӣ, ки танҳо ҳангоми кор бо филиалҳо мустақилона лозим аст. Он дар хотир нахоҳад монд, шумо бояд онро ду ё се маротиба шарҳ диҳед, аммо мо вақти муҳандисони автоматикаро қадр мекунем, дуруст? Намунаҳо: ҳалли ихтилофҳо, илова кардани файлҳо ба git, эҷоди синфҳо аз сифр, кор бо вобастагӣ;
  2. ҳама чиз вобаста ба xpath. Ҷиддӣ. Шумо бояд дар ин бора алоҳида, як маротиба ва хеле мутамарказ сӯҳбат кунед.

Қадами 2. Бо таваҷҷӯҳ ба грамматика

Биёед скриншоти намоиши вазифаҳоро аз қадами №0 ба ёд орем. Мо як қадам дорем, ки checkCommentWithTextExists ном дорад. Озмоишгари мо аллакай дарк мекунад, ки ин қадам чӣ кор мекунад ва мо метавонем дар дохили қадам нигоҳ кунем ва онро каме таҷзия кунем.

Ва дар дохили мо инҳо дорем:

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

Дар куҷо onCommentBlock аст

onCommonStreamPanel().commentBlock(userName);

Акнун мо «бозича харед» не, балки «бозичаро аз магазини «Детский мир», ки дар кабинети кабуди рафи сеюм аз боло вокеъ аст, харед» гуфтанро ёд мегирем. Фаҳмондан лозим аст, ки мо ба унсури пайдарпай аз унсурҳои калон ишора мекунем (ҷараён -> блок бо шарҳҳои шахси муайян -> он қисми ин блок, ки матни муайяншуда дар он ҷойгир аст).

Не, ҳанӯз вақти он нест, ки дар бораи xpath сӯҳбат кунем. Фақат мухтасар зикр кунед, ки ҳамаи ин дастурҳоро онҳо тавсиф мекунанд ва мерос аз онҳо мегузарад. Аммо мо бояд дар бораи ҳамаи ин гӯгирдҳо ва пешхизматҳо сухан гӯем, онҳо махсусан ба ин қадам марбутанд ва барои фаҳмидани он ки чӣ рӯй дода истодааст, зарур аст. Аммо аз ҳад зиёд сарборӣ накунед: донишҷӯи шумо метавонад баъдтар мустақилона изҳороти мураккабтарро омӯзад. Эҳтимол, бояд, waitUntil, displayed();, exist();, not(); бояд басанда бошад.

Вазифаи хонагӣ аён аст: филиале, ки дар он мундариҷаи якчанд марҳила, ки барои шумораи муайяни санҷишҳо заруранд, хориҷ карда шудаанд. Бигзор озмоишгарон онҳоро барқарор кунанд ва давидан боз сабз шавад.

Илова бар ин, агар дастаи санҷишӣ дар кори худ на танҳо хусусиятҳои нав, балки баъзе ислоҳи хатогиҳоро низ дошта бошад, шумо метавонед аз ӯ хоҳиш кунед, ки фавран барои ин хатогиҳо санҷишҳо нависад ва онҳоро озод кунад. Эҳтимол аст, ки ҳамаи унсурҳо аллакай тавсиф шудаанд; танҳо якчанд қадамҳо метавонанд мавҷуд бошанд. Ин як машқи комил хоҳад буд.

Қадами 3. Гирифтани пурра

То ҳадди имкон пурра барои озмоишгар, ки иҷрои вазифаҳои бевоситаи худро идома медиҳад. Ниҳоят, мо бояд дар бораи xpath сӯҳбат кунем.

Аввалан, биёед возеҳ кунем, ки ҳамаи ин onCommentBlock ва шарҳ аз ҷониби онҳо тавсиф карда шудаанд.

Бозгашт ба мактаб: чӣ гуна бояд озмоишгарони дастӣ барои мубориза бо санҷишҳои автоматӣ

Њамагї:

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

Тартиби ҳикоя хеле муҳим аст. Аввалан, мо ҳама гуна xpath мавҷударо мегирем ва нишон медиҳем, ки чӣ гуна ҷадвали элементҳо як ва танҳо як элементро дар бар мегирад. Минбаъд, мо дар бораи сохтор гап мезанем: вақте ки шумо бояд WebElement-ро истифода баред ва вақте ки шумо бояд барои элементи нав файли алоҳида эҷод кунед. Ин ба шумо имкон медиҳад, ки меросро беҳтар фаҳмед.

Бояд возеҳ қайд кард, ки як унсури ягона тамоми намуди вазифаҳост, он дорои як унсури кӯдак - тамоми ҷараён, ки унсури кӯдак - шарҳи алоҳида ва ғайра дорад. Элементҳои кӯдак дар дохили унсурҳои волидайн ҳам дар саҳифа ва ҳам дар сохтори чаҳорчӯбаи автотест мебошанд.

Дар ин лаҳза, шунавандагон бояд дақиқ фаҳманд, ки онҳо чӣ гуна мерос гирифта шудаанд ва пас аз нуқта дар onCommentBlock чиро ворид кардан мумкин аст. Дар ин лаҳза мо ҳамаи операторҳоро шарҳ медиҳем: /, //, ., [] ва ғайра. Мо донишро дар бораи истифода ба бор илова мекунем @class ва дигар чизҳои зарурӣ.

Бозгашт ба мактаб: чӣ гуна бояд озмоишгарони дастӣ барои мубориза бо санҷишҳои автоматӣ

Донишҷӯён бояд фаҳманд, ки чӣ тавр xpath-ро ин тавр тарҷума кардан мумкин аст. Барои муттаҳид кардан - ин дуруст аст, вазифаи хонагӣ. Мо тавсифи элементҳоро нест мекунем, бигзор онҳо кори санҷишҳоро барқарор кунанд.

Чаро ин роҳи мушаххас?

Мо набояд одамро бо дониши мураккаб аз ҳад зиёд бор кунем, балки бояд ҳама чизро якбора фаҳмонем ва ин як дилеммаи душвор аст. Ин роҳ ба мо имкон медиҳад, ки аввал шунавандагонро водор созем, ки саволҳо диҳем ва чизеро нафаҳмем ва дар лаҳзаи оянда ба онҳо ҷавоб диҳем. Агар шумо дар бораи тамоми меъморӣ сухан ронед, пас то вақте ки мавзӯи қадамҳо ё xpath таҳлил карда мешавад, муҳимтарин қисмҳои он аз сабаби нофаҳмо буданашон аллакай фаромӯш хоҳанд шуд.

Бо вуҷуди ин, баъзеи шумо эҳтимолан метавонанд таҷрибаи худро мубодила кунанд, ки чӣ гуна равандро боз ҳам бештар оптимизатсия кардан мумкин аст. Ман хурсандам, ки пешниҳодҳои шабеҳро дар шарҳҳо бихонам!

Манбаъ: will.com

Илова Эзоҳ