Kthimi në shkollë: si të trajnohen testuesit manualë për t'u marrë me testet e automatizuara

Katër nga pesë aplikantë të QA duan të mësojnë se si të punojnë me teste të automatizuara. Jo të gjitha kompanitë mund të përmbushin dëshirat e tilla të testuesve manualë gjatë orarit të punës. Wrike mbajti një shkollë automatizimi për punonjësit dhe e realizoi këtë dëshirë për shumë njerëz. Unë kam marrë pjesë në këtë shkollë pikërisht si student i SC.

Mësova se si të punoj me Selenium dhe tani mbështes në mënyrë të pavarur një numër të caktuar autotestesh praktikisht pa ndihmë nga jashtë. Dhe, bazuar në rezultatet e përvojës sonë të përbashkët dhe konkluzioneve të mia personale, do të përpiqem të nxjerr vetë formulën për shkollën më ideale të automatizimit.

Përvoja e Wrike në organizimin e një shkolle

Kur nevoja për një shkollë automatizimi u bë e qartë, organizimi i saj i ra Stas Davydov, drejtuesi teknik i automatizimit. Kush tjetër veç tij mund të shpjegojë pse ata dolën me këtë iniciativë, nëse arritën rezultate dhe nëse u penduan për kohën e kaluar? Le t'i japim fjalën:

— Në vitin 2016, ne shkruam një kornizë të re për autotestet dhe e bëmë atë në mënyrë që të bëhej e lehtë për të shkruar teste: u shfaqën hapa normalë, struktura u bë shumë më e kuptueshme. Ne dolëm me një ide: ne duhet të përfshijmë të gjithë ata që duan të shkruajnë teste të reja dhe për ta bërë më të lehtë për t'u kuptuar, kemi krijuar një seri leksionesh. Ne dolëm kolektivisht me një plan temash, secili nga pedagogët e ardhshëm mori një për vete dhe përgatiti një raport për të.

— Çfarë vështirësish kishin nxënësit?

— Kryesisht, sigurisht, arkitektura. Kishte shumë pyetje në lidhje me strukturën e testeve tona. Në komente, u shkrua shumë për këtë temë dhe na u desh të mbajmë leksione shtesë për të shpjeguar më në detaje.

— Shkolla u shpërblye?

- Po, patjetër. Falë saj, shumë njerëz u përfshinë në shkrimin e testeve dhe, mesatarisht, në spital, të gjithë filluan të kuptojnë më mirë se çfarë janë autotestet, si shkruhen dhe si lansohen. Ngarkesa për inxhinierët e automatizimit është ulur gjithashtu: ne tani marrim shumë herë më pak kërkesa për ndihmë me analizimin e testeve, pasi testuesit dhe zhvilluesit kanë filluar ta përballojnë vetë këtë në pothuajse të gjitha situatat. Epo, ka disa avantazhe të brendshme për departamentin: ne fituam përvojë në prezantime dhe leksione, falë të cilave disa inxhinierë automatizimi kanë arritur tashmë të bëjnë prezantime në konferenca, dhe gjithashtu kanë marrë një grup të fuqishëm videosh dhe prezantimesh për hyrjen e të sapoardhurve.

Në emrin tim, unë do të shtoj se komunikimi midis departamenteve tona është thjeshtuar në një nivel krejtësisht qesharak të lehtë. Për shembull, tani praktikisht nuk kam nevojë të mendoj se cilat raste dhe në çfarë niveli atomiciteti të automatizoj. Si rrjedhojë, të gjithë të interesuarit po kujdesen plotësisht për mbulimin e testeve, i cili është në rritje të vazhdueshme. Askush nuk kërkon të pamundurën nga të tjerët.

Në përgjithësi, ndikimi në punën e ekipeve është padyshim pozitiv. Ndoshta kolegët që lexojnë këtë artikull po mendojnë gjithashtu të bëjnë diçka të ngjashme? Atëherë këshilla do të jetë e thjeshtë: ia vlen nëse testet e automatizuara janë prioritet për ju. Tjetra, ne do të flasim për një pyetje më komplekse: si ta organizojmë të gjithë këtë sa më saktë që të jetë e mundur, në mënyrë që kostot e të gjitha palëve të jenë minimale dhe produkti të jetë maksimal.

Këshilla për organizimin

Shkolla ishte e dobishme, por, siç pranoi Stas, kishte disa vështirësi, për shkak të të cilave ishte e nevojshme të organizoheshin leksione shtesë. Dhe ishte kur një student i kohëve të fundit krahasoja veten time në padije dhe veten time tani që unë formulova hapat e mëposhtëm për të krijuar, sipas mendimit tim, mënyrën ideale për t'i mësuar testuesit të kuptojnë testet e automatizuara.

Hapi 0. Krijo një fjalor

Sigurisht, ky hap është i nevojshëm jo vetëm për SC. Megjithatë, dua ta bëj të qartë: baza e kodit të automatizimit duhet të mbahet në një formë të lexueshme. Gjuhët e programimit - jo më pak e rëndësishme Gjuhë, dhe nga kjo ju mund të filloni zhytjen tuaj.

