Äetri no pieciem kvalitÄtes nodroÅ”inÄÅ”anas pretendentiem vÄlas iemÄcÄ«ties strÄdÄt ar automatizÄtiem testiem. Ne visi uzÅÄmumi var izpildÄ«t Å”Ädas manuÄlo testÄtÄju vÄlmes darba laikÄ. Wrike organizÄja automatizÄcijas skolu darbiniekiem un Ä«stenoja Å”o vÄlmi daudziem. Å ajÄ skolÄ piedalÄ«jos tieÅ”i kÄ QA students.
Es iemÄcÄ«jos strÄdÄt ar SelÄnu un tagad patstÄvÄ«gi atbalstu noteiktu skaitu automÄtisko testu, praktiski bez ÄrÄjas palÄ«dzÄ«bas. Un, pamatojoties uz mÅ«su kopÄ«gÄs pieredzes rezultÄtiem un saviem personÄ«gajiem secinÄjumiem, es mÄÄ£inÄÅ”u atvasinÄt paÅ”u ideÄlÄkÄs automatizÄcijas skolas formulu.
Raikas pieredze skolas organizÄÅ”anÄ
Kad kļuva skaidrs, ka nepiecieÅ”ama automatizÄcijas skola, tÄs organizÄcija uzticÄjÄs Stasam Davidovam, automatizÄcijas tehniskajam vadÄ«tÄjam. KurÅ” gan cits, ja ne viÅÅ” var paskaidrot, kÄpÄc viÅi nÄca klajÄ ar Å”o iniciatÄ«vu, vai viÅi ir sasnieguÅ”i rezultÄtus un vai viÅi nožÄlo pavadÄ«to laiku? Dosim viÅam vÄrdu:
ā 2016. gadÄ uzrakstÄ«jÄm jaunu ietvaru autotestiem un izveidojÄm tÄ, lai testu rakstÄ«Å”ana kļuva vienkÄrÅ”a: parÄdÄ«jÄs normÄli soļi, struktÅ«ra kļuva daudz saprotamÄka. Mums radÄs ideja: jÄiesaista visi, kas vÄlas rakstÄ«t jaunus kontroldarbus, un, lai bÅ«tu vieglÄk saprast, izveidojÄm lekciju ciklu. KopÄ«gi izdomÄjÄm tÄmu plÄnu, katrs no topoÅ”ajiem pasniedzÄjiem paÅÄma vienu sev un sagatavoja par to referÄtu.
ā KÄdas grÅ«tÄ«bas bija skolÄniem?
ā GalvenokÄrt, protams, arhitektÅ«ra. Bija daudz jautÄjumu par mÅ«su testu struktÅ«ru. AtsauksmÄs par Å”o tÄmu tika rakstÄ«ts daudz un nÄcÄs rÄ«kot papildus lekcijas, lai sÄ«kÄk izskaidrotu.
ā Vai skola atmaksÄjÄs?
- JÄ noteikti. Pateicoties viÅai, testu rakstÄ«Å”anÄ tika iesaistÄ«ti daudzi cilvÄki, un vidÄji slimnÄ«cÄ visi sÄka labÄk saprast, kas ir autotesti, kÄ tie tiek rakstÄ«ti un kÄ tie tiek palaisti. SamazinÄjusies arÄ« automatizÄcijas inženieru slodze: tagad mÄs saÅemam daudzkÄrt mazÄk lÅ«gumu pÄc palÄ«dzÄ«bas testu analÄ«zÄ, jo testÄtÄji un izstrÄdÄtÄji gandrÄ«z visÄs situÄcijÄs ir sÄkuÅ”i ar to tikt galÄ paÅ”i. Nu, nodaļai ir vairÄkas iekÅ”ÄjÄs priekÅ”rocÄ«bas: mÄs guvÄm pieredzi prezentÄcijÄs un lekcijÄs, pateicoties kurÄm daži automatizÄcijas inženieri jau ir paspÄjuÅ”i uzstÄt prezentÄcijas konferencÄs, kÄ arÄ« saÅÄmuÅ”i jaudÄ«gu video un prezentÄciju komplektu jaunpienÄcÄjiem.
SavÄ vÄrdÄ piebildÄ«Å”u, ka saziÅa starp mÅ«su nodaļÄm ir vienkÄrÅ”ota lÄ«dz gluži smieklÄ«gi vieglam lÄ«menim. PiemÄram, tagad man praktiski nav jÄdomÄ, kurus gadÄ«jumus un kÄdÄ atomitÄtes lÄ«menÄ« automatizÄt. RezultÄtÄ visi interesenti pilnÄ«bÄ rÅ«pÄjas par testa pÄrklÄjumu, kas nepÄrtraukti pieaug. Neviens neprasa no citiem neiespÄjamo.
KopumÄ ietekme uz komandu darbu noteikti ir pozitÄ«va. VarbÅ«t arÄ« kolÄÄ£i, lasot Å”o rakstu, domÄ darÄ«t ko lÄ«dzÄ«gu? Tad padoms bÅ«s vienkÄrÅ”s: tas ir tÄ vÄrts, ja automÄtiskÄs pÄrbaudes ir jÅ«su prioritÄte. TÄlÄk mÄs runÄsim par sarežģītÄku jautÄjumu: kÄ to visu organizÄt pÄc iespÄjas pareizÄk, lai visu puÅ”u izmaksas bÅ«tu minimÄlas un produkcija bÅ«tu maksimÄla.
OrganizÄÅ”anas padomi
Skola bija noderÄ«ga, taÄu, kÄ atzina Stass, bija zinÄmas grÅ«tÄ«bas, kuru dÄļ bija jÄorganizÄ papildu lekcijas. Un tieÅ”i kÄ nesens students, salÄ«dzinot sevi neziÅÄ un sevi tagad, es formulÄju Å”Ädas darbÄ«bas, lai izveidotu, manuprÄt, ideÄlu veidu, kÄ iemÄcÄ«t testÄtÄjiem izprast automatizÄtos testus.
0. darbÄ«ba. Izveidojiet vÄrdnÄ«cu
Protams, Å”is solis ir vajadzÄ«gs ne tikai kvalitÄtes nodroÅ”inÄÅ”anai. TomÄr es vÄlos to skaidri pateikt: automatizÄcijas kodu bÄze ir jÄsaglabÄ lasÄmÄ formÄ. ProgrammÄÅ”anas valodas - ne mazÄk svarÄ«gi ŃŠ·ŃŠŗŠø, un no tÄ jÅ«s varat sÄkt savu nirÅ”anu.
Å eit ir uzdevuma skata ekrÄnuzÅÄmums ar elementu nosaukumiem. IedomÄsimies, ka jÅ«s testÄjat TaskView kÄ melno kasti un nekad savÄ dzÄ«vÄ neesat redzÄjis SelÄnu. Ko Å”is kods dara?
(Spoileris ā uzdevums administratora vÄrdÄ tiek izdzÄsts, izmantojot atpÅ«tu, un tad mÄs redzam, ka straumÄ ir par to ieraksts.)
Å is solis vien tuvina QAA un QA valodas. AutomatizÄcijas komandÄm ir vieglÄk izskaidrot darbÄ«bas rezultÄtus; manuÄlajiem testÄtÄjiem ir jÄtÄrÄ mazÄk pūļu, veidojot gadÄ«jumus: tos var padarÄ«t mazÄk detalizÄtus. TomÄr visi viens otru saprot. Laimestu saÅÄmÄm pat pirms Ä«stÄ treniÅa sÄkuma.
1. darbÄ«ba. AtkÄrtojiet frÄzes
TurpinÄsim paralÄli ar valodu. Kad mÄs bÄrnÄ«bÄ mÄcÄmies runÄt, mÄs nesÄkam no etimoloÄ£ijas un semantikas. MÄs atkÄrtojam āmammaā, āpÄrciet rotaļlietuā, bet nekavÄjoties neiedziļinÄmies Å”o vÄrdu protoindoeiropieÅ”u saknÄs. TÄ tas ir Å”eit: nav jÄgas ienirt paÅ”os autotestu tehnisko Ä«paŔību dziļumos, nemÄÄ£inot uzrakstÄ«t kaut ko, kas darbojas.
Tas izklausÄs nedaudz pretrunÄ«gi, bet tas darbojas.
PirmajÄ nodarbÄ«bÄ ir vÄrts dot pamatu, kÄ tieÅ”i rakstÄ«t autotestus. MÄs palÄ«dzam izveidot izstrÄdes vidi (manÄ gadÄ«jumÄ Intellij IDEA), izskaidrojam minimÄlos valodas noteikumus, kas nepiecieÅ”ami, lai esoÅ”ajÄ klasÄ rakstÄ«tu citu metodi, izmantojot esoÅ”Äs darbÄ«bas. Ar viÅiem uzrakstÄm vienu vai divus kontroldarbus un uzdodam mÄjasdarbu, ko es noformÄtu Å”Ädi: no meistara atzaroja zars, bet no tÄ ir izÅemti vairÄki kontroldarbi. PalikuÅ”i tikai to apraksti. MÄs lÅ«dzam testÄtÄjus atjaunot Å”os testus (protams, ne izmantojot Å”ova atŔķirÄ«bas).
RezultÄtÄ tas, kurÅ” klausÄ«jÄs un darÄ«ja visu, varÄs:
- iemÄcÄ«ties strÄdÄt ar izstrÄdes vides interfeisu: veidojot filiÄles, karstos taustiÅus, commits un push;
- apgÅ«t valodas un nodarbÄ«bu struktÅ«ras pamatus: kur ievietot injekcijas un kur importÄt, kÄpÄc vajadzÄ«gas anotÄcijas un kÄdi simboli tur atrodami, bez soļiem;
- saprast atŔķirÄ«bu starp darbÄ«bu, gaidÄ«t un pÄrbaudÄ«t, kur ko izmantot;
- ievÄrojiet atŔķirÄ«bu starp automÄtiskajÄm pÄrbaudÄm un manuÄlajÄm pÄrbaudÄm: automÄtiskajos testos jÅ«s varat izvilkt vienu vai otru apdarinÄtÄju, nevis veikt darbÄ«bas caur saskarni. PiemÄram, nosÅ«tiet komentÄru tieÅ”i uz aizmugursistÄmu, nevis atveriet uzdevuma skatu, atlasiet ievadi, ierakstiet tekstu un noklikŔķiniet uz pogas SÅ«tÄ«t;
- formulÄjiet jautÄjumus, uz kuriem atbildes tiks sniegtas nÄkamajÄ solÄ«.
PÄdÄjais punkts ir ļoti svarÄ«gs. Å Ä«s atbildes var viegli sniegt pirms laika, taÄu svarÄ«gs ir mÄcÄ«Å”anas princips, ka atbildes bez formulÄtiem jautÄjumiem netiek atcerÄties un netiek izmantotas, kad tÄs beidzot ir vajadzÄ«gas.
BÅ«tu ideÄli, ja Å”ajÄ laikÄ automatizÄcijas inženieris no QA komandas viÅam uzticÄtu uzdevumu uzrakstÄ«t pÄris testus kaujÄ un ļautu viÅam pakļauties savai nozarei.
Ko nedrīkst dot:
- padziļinÄtÄkas zinÄÅ”anas par izstrÄdes vides funkcionalitÄti un paÅ”u programmÄÅ”anas valodu, kas bÅ«s nepiecieÅ”amas tikai patstÄvÄ«gi strÄdÄjot ar filiÄlÄm. To neatcerÄsies, jums tas bÅ«s jÄpaskaidro divreiz vai trÄ«sreiz, bet mÄs augstu vÄrtÄjam automatizÄcijas inženieru laiku, vai ne? PiemÄri: konfliktu risinÄÅ”ana, failu pievienoÅ”ana git, klaÅ”u izveide no nulles, darbs ar atkarÄ«bÄm;
- viss, kas saistÄ«ts ar xpath. Nopietni. Par to jÄrunÄ atseviŔķi, vienreiz un ļoti koncentrÄti.
2. solis. SÄ«kÄka gramatikas apskate
AtcerÄsimies uzdevuma skata ekrÄnuzÅÄmumu no 0. darbÄ«bas. Mums ir darbÄ«ba ar nosaukumu checkCommentWithTextExists. MÅ«su testÄtÄjs jau saprot, ko dara Å”is solis, un mÄs varam ieskatÄ«ties soļa iekÅ”pusÄ un nedaudz to sadalÄ«t.
Un iekÅ”Ä mums ir Å”Ädas lietas:
onCommentBlock(userName).comment(expectedText).should(displayed());
Kur atrodas onCommentBlock
onCommonStreamPanel().commentBlock(userName);
Tagad mÄs mÄcÄmies teikt nevis āpÄrc rotaļlietuā, bet gan āpÄrc rotaļlietu veikalÄ Detsky Mir, kas atrodas zilajÄ skapÄ« treÅ”ajÄ plauktÄ no augÅ”asā. JÄpaskaidro, ka mÄs norÄdÄm uz elementu secÄ«gi, no lielÄkiem elementiem (straume -> bloks ar komentÄriem no noteiktas personas -> tÄ Å”Ä« bloka daļa, kurÄ atrodas norÄdÄ«tais teksts).
NÄ, vÄl nav pienÄcis laiks runÄt par xpath. VienkÄrÅ”i Ä«si norÄdiet, ka viÅi ir aprakstÄ«juÅ”i visus Å”os norÄdÄ«jumus un mantoÅ”ana notiek caur tiem. Bet mums ir jÄrunÄ par visiem Å”iem saderinÄtÄjiem un viesmīļiem; tie attiecas tieÅ”i uz Å”o soli un ir nepiecieÅ”ami, lai saprastu, kas notiek. Bet nepÄrslogojieties: vÄlÄk jÅ«su students var patstÄvÄ«gi izpÄtÄ«t sarežģītÄkus apgalvojumus. VisticamÄk, vajadzÄtu, gaidÄ«tUntil, parÄdÄ«ts();, pastÄv();, not(); vajadzÄtu pietikt.
MÄjasdarbs ir acÄ«mredzams: filiÄle, kurÄ ir noÅemts vairÄku darbÄ«bu saturs, kas nepiecieÅ”ams noteiktam kontroldarbu skaitam. Ä»aujiet testÄtÄjiem tos atjaunot un padarÄ«t skrÄjienu atkal zaļu.
TurklÄt, ja testÄÅ”anas komandai ir ne tikai jaunas funkcijas, bet arÄ« daži kļūdu labojumi, varat lÅ«gt viÅu nekavÄjoties uzrakstÄ«t Å”o kļūdu testus un atbrÄ«vot tos. VisticamÄk, visi elementi jau ir aprakstÄ«ti, var pietrÅ«kt tikai pÄris soļu. Å is bÅ«s ideÄls treniÅÅ”.
Solis 3. PilnÄ«ga iegremdÄÅ”ana
PÄc iespÄjas pilnÄ«gÄks testÄtÄjam, kurÅ” gatavojas turpinÄt pildÄ«t savus tieÅ”os pienÄkumus. Visbeidzot, mums ir jÄrunÄ par xpath.
PirmkÄrt, ļaujiet mums paskaidrot, ka viÅi apraksta visus Å”os onCommentBlock un komentÄrus.
KopÄ:
"//div[contains(@class, āstream-panelā)]//a[contains(@class,'author') and text()='{{ userName }}ā]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}ā)]"
Ä»oti svarÄ«ga ir stÄsta secÄ«ba. PirmkÄrt, mÄs Åemam jebkuru esoÅ”o xpath un parÄdÄm, kÄ elementu cilnÄ ir viens un tikai viens elements. TÄlÄk mÄs runÄsim par struktÅ«ru: kad jums ir jÄizmanto WebElement un kad ir jÄizveido atseviŔķs fails jaunam elementam. Tas ļaus jums labÄk izprast mantojumu.
Ir skaidri jÄnorÄda, ka viens elements ir viss uzdevuma skats, tajÄ ir bÄrnelements - visa straume, kurÄ ir bÄrna elements - atseviŔķs komentÄrs utt. PakÄrtotie elementi atrodas vecÄku elementos gan lapÄ, gan automÄtiskÄs pÄrbaudes ietvara struktÅ«rÄ.
Å ajÄ brÄ«dÄ« auditorijai bija skaidri jÄsaprot, kÄ tÄs tiek mantotas un ko var ievadÄ«t pÄc punkta onCommentBlock. Å ajÄ brÄ«dÄ« mÄs izskaidrojam visus operatorus: /, //, ., [] un tÄ tÄlÄk. Kravai pievienojam zinÄÅ”anas par lietoÅ”anu @class
un citas nepiecieÅ”amÄs lietas.
Studentiem vajadzÄtu saprast, kÄ Å”ÄdÄ veidÄ tulkot xpath. KonsolidÄt - tieÅ”i tÄ, mÄjasdarbs. IzdzÄÅ”am elementu aprakstus, ļaujam atjaunot testu darbu.
KÄpÄc Å”is konkrÄtais ceļŔ?
Mums nevajadzÄtu pÄrslogot cilvÄku ar sarežģītÄm zinÄÅ”anÄm, bet mums viss ir jÄpaskaidro uzreiz, un tÄ ir sarežģīta dilemma. Å is ceļŔ ļaus mums vispirms likt klausÄ«tÄjiem uzdot jautÄjumus un kaut ko nesaprast un atbildÄt uz tiem jau nÄkamajÄ brÄ«dÄ«. Ja runÄ par visu arhitektÅ«ru, tad, kad tiks analizÄta soļu vai xpath tÄma, tÄs svarÄ«gÄkÄs daļas jau bÅ«s aizmirstas to nesaprotamÄ«bas dÄļ.
TomÄr daži no jums, iespÄjams, varÄs dalÄ«ties pieredzÄ par to, kÄ procesu var optimizÄt vÄl vairÄk. Ar prieku lasÄ«Å”u lÄ«dzÄ«gus ieteikumus komentÄros!
Avots: www.habr.com