Vegere dibistanê: meriv çawa ceribandinên destan perwerde dike ku bi ceribandinên otomatîkî re mijûl bibin

Çar ji pênc serlêderên QA dixwazin fêr bibin ka meriv çawa bi ceribandinên otomatîkî re dixebite. Ne hemî pargîdan dikarin daxwazên weha yên testerên destan di demjimêrên xebatê de bicîh bînin. Wrike ji bo karmendan dibistanek otomasyonê li dar xist û ev daxwaz ji bo gelek kesan pêk anî. Ez tam wek xwendekarekî QA beşdarî vê dibistanê bûm.

Ez fêr bûm ka meriv çawa bi Selenium re dixebitim û naha bi rengek serbixwe piştgirî dide hejmarek testên otomatê bi rastî bêyî alîkariya derve. Û, li ser bingeha encamên ezmûna meya hevbeş û encamên min ên kesane, ez ê hewl bidim ku formula pir ji bo dibistana herî îdeal a xweseriyê derxim.

Ezmûna Wrike di organîzekirina dibistanekê de

Dema ku hewcedariya dibistanek otomasyonê diyar bû, rêxistina wê ket destê Stas Davydov, rêberê teknîkî yê otomasyonê. Ji bilî wî kî dikare rave bike ka çima wan bi vê înîsiyatîfê rabûn, gelo wan encam bi dest xistin û gelo ew ji dema derbasbûyî poşman in? Ka em wî bidin axaftin:

- Di sala 2016-an de, me çarçoveyek nû ji bo ototestan nivîsand û wusa kir ku nivîsandina testan hêsan bû: gavên normal xuya bûn, avahî pir bêtir fêm kirin. Me ramanek derxist: pêdivî ye ku em her kesê ku dixwazin ceribandinên nû binivîsin tê de beşdar bibin, û ji bo ku ew hêsan were fam kirin, me rêzek ders çêkirin. Me bi hev re planek mijaran amade kir, her yek ji mamosteyên paşerojê yek ji xwe re girt û li ser wê raporek amade kir.

- Çi zehmetiyên xwendekaran hebûn?

- Bê guman, sereke, mîmarî. Gelek pirs li ser avahiya testên me hebûn. Di bersivdayînê de, li ser vê mijarê gelek tişt hatin nivîsandin û me neçar ma ku dersên din li dar bixin da ku bi hûrgulî rave bikin.

- Mektebê heq kir?

- Belê, teqez. Bi saya wê, gelek kes beşdarî ceribandinên nivîsandinê bûn, û, bi gelemperî, li nexweşxaneyê, her kesî dest pê kir ku çêtir fêm bikin ka ototest çi ne, ew çawa têne nivîsandin û çawa têne destpêkirin. Barkirina li ser endezyarên otomasyonê jî kêm bûye: em naha gelek caran kêmtir daxwazên alîkariyê ji bo analîzkirina ceribandinan distînin, ji ber ku ceribandin û pêşdebiran hema hema di hemî rewşan de dest bi vê yekê kirine. Welê, ji bo beşê gelek avantajên hundurîn hene: me di pêşkêşî û dersan de ezmûnek bi dest xist, bi saya wan hin endezyarên otomasyonê berê xwe gihandine konferansan, û di heman demê de komek vîdyo û pêşandanek hêzdar jî ji bo servekirina nûhatiyan wergirtine.

Li ser navê xwe, ez ê lê zêde bikim ku danûstendina di navbera beşên me de heya astek bêkêmasî ya hêsan hêsan bûye. Mînakî, naha ez bi pratîkî ne hewce ne ku bifikirim ka kîjan bûyer û di kîjan astê atomê de bixweber bikim. Wekî encamek, hemî aliyên eleqedar bi tevahî lênihêrîna ceribandinê digirin, ku bi domdarî mezin dibe. Kes ji yên din daxwaza ne mumkun nake.

Bi gelemperî, bandora li ser xebata tîmê bê guman erênî ye. Dibe ku hevkarên ku vê gotarê dixwînin jî difikirin ku tiştek wusa bikin? Wê hingê şîret dê hêsan be: heke ceribandinên otomatîkî ji we re pêşînek be hêja ye. Dûv re, em ê li ser pirsek tevlihevtir biaxivin: meriv çawa vê yekê bi qasî ku pêkan rast organîze dike, da ku lêçûnên hemî partiyan hindik be û encam herî zêde be.

Serişteyên ji bo rêxistinê

Dibistan kêrhatî bû, lê, wekî Stas qebûl kir, hin dijwarî hebûn, ji ber vê yekê hewce bû ku dersên din werin saz kirin. Û ev bû ku wekî xwendekarek vê dawîyê ku xwe-di nezaniyê û xwe-naha dide ber hev ku min gavên jêrîn formule kir da ku, bi dîtina min, awayê îdeal ji bo fêrkirina ceribandinvanan ji bo fêmkirina ceribandinên otomatîkî biafirînim.

Gav 0. Ferhengek biafirîne

Bê guman, ev gav ne tenê ji bo QA hewce ye. Lêbelê, ez dixwazim wiya eşkere bikim: bingeha koda otomasyonê divê di formek xwendinê de were girtin. Zimanên bernamekirinê - ne hindik zimanan, û ji vê yekê hûn dikarin diveya xwe dest pê bikin.

Vegere dibistanê: meriv çawa ceribandinên destan perwerde dike ku bi ceribandinên otomatîkî re mijûl bibin

Li vir dîmenek peywirek bi navên hêmanan heye. Ka em bifikirin ku hûn wekî qutiyek reş ceribandina peywirê dikin û di jiyana xwe de tu carî Selenium nedîtiye. Ev kod çi dike?

Vegere dibistanê: meriv çawa ceribandinên destan perwerde dike ku bi ceribandinên otomatîkî re mijûl bibin

(Spoiler - peywir li ser navê rêveberê bi navgîniya mayînê tê jêbirin, û dûv re em dibînin ku di navberê de tomarek vê yekê heye.)

Ev gav tenê zimanên QAA û QA nêzî hev dike. Ji bo tîmên otomasyonê ravekirina encamên rêvekirinê hêsantir e; ceribandinên destan neçar in ku ji bo afirandina dozan kêmtir hewil bidin: ew dikarin kêm hûrgulî bêne çêkirin. Dîsa jî, her kes ji hev fêm dike. Beriya ku perwerdehiya rastîn dest pê bike jî me serketî wergirt.

Gav 1. Hevokên dubare bikin

Em paraleliya ziman bidomînin. Dema em di zarokatiyê de hînî axaftinê dibin, em ji etîmolojî û semantîkê dest pê nakin. Em "dayê", "lîstokek bikirin" dubare dikin, lê tavilê naçin nav kokên proto-hindûewropî yên van peyvan. Ji ber vê yekê ew li vir e: bêyî ku hewl bidin ku tiştek ku kar dike binivîsin, ti xalek tune ku meriv di kûrahiya taybetmendiyên teknîkî yên ototestan de binivisîne.
Ew hinekî dijberî xuya dike, lê ew dixebite.

Di dersa yekem de, hêja ye ku bingehek were dayîn ka meriv çawa rasterast testên xweser dinivîse. Em arîkariya sazkirina hawîrdora pêşkeftinê dikin (di rewşa min de, Intellij IDEA), qaîdeyên ziman ên hindiktirîn ên ku ji bo nivîsandina rêbazek din di pola heyî de bi karanîna gavên heyî hewce ne rave dikin. Em bi wan re yek an du testan dinivîsin û dersên malê didin wan, ku ez ê bi vî rengî format bikim: şaxek ji masterê veqetiyaye, lê çend ceribandin jê hatine derxistin. Tenê wesfên wan mane. Em ji ceribandinvanan daxwaz dikin ku van ceribandinan sererast bikin (bê guman, ne bi cûdahiya nîşanê).

Di encamê de, yê ku guhdarî kir û her tişt kir dê bikaribe:

  1. fêr bibin ku bi navgîniya hawîrdora pêşkeftinê re bixebitin: afirandina şax, bişkojkên germ, commits û pushes;
  2. bingehên strukturên ziman û dersan fêr bibin: li ku derê têxin derzîyan û li ku derê têxin hundur, çima şîrovekirin hewce ne, û ji bilî gavan li wir çi celeb sembol têne dîtin;
  3. ferqa di navbera çalakiyê de fêm bikin, bisekinin û kontrol bikin, li ku derê çi bikar bînin;
  4. ferqa di navbera ceribandinên otomatîk û kontrolên destan de bibînin: di ototestan de hûn dikarin li şûna ku hûn bi navbeynkariyê çalakiyan pêk bînin, yek an yekî din bikişîne. Mînakî, li şûna vekirina peywirek, bijartina têketinê, nivîsandina nivîsê û tikandina bişkoka Send, rasterast şîroveyek ji piştê re bişînin;
  5. pirsên ku dê di gava pêş de werin bersivandin formule bikin.

Xala dawî pir girîng e. Van bersiv dikarin bi hêsanî ji pêşwext werin dayîn, lê ew prensîbek hînkirinê ya girîng e ku bersivên bêyî pirsên formulekirî nayên bîr kirin û gava ku di dawiyê de hewce be nayê bikar anîn.

Dê îdeal be heke di vê demê de endezyarek otomasyonê ji tîmê QA wî peywirek bi nivîsandina çend ceribandinan di şer de peywirdar bike û bihêle ku ew bi şaxê xwe ve girêdayî be.

Çi neyê dayîn:

  1. zanîna kûrtir li ser fonksiyona hawîrdora pêşkeftinê û zimanê bernamekirinê bixwe, ku dê tenê dema ku bi şaxên serbixwe re bixebite hewce bike. Ew ê neyê bîranîn, hûn ê du caran an sê caran wê rave bikin, lê em qîmetê didin dema endezyarên otomasyonê, rast? Wek
  2. her tiştê ku bi xpath ve girêdayî ye. Seriously. Pêdivî ye ku hûn li ser wê ji hev cuda biaxivin, carekê û pir bi baldarî.

Gav 2. Nêzîk nihêrîna rêzimanê

Werin em dîmena taskview ji gava #0 bi bîr bînin. Me gavek bi navê checkCommentWithTextExists heye. Testerê me jixwe fam dike ku ev gav çi dike û em dikarin di hundurê gavê de binihêrin û piçekî hilweşînin.

Û di hundurê me de jêrîn hene:

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

Li ku derê onCommentBlock ye

onCommonStreamPanel().commentBlock(userName);

Naha em fêr dibin ku em bibêjin ne "pêlîstokek bikire", lê "lîstokek ji firotgeha Detsky Mir, ku di kabîneya şîn a li ser refika sêyemîn ji jor de ye, bikire." Pêdivî ye ku were ravekirin ku em hêmanek bi rêz, ji hêmanên mezintir destnîşan dikin (stream -> bloka bi şîroveyên kesek diyar -> ew beşa vê blokê ku nivîsa diyarkirî lê rûniştiye).

Na, hîn ne wexta axaftinê ye li ser xpath. Tenê bi kurtasî behs bikin ku van hemî rêwerzan ji hêla wan ve têne vegotin û mîras bi wan re derbas dibe. Lê pêdivî ye ku em li ser van hemî hevber û garsonan biaxivin; ew bi taybetî bi vê gavê re têkildar in û hewce ne ku fêm bikin ka çi diqewime. Lê zêde bar nekin: xwendekarê we paşê dikare bi serê xwe îdîayên tevlihevtir bixwîne. Bi îhtîmaleke mezin, divê, li bendê Heta, tê nîşandan();, heye();, ne();

Karê malê diyar e: şaxek ku tê de naveroka çend gavên ku ji bo hejmarek ceribandinan hewce ne hatine rakirin. Bila ceribandinvanan wan sererast bikin û rê ji nû ve kesk bikin.

Wekî din, heke tîmê ceribandinê di xebata xwe de ne tenê taybetmendiyên nû, lê di heman demê de hin xeletî jî hebin, hûn dikarin jê bipirsin ku tavilê ji bo van xeletiyan ceribandinan binivîse û wan berde. Bi îhtîmalek mezin, hemî hêman berê hatine şirove kirin; dibe ku tenê du gav winda bibin. Ev dê bibe workout bêkêmahî.

Gav 3. Tevahiya avê

Ji bo ceribandinek ku dê berdewam bike ku peywirên xwe yên rasterast bidomîne bi qasî ku pêkan bêkêmasî ye. Di dawiyê de, divê em li ser xpath biaxivin.

Pêşîn, bila em eşkere bikin ku van hemî onCommentBlock û şîrove ji hêla wan ve têne vegotin.

Vegere dibistanê: meriv çawa ceribandinên destan perwerde dike ku bi ceribandinên otomatîkî re mijûl bibin

Total:

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

Rêzkirina çîrokê pir girîng e. Pêşîn, em her xpathek heyî digirin û destnîşan dikin ka tabloya hêmanan çawa yek û yek elementek dihewîne. Dûv re, em ê li ser strukturê biaxivin: gava ku hûn hewce ne ku WebElement bikar bînin, û gava ku hûn hewce ne ku ji bo hêmanek nû pelek cûda biafirînin. Ev ê bihêle ku hûn mîrasê çêtir fam bikin.

Pêdivî ye ku bi eşkere were gotin ku hêmanek yekane tevahiya peywirê ye, ew hêmanek zarokê vedihewîne - tevaya çemê, ku hêmanek zarokê vedihewîne - şîroveyek cûda, hwd. Hêmanên zarok di hundurê hêmanên dêûbav de hem li ser rûpelê û hem jî di avahiya çarçoweya xweseriya testê de ne.

Di vê nuqteyê de, divê temaşevan bi hişkî fêm kiriba ka ew çawa mîras in û çi dikare li dû xalê li onCommentBlock têkevin. Di vê xalê de, em hemî operatoran rave dikin: /, //, ., [] û hwd. Em zanyariyên di derbarê karanîna barkirinê de zêde dikin @class û tiştên din ên pêwîst.

Vegere dibistanê: meriv çawa ceribandinên destan perwerde dike ku bi ceribandinên otomatîkî re mijûl bibin

Divê xwendekar fêm bikin ka meriv çawa xpath bi vî rengî werdigerîne. Hevgirtin - rast e, karê malê. Em danasînên hêmanan jê dikin, bila ew xebata ceribandinan sererast bikin.

Çima ev riya taybetî?

Divê em mirovek bi zanîna tevlihev zêde negirin, lê divê em her tiştî bi carekê ve rave bikin, û ev dubendiyek dijwar e. Ev rê dê bihêle ku em pêşî li guhdaran bipirsin û tiştek fam nekin û di kêliya din de bersiva wan bidin. Ger hûn li ser tevahiya mîmariyê biaxivin, wê hingê dema ku mijara gav an jî xpath were analîz kirin, dê ji ber têgihîştina wan beşên herî girîng ên wê jixwe were ji bîr kirin.

Lêbelê, hin ji we dê belkî karibin ezmûna xwe parve bikin ka pêvajo çawa dikare hê bêtir xweşbîn bibe. Ez ê kêfxweş bibim ku di şîroveyan de pêşniyarên weha bixwînim!

Source: www.habr.com

Add a comment