Kthimi në shkollë: si të trajnohen testuesit manualë për t'u marrë me testet e automatizuara

Këtu është një pamje nga ekrani i një pamjeje detyrash me emrat e elementeve. Le të imagjinojmë se po testoni taskview si një kuti të zezë dhe nuk keni parë kurrë Selenium në jetën tuaj. Çfarë bën ky kod?

Kthimi në shkollë: si të trajnohen testuesit manualë për t'u marrë me testet e automatizuara

(Spoiler - detyra fshihet përmes pushimit në emër të administratorit, dhe më pas shohim që ka një regjistrim të kësaj në transmetim.)

Vetëm ky hap i afron gjuhët QAA dhe QA. Është më e lehtë për ekipet e automatizimit të shpjegojnë rezultatet e një drejtimi; testuesit manual duhet të shpenzojnë më pak përpjekje për krijimin e rasteve: ato mund të bëhen më pak të detajuara. Megjithatë, të gjithë e kuptojnë njëri-tjetrin. Ne i morëm fitimet edhe para se të fillonte trajnimi aktual.

Hapi 1. Përsëritni frazat

Le të vazhdojmë paralelen me gjuhën. Kur mësojmë të flasim si fëmijë, nuk nisemi nga etimologjia dhe semantika. Ne përsërisim "mami", "blini një lodër", por mos hyni menjëherë në rrënjët proto-indo-evropiane të këtyre fjalëve. Kështu është këtu: nuk ka kuptim të zhyteni në thellësi të veçorive teknike të autotesteve pa u përpjekur të shkruani diçka që funksionon.
Tingëllon pak kundërintuitive, por funksionon.

Në mësimin e parë, ia vlen të jepet një bazë se si të shkruani autoteste drejtpërdrejt. Ne ndihmojmë në vendosjen e mjedisit të zhvillimit (në rastin tim, Intellij IDEA), shpjegojmë rregullat minimale të gjuhës që janë të nevojshme për të shkruar një metodë tjetër në një klasë ekzistuese duke përdorur hapat ekzistues. Me ta shkruajmë një ose dy teste dhe u japim detyra shtëpie, të cilat do t'i formatoja kështu: një degë e degëzuar nga masteri, por i janë hequr disa teste. Mbeten vetëm përshkrimet e tyre. Ne u kërkojmë testuesve të rivendosin këto teste (sigurisht jo përmes ndryshimit të shfaqjes).

Si rezultat, ai që dëgjoi dhe bëri gjithçka do të jetë në gjendje:

  1. mësoni të punoni me ndërfaqen e mjedisit të zhvillimit: krijimi i degëve, çelësave të nxehtë, angazhimeve dhe shtytjeve;
  2. zotëroni bazat e strukturës së gjuhës dhe klasave: ku të futni injeksione dhe ku të importoni, pse nevojiten shënime dhe çfarë lloj simbolesh gjenden atje, përveç hapave;
  3. kuptoni ndryshimin midis veprimit, prisni dhe kontrolloni, ku të përdorni çfarë;
  4. vini re ndryshimin midis autotesteve dhe kontrolleve manuale: në autoteste mund të tërhiqni një ose një tjetër mbajtës në vend që të kryeni veprime përmes ndërfaqes. Për shembull, dërgoni një koment direkt në backend në vend që të hapni një pamje pune, të zgjidhni hyrjen, të shtypni tekstin dhe të klikoni butonin Dërgo;
  5. formuloni pyetje që do të marrin përgjigje në hapin tjetër.

Pika e fundit është shumë e rëndësishme. Këto përgjigje mund të jepen lehtësisht përpara kohe, por është një parim i rëndësishëm mësimdhënieje që përgjigjet pa pyetje të formuluara nuk mbahen mend dhe nuk përdoren kur më në fund nevojiten.

Do të ishte ideale nëse në këtë kohë një inxhinier automatizimi nga ekipi i QA-së do t'i caktonte një detyrë me shkrimin e disa testeve në betejë dhe do ta lejonte të nënangazhohej në degën e tij.

Çfarë nuk duhet dhënë:

  1. njohuri më të thella të funksionalitetit të mjedisit të zhvillimit dhe vetë gjuhës së programimit, të cilat do të nevojiten vetëm kur punoni me degë në mënyrë të pavarur. Nuk do të mbahet mend, do të duhet ta shpjegoni dy ose tre herë, por ne vlerësojmë kohën e inxhinierëve të automatizimit, apo jo? Shembuj: zgjidhja e konflikteve, shtimi i skedarëve në git, krijimi i klasave nga e para, puna me varësi;
  2. gjithçka që lidhet me xpath. Seriozisht. Ju duhet të flisni për këtë veçmas, një herë dhe shumë të përqendruar.

Hapi 2. Duke parë nga afër gramatikën

Le të kujtojmë pamjen e pamjes së detyrave nga hapi #0. Ne kemi një hap të quajtur checkCommentWithTextExists. Testuesi ynë tashmë e kupton se çfarë bën ky hap dhe ne mund të shikojmë brenda hapit dhe ta zbërthejmë atë pak.

Dhe brenda kemi sa vijon:

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

Ku është onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Tani mësojmë të themi jo "bli një lodër", por "blej një lodër nga dyqani Detsky Mir, i vendosur në kabinetin blu në raftin e tretë nga lart". Është e nevojshme të shpjegohet se ne tregojmë një element në mënyrë sekuenciale, nga elementë më të mëdhenj (stream -> bllok me komente nga një person i caktuar -> atë pjesë të këtij blloku ku qëndron teksti i specifikuar).

Jo, nuk është ende koha për të folur për xpath. Thjesht përmendni shkurtimisht se të gjitha këto udhëzime janë përshkruar prej tyre dhe trashëgimia kalon përmes tyre. Por ne duhet të flasim për të gjithë këta matës dhe kamerierë; ata lidhen veçanërisht me këtë hap dhe janë të nevojshëm për të kuptuar se çfarë po ndodh. Por mos e mbingarkoni: studenti juaj mund të studiojë vetë pohime më komplekse më vonë. Me shumë mundësi, duhet, presim Deri, shfaqet();, ekzistoj();, jo(); duhet të mjaftojë.

Detyrat e shtëpisë janë të dukshme: një degë në të cilën është hequr përmbajtja e disa hapave që janë të nevojshëm për një numër të caktuar testesh. Lërini testuesit t'i rivendosin ato dhe bëni që vrapimi të jetë përsëri i gjelbër.

Për më tepër, nëse ekipi i testimit ka jo vetëm veçori të reja në punën e tij, por edhe disa rregullime të gabimeve, mund t'i kërkoni atij që menjëherë të shkruajë teste për këto gabime dhe t'i lëshojë ato. Me shumë mundësi, të gjithë elementët janë përshkruar tashmë; mund të mungojnë vetëm disa hapa. Ky do të jetë stërvitja perfekte.

Hapi 3. Zhytje e plotë

Sa më i plotë për një testues që do të vazhdojë të kryejë detyrat e tij të drejtpërdrejta. Më në fund, duhet të flasim për xpath.

Së pari, le të bëjmë të qartë se të gjitha këto onCommentBlock dhe komente janë përshkruar prej tyre.

Kthimi në shkollë: si të trajnohen testuesit manualë për t'u marrë me testet e automatizuara

Total:

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

Rendi i tregimit është shumë i rëndësishëm. Së pari, marrim çdo xpath ekzistues dhe tregojmë se si skeda e elementeve përmban një dhe vetëm një element. Më pas, do të flasim për strukturën: kur duhet të përdorni WebElement dhe kur duhet të krijoni një skedar të veçantë për një element të ri. Kjo do t'ju lejojë të kuptoni më mirë trashëgiminë.

Duhet të thuhet qartë se një element i vetëm është i gjithë pamja e detyrave, ai përmban një element fëmijë - të gjithë transmetimin, i cili përmban një element fëmijë - një koment të veçantë, etj. Elementet fëmijë janë brenda elementëve prindër si në faqe ashtu edhe në strukturën e kornizës së autotestit.

Në këtë pikë, audienca duhet ta kishte kuptuar plotësisht se si trashëgohen dhe çfarë mund të futet pas pikës në onCommentBlock. Në këtë pikë, ne shpjegojmë të gjithë operatorët: /, //, ., [] dhe kështu me radhë. Ne shtojmë njohuri për përdorimin në ngarkesë @class dhe gjëra të tjera të nevojshme.

Kthimi në shkollë: si të trajnohen testuesit manualë për t'u marrë me testet e automatizuara

Nxënësit duhet të kuptojnë se si të përkthejnë xpath në këtë mënyrë. Për të konsoliduar - kjo është e drejtë, detyra shtëpie. Ne fshijmë përshkrimet e elementeve, le të rivendosin punën e testeve.

Pse kjo rrugë e veçantë?

Nuk duhet të mbingarkojmë një person me njohuri komplekse, por duhet të shpjegojmë gjithçka menjëherë, dhe kjo është një dilemë e vështirë. Kjo rrugë do të na lejojë që së pari t'i bëjmë dëgjuesit të bëjnë pyetje dhe të mos kuptojnë diçka dhe t'u përgjigjemi atyre në momentin tjetër. Nëse flisni për të gjithë arkitekturën, atëherë në kohën kur të analizohet tema e hapave ose xpath, pjesët më të rëndësishme të saj tashmë do të harrohen për shkak të pakuptueshmërisë së tyre.

Megjithatë, disa prej jush ndoshta do të jenë në gjendje të ndajnë përvojën tuaj se si procesi mund të optimizohet edhe më shumë. Do të jem i lumtur të lexoj sugjerime të ngjashme në komente!

Burimi: www.habr.com

Shto një koment