Balik ka sakola: kumaha ngalatih testers manual pikeun nungkulan tés otomatis

Opat ti lima pelamar QA hoyong diajar kumaha cara damel sareng tés otomatis. Henteu sakabéh pausahaan bisa minuhan kahayang sapertos testers manual salila jam gawé. Wrike ngayakeun sakola automation pikeun karyawan sareng sadar kahayang ieu pikeun seueur. Kuring milu di sakola ieu persis salaku murid QA.

Kuring diajar kumaha damel sareng Selenium sareng ayeuna sacara mandiri ngadukung sababaraha tés otomatis kalayan ampir henteu aya bantosan luar. Sareng, dumasar kana hasil pangalaman gabungan urang sareng kacindekan pribadi kuring, kuring bakal nyobian nyandak rumus pikeun sakola otomatis anu paling idéal.

Pangalaman Wrike dina ngatur sakola

Nalika peryogi pikeun sakola automation janten jelas, organisasi na murag ka Stas Davydov, kalungguhan teknis ngeunaan automation. Saha deui tapi anjeunna tiasa ngajelaskeun naha aranjeunna sumping sareng inisiatif ieu, naha aranjeunna ngahontal hasil sareng naha aranjeunna kuciwa kana waktosna? Hayu urang masihan anjeunna lantai:

- Dina 2016, urang nulis kerangka anyar pikeun autotests sarta nyieun eta jadi gampang nulis tés: léngkah normal mucunghul, struktur jadi leuwih kaharti. Urang datang nepi ka hiji gagasan: urang kudu ngalibetkeun dulur who wants to nulis tés anyar, sarta sangkan leuwih gampang ngartos, urang dijieun runtuyan ceramah. Urang babarengan datang nepi ka rencana jejer, unggal dosen hareup nyokot hiji keur diri jeung nyiapkeun laporan ngeunaan eta.

- Kasusah naon anu dipiboga ku murid?

- Utamana, tangtosna, arsitéktur. Aya seueur patarosan ngeunaan struktur tés kami. Dina eupan balik, loba ditulis dina topik ieu sarta kami kudu ngayakeun ceramah tambahan pikeun ngajelaskeun dina leuwih jéntré.

- Naha sakola mayar?

- Sumuhun, pasti. Hatur nuhun ka dirina, loba jalma anu aub dina nulis tés, sarta rata-rata, di rumah sakit, dulur mimiti hadé ngartos naon autotests, kumaha aranjeunna ditulis tur kumaha aranjeunna diluncurkeun. Beban dina insinyur automation ogé parantos turun: ayeuna urang nampi sababaraha kali langkung sakedik pamenta pikeun pitulung pikeun nganalisa tés, sabab panguji sareng pamekar parantos ngamimitian ngarengsekeun ieu nyalira dina ampir sadaya kaayaan. Nya, aya sababaraha kaunggulan internal pikeun jabatan: kami nampi pangalaman dina presentasi sareng ceramah, hatur nuhun anu sababaraha insinyur automation parantos junun ngadamel presentasi dina konperénsi, sareng ogé nampi set pidéo sareng presentasi anu kuat pikeun pendatang onboarding.

Atas nama kuring sorangan, kuring bakal nambahan yén komunikasi antara departemén urang geus disederhanakeun ka tingkat downright ridiculously gampang. Salaku conto, ayeuna kuring sacara praktis henteu kedah mikirkeun kasus mana sareng dina tingkat atomisitas anu mana pikeun ngajadikeun otomatis. Hasilna, sadaya pihak kabetot ngurus pinuh ku sinyalna test, nu terus tumuwuh. Teu aya anu nungtut anu mustahil ti batur.

Sacara umum, dampak dina karya tim pasti positif. Panginten kolega anu maca tulisan ieu ogé mikir ngeunaan ngalakukeun anu sami? Teras naséhatna bakal saderhana: éta patut upami tés otomatis mangrupikeun prioritas pikeun anjeun. Salajengna, urang bakal ngobrol ngeunaan patarosan anu langkung kompleks: kumaha ngatur sadayana ieu sabisa-gancang, supados biaya sadaya pihak minimal sareng kaluaran maksimal.

Tips pikeun ngatur

Sakola éta mangpaat, tapi, sakumaha Stas ngaku, aya sababaraha kasusah, sabab ieu diperlukeun pikeun ngatur ceramah tambahan. Sareng éta salaku murid anyar anu ngabandingkeun diri-in-jahiliah sareng diri-ayeuna kuring ngarumuskeun léngkah-léngkah ieu pikeun nyiptakeun, dina pamanggih kuring, cara anu idéal pikeun ngajarkeun panguji ngartos tés otomatis.

Lengkah 0. Jieun kamus

Tangtosna, léngkah ieu diperyogikeun sanés ngan ukur pikeun QA. Najan kitu, kuring hayang nyieun eksplisit: nu codebase automation kudu diteundeun dina formulir bisa dibaca. Basa pemrograman - sahenteuna basa, sarta ti ieu anjeun bisa ngamimitian beuleum Anjeun.

Balik ka sakola: kumaha ngalatih testers manual pikeun nungkulan tés otomatis

Di handap ieu screenshot of a taskview kalawan ngaran elemen. Hayu urang bayangkeun yén anjeun nguji taskview salaku kotak hideung sareng henteu kantos ningali Selenium dina kahirupan anjeun. Naon kode ieu ngalakukeun?

Balik ka sakola: kumaha ngalatih testers manual pikeun nungkulan tés otomatis

(Spoiler - tugasna dihapus via sésana atas nama admin, lajeng urang tingali yen aya rékaman ieu dina aliran.)

Léngkah ieu waé ngahijikeun basa QAA sareng QA. Éta langkung gampang pikeun tim otomasi pikeun ngajelaskeun hasil ngajalankeun; panguji manual kedah nyéépkeun usaha anu sakedik pikeun nyiptakeun kasus: aranjeunna tiasa dilakukeun kirang detil. Sanajan kitu, dulur saling ngarti. Simkuring nampi winnings malah saméméh latihan sabenerna dimimitian.

Lengkah 1. Ulang frasa

Hayu urang neruskeun sajajar jeung basa. Nalika urang diajar nyarios salaku budak, urang henteu ngamimitian tina étimologi sareng semantik. Urang ngulang "mom", "meuli kaulinan", tapi ulah langsung balik kana akar Proto-Indo-Éropa kecap ieu. Janten di dieu: teu aya gunana pikeun nyilem kana jero pisan fitur téknis autotes tanpa nyobian nyerat hal anu tiasa dianggo.
Ieu disada saeutik counterintuitive, tapi jalan.

Dina palajaran kahiji, éta patut masihan dasar ngeunaan cara nulis autotests langsung. Urang mantuan nyetél lingkungan ngembangkeun (bisi kuring, Intellij IDEA), ngajelaskeun aturan basa minimum anu diperlukeun pikeun nulis metoda sejen dina kelas aya ngagunakeun léngkah aya. Kami nyerat hiji atanapi dua tes sareng aranjeunna sareng masihan aranjeunna PR, anu kuring bakal pormat sapertos kieu: cabang cabang ti master, tapi sababaraha tés parantos dipiceun. Ngan pedaran maranéhanana tetep. Kami naroskeun panguji pikeun mulangkeun tés ieu (henteu ngalangkungan acara diff, tangtosna).

Hasilna, jalma anu ngadangukeun sareng ngalakukeun sadayana bakal tiasa:

  1. diajar damel sareng antarbeungeut lingkungan pangwangunan: nyiptakeun cabang, hotkeys, commits sareng push;
  2. ngawasaan dasar struktur basa jeung kelas: dimana nyelapkeun injections na dimana ngimpor, naha annotations diperlukeun, sarta jenis simbol nu kapanggih di dinya, sajaba léngkah;
  3. ngartos bédana antara aksi, antosan tur pariksa, dimana ngagunakeun naon;
  4. perhatikeun bédana antara autotests jeung cék manual: di autotests anjeun bisa narik hiji atawa Handler sejen tinimbang ngalakukeun lampah ngaliwatan interface nu. Contona, ngirim komentar langsung ka backend tinimbang muka taskview a, milih input, ngetikkeun téks na ngaklik tombol Kirim;
  5. ngarumuskeun patarosan anu bakal dijawab dina lengkah saterusna.

Titik panungtungan pohara penting. Jawaban ieu bisa gampang dibikeun sateuacanna, tapi mangrupa prinsip pangajaran penting yén jawaban tanpa patarosan dirumuskeun teu inget sarta teu dipaké nalika tungtungna diperlukeun.

Éta idéal upami dina waktos ayeuna insinyur automation ti tim QA masihan anjeunna tugas pikeun nyerat sababaraha tés dina perang sareng ngantepkeun anjeunna ngalebetkeun kana cabangna.

Naon teu masihan:

  1. pangaweruh langkung jero ngeunaan pungsionalitas lingkungan ngembangkeun sarta basa program sorangan, nu ngan bakal diperlukeun nalika gawé bareng cabang mandiri. Éta moal émut, anjeun kedah ngajelaskeun éta dua kali atanapi tilu kali, tapi urang ngahargaan waktos insinyur otomatis, sanés? Conto: ngarengsekeun konflik, nambihan file kana git, nyiptakeun kelas ti mimiti, damel sareng dependensi;
  2. sagalana patali xpath. Serius. Anjeun kedah ngobrol ngeunaan éta nyalira, sakali sareng konsentrasi pisan.

Lengkah 2. Nyokot katingal ngadeukeutan dina grammar

Hayu urang émut screenshot taskview tina léngkah #0. Kami ngagaduhan léngkah anu disebut checkCommentWithTextExists. Penguji kami parantos ngartos naon anu dilakukeun ku léngkah ieu sareng urang tiasa ningali ka jero léngkah sareng nguraikeun sakedik.

Sareng di jero urang gaduh ieu:

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

Dimana onCommentBlock nyaeta

onCommonStreamPanel().commentBlock(userName);

Ayeuna urang diajar ngomong teu "meuli kaulinan," tapi "meuli kaulinan ti toko Detsky Mir, ayana dina kabinet biru dina rak katilu ti luhur". Perlu dijelaskeun yén urang nunjuk unsur sacara berurutan, tina unsur anu langkung ageung (aliran -> blok sareng koméntar ti jalma anu tangtu -> bagian tina blok ieu tempat téks anu ditangtukeun).

Henteu, éta henteu acan waktos ngobrol ngeunaan xpath. Sebutkeun sakeudeung yén sadaya paréntah ieu dijelaskeun ku aranjeunna sareng warisan ngalangkungan aranjeunna. Tapi urang kedah ngobrol ngeunaan sadaya patandingan sareng palayan ieu; aranjeunna aya hubunganana khusus kana léngkah ieu sareng kedah ngartos naon anu kajantenan. Tapi ulah overload: murid anjeun tiasa diajar assertions leuwih kompleks sorangan engké. Paling dipikaresep, kedah, waitUntil, ditampilkeun ();, aya ();, moal (); kedah cukup.

PR anu atra: cabang dimana eusi sababaraha léngkah anu dipikabutuh pikeun sababaraha tés parantos dipiceun. Hayu testers mulangkeun aranjeunna sarta nyieun ngajalankeun jadi héjo deui.

Salaku tambahan, upami tim uji henteu ngan ukur gaduh fitur énggal dina padamelanna, tapi ogé sababaraha perbaikan bug, anjeun tiasa naroskeun anjeunna langsung nyerat tés pikeun bug ieu sareng ngaleupaskeun. Paling dipikaresep, sadaya elemen parantos dijelaskeun; ngan ukur sababaraha léngkah anu tiasa leungit. Ieu bakal latihan sampurna.

Lengkah 3. immersion pinuh

Salengkepna pikeun panguji anu badé neraskeun ngalaksanakeun tugas langsungna. Tungtungna, urang kedah ngobrol ngeunaan xpath.

Mimiti, hayu urang jelaskeun yén sadaya onCommentBlock sareng koméntar ieu dijelaskeun ku aranjeunna.

Balik ka sakola: kumaha ngalatih testers manual pikeun nungkulan tés otomatis

total:

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

Urutan carita pohara penting. Mimiti, urang nyandak xpath anu aya sareng nunjukkeun kumaha tab elemen ngandung hiji sareng ngan hiji unsur. Salajengna, urang bakal ngobrol ngeunaan struktur: nalika anjeun kedah nganggo WebElement, sareng nalika anjeun kedah nyiptakeun file anu misah pikeun unsur anyar. Ieu bakal ngidinan Anjeun pikeun hadé ngartos warisan.

Éta kudu sacara eksplisit nyatakeun yén unsur tunggal nyaéta sakabéh taskview, éta ngandung unsur anak - sakabéh aliran, nu ngandung unsur anak - komentar misah, jsb. Elemen anak aya di jero elemen indungna boh dina halaman sareng dina struktur kerangka autotest.

Dina titik ieu, panongton kudu geus pageuh dipikaharti kumaha aranjeunna diwariskeun jeung naon bisa diasupkeun sanggeus titik dina onCommentBlock. Dina titik ieu, urang ngajelaskeun sakabeh operator: /, //, ., [] jeung saterusna. Urang nambahkeun pangaweruh ngeunaan pamakéan kana beban @class jeung hal-hal anu diperlukeun.

Balik ka sakola: kumaha ngalatih testers manual pikeun nungkulan tés otomatis

Murid kedah ngartos kumaha narjamahkeun xpath ku cara ieu. Pikeun konsolidasi - éta katuhu, PR. Urang mupus déskripsi unsur, hayu aranjeunna mulangkeun karya tés.

Naha jalur husus ieu?

Urang teu kudu overload jalma kalawan pangaweruh kompléks, tapi urang kudu ngajelaskeun sagalana sakaligus, sarta ieu téh dilema hésé. Jalur ieu bakal ngamungkinkeun urang pikeun mimiti ngadamel pendengar naroskeun sareng henteu ngartos hiji hal sareng ngajawabna dina waktos salajengna. Lamun ngobrol ngeunaan sakabéh arsitéktur, lajeng dina waktos topik léngkah atawa xpath dianalisis, bagian pangpentingna tina eta bakal geus poho alatan incomprehensibility maranéhanana.

Nanging, sababaraha anjeun sigana bakal tiasa ngabagi pangalaman ngeunaan kumaha prosésna tiasa dioptimalkeun langkung seueur. Kuring bakal resep maca saran anu sami dina koméntar!

sumber: www.habr.com

Tambahkeun komentar