Ritorna à a scola: cumu furmà i testi manuali per trattà cù testi automatizati

Quattru da cinque candidati QA volenu amparà à travaglià cù testi automatizati. Micca tutte l'imprese ponu cumpiendu tali desideri di tester manuali durante l'ora di travagliu. Wrike hà tenutu una scola d'automatizazione per l'impiegati è hà realizatu stu desideriu per parechji. Aghju participatu à sta scola precisamente cum'è studiente QA.

Aghju amparatu à travaglià cù Selenium è avà sustene indipindentamente un certu nùmeru d'autotests cù quasi senza aiutu esternu. È, basatu nantu à i risultati di a nostra sperienza cumuna è e mo cunclusioni persunali, pruvaraghju à derivà a formula stessa per a scola più ideale di l'automatizazione.

L'esperienza di Wrike in l'urganizazione di una scola

Quandu u bisognu di una scola d'automatizazione hè diventatu chjaru, a so urganizazione hè cascata à Stas Davydov, u capu tecnicu di l'automatizazione. Quale altru ch'ellu pò spiegà perchè sò venuti cù sta iniziativa, s'ellu anu ottinutu risultati è s'ellu si dispiace u tempu passatu ? Damu a parolla :

- In u 2016, avemu scrittu un novu quadru per l'autotests è l'hà fattu cusì chì hè diventatu faciule di scrive testi: i passi normali apparsu, a struttura hè diventata assai più comprensibile. Ci hè ghjuntu un’idea : ci vole à participà à tutti quelli chì volenu scrive novi testi, è per fà più faciule à capisce, avemu creatu una seria di cunferenze. Avemu cullettivu cun un pianu di temi, ognunu di i futuri lettori hà pigliatu unu per elli è hà preparatu un rapportu nantu à questu.

— Chì difficultà anu avutu i studienti ?

- Principalmente, sicuru, l'architettura. Ci era parechje dumande nantu à a struttura di i nostri testi. In u feedback, assai hè statu scrittu annantu à questu tema è avemu avutu à tene lezioni supplementari per spiegà in più detail.

- A scola hà pagatu ?

- Iè, sicuru. Grazie à ella, assai persone eranu implicati in testi di scrittura, è, in media, in l'uspidale, ognunu hà cuminciatu à capisce megliu ciò chì l'autotests sò, cumu sò scritti è cumu sò lanciati. A carica nantu à l'ingegneri di l'automatizazione hè ancu diminuita: avà ricevemu parechje volte menu richieste d'aiutu per analizà e teste, postu chì i testatori è i sviluppatori anu cuminciatu à affruntà cù questu in quasi tutte e situazioni. Ebbè, ci sò parechji vantaghji internu per u dipartimentu: avemu acquistatu sperienza in presentazioni è lezioni, grazie à quale alcuni ingegneri di l'automatizazione anu digià riisciutu à fà presentazioni in cunferenze, è ancu ricivutu un putente set di video è presentazioni per l'imbarcu di i novi.

Per mè stessu, aghjustà chì a cumunicazione trà i nostri dipartimenti hè stata simplificata à un livellu ridiculamente faciule. Per esempiu, avà praticamenti ùn aghju micca bisognu di pensà à quali casi è à quale livellu di atomizazione per automatizà. In u risultatu, tutti i partiti interessate piglianu cura di a cobertura di teste, chì hè in constantemente crescente. Nimu esige l'impossibile da l'altri.

In generale, l'impattu nantu à u travagliu di e squadre hè definitu pusitivu. Forsi i culleghi chì leghjenu stu articulu pensanu ancu à fà qualcosa simili? Allora u cunsigliu serà simplice: vale a pena se e teste automatizate sò una priorità per voi. In seguitu, parlemu di una quistione più cumplessa: cumu urganizà tuttu questu u più currettamente pussibule, cusì chì i costi di tutti i partiti sò minimi è a pruduzzione massima.

Cunsiglii d'urganizazione

A scola era utile, ma, cum'è Stas ammissu, ci sò stati qualchì difficultà, per via di quale era necessariu di organizà lezioni supplementari. È era cum'è un studiente recente paragunendu me-in-ignoranza è me-oghji chì aghju formulatu i seguenti passi per creà, in u mo parè, u modu ideale per insignà i teste à capiscenu i testi automatizati.

Passu 0. Crea un dizziunariu

Di sicuru, stu passu hè necessariu micca solu per QA. In ogni casu, vogliu rende esplicitu: u codice di l'automatizazione deve esse guardatu in una forma leggibile. Linguaggi di prugrammazione - micca menu lingue, è da questu pudete inizià a vostra immersione.

Ritorna à a scola: cumu furmà i testi manuali per trattà cù testi automatizati

Eccu una screenshot di una vista di task cù i nomi di l'elementi. Imaginemu chì stai pruvà taskview cum'è una scatula nera è ùn avete mai vistu Selenium in a vostra vita. Chì faci stu codice?

Ritorna à a scola: cumu furmà i testi manuali per trattà cù testi automatizati

(Spoiler - u compitu hè sguassatu via restu in nome di l'amministratore, è poi vedemu chì ci hè un registru di questu in u flussu.)

Stu passu solu avvicina e lingue QAA è QA più vicinu. Hè più faciule per i squadre d'automatizazione per spiegà i risultati di una corsa; i testi manuali anu da spende menu sforzu per creà casi: ponu esse fatti menu dettagliati. Eppuru, tutti si capiscenu. Avemu ricivutu i vincitori ancu prima di a furmazione attuale.

Passu 1. Repetite frasi

Cuntinuemu u parallelu cù a lingua. Quandu avemu amparatu à parlà da zitelli, ùn partemu micca da l'etimolugia è a semantica. Ripetemu "mamma", "cumprà un ghjoculu", ma ùn entra micca immediatamente in e radiche proto-indoeuropee di queste parolle. Cusì hè quì: ùn ci hè nunda di immersione in a prufundità di e caratteristiche tecniche di l'autotest senza pruvà à scrive qualcosa chì travaglia.
Sona un pocu contraintuitivu, ma funziona.

In a prima lezzione, vale a pena dà una basa nantu à cumu scrive direttamente l'autotest. Aiutamu à stallà l'ambienti di sviluppu (in u mo casu, Intellij IDEA), spiegà e regule di lingua minima chì sò necessarii per scrive un altru metudu in una classa esistente cù i passi esistenti. Scrivemu una o duie teste cun elli è dà i travaglii di casa, chì formate cusì: una branche ramificata da u maestru, ma parechji testi sò stati eliminati da ellu. Solu e so descrizzioni restanu. Dumandemu à i testatori di restaurà sti testi (micca attraversu show diff, sicuru).

In u risultatu, quellu chì hà intesu è hà fattu tuttu serà capace di:

  1. amparà à travaglià cù l'interfaccia di l'ambiente di sviluppu: creanu rami, hotkeys, commits è pushes;
  2. ammaistrà i principii di a struttura di a lingua è e classi: induve inserisce injections è induve impurtà, perchè l'annotazioni sò necessarii, è chì tipu di simboli si trovanu quì, in più di passi;
  3. capisce a diffarenza trà l'azzione, aspittà è verificate, induve aduprà ciò chì;
  4. nota a diffarenza trà l'autotests è i cuntrolli manuali: in l'autotests pudete tirà unu o un altru gestore invece di fà azzione attraversu l'interfaccia. Per esempiu, mandate un cumentu direttamente à u backend invece di apre un taskview, selezziunate l'input, scrivite u testu è cliccà u buttone Send;
  5. formulà e dumande chì saranu risposte in u prossimu passu.

L'ultimu puntu hè assai impurtante. Queste risposte ponu esse facilmente datu prima di u tempu, ma hè un principiu impurtante d'insignamentu chì e risposte senza dumande formulate ùn sò micca ricurdati è ùn sò micca usati quandu infine necessariu.

Saria l'ideale se à questu tempu un ingegnere d'automatizazione da a squadra di QA li assignava un compitu di scrive un paru di teste in battaglia è li permette di sottumette à a so filiera.

Cosa ùn dà micca:

  1. cunniscenza più prufonda di e funziunalità di l'ambienti di sviluppu è a lingua di prugrammazione stessu, chì serà necessariu solu quandu u travagliu cù rami indipindente. Ùn serà micca ricurdatu, avete da spiegà duie volte o trè volte, ma valoremu u tempu di l'ingegneri di l'automatizazione, nò? Esempii: risolviri cunflitti, aghjunghje schedarii à git, creanu classi da zero, travagliendu cù dipendenze;
  2. tuttu ciò chì riguarda xpath. Seriu. Avete bisognu di parlà per separatamente, una volta è assai cuncentrata.

Passu 2. Pigliendu un ochju più vicinu à a grammatica

Ricordemu a screenshot di taskview da u passu #0. Avemu un passu chjamatu checkCommentWithTextExists. U nostru tester hà digià capitu ciò chì face stu passu è pudemu guardà in u passu è decompone un pocu.

È dentru avemu i seguenti:

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

Induve hè onCommentBlock

onCommonStreamPanel().commentBlock(userName);

Avà imparemu à dì micca "cumprà un ghjoculu", ma "cumprà un ghjoculu da a tenda Detsky Mir, situata in u cabinet blu in u terzu scaffale da a cima". Hè necessariu di spiegà chì avemu indicatu à un elementu sequentially, da elementi più grande (stream -> bloccu cù cumenti da una certa persona -> quella parte di stu bloccu induve si trova u testu specificatu).

Innò, ùn hè ancu u tempu di parlà di xpath. Basta cita brevemente chì tutte queste struzzioni sò descritte da elli è l'eredità passa per elli. Ma avemu bisognu di parlà di tutti questi matchers è camerieri ; si trattanu specificamente à questu passu è sò necessarii per capisce ciò chì succede. Ma ùn sovraccaricate: u vostru studiente pò studià affirmazioni più cumplesse per sè stessu dopu. Hè assai prubabile, deve, waitUntil, affissatu ();, esiste ();, micca (); deve esse abbastanza.

I travaglii sò evidenti: un ramu in u quale u cuntenutu di parechji passi chì sò necessarii per un certu nùmeru di teste sò stati eliminati. Lasciate chì i tester li restituiscenu è fate chì a corsa sia torna verde.

Inoltre, se u squadra di teste ùn hà micca solu funzioni novi in ​​u so travagliu, ma ancu alcune correzioni di bug, pudete dumandà à ellu di scrive immediatamente testi per questi bug è liberali. Hè assai prubabile, tutti l'elementi sò digià stati descritti; solu un paru di passi pò esse mancanti. Questu serà l'entrenamentu perfettu.

Step 3. Full immersion

Cume cumpletu pussibule per un tester chì hà da cuntinuà à fà e so funzioni dirette. Infine, avemu bisognu di parlà di xpath.

Prima, facemu chjaru chì tutti questi onCommentBlock è cummentarii sò descritti da elli.

Ritorna à a scola: cumu furmà i testi manuali per trattà cù testi automatizati

Total:

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

L'ordine di a storia hè assai impurtante. Prima, pigliamu qualsiasi xpath esistenti è mostra cumu a tabulazione di l'elementi cuntene unu è solu un elementu. Dopu, parlemu di a struttura: quandu avete bisognu di utilizà WebElement, è quandu avete bisognu di creà un schedariu separatu per un novu elementu. Questu permetterà di capisce megliu l'eredità.

Deve esse esplicitamente dichjaratu chì un elementu unicu hè tutta a vista di u travagliu, cuntene un elementu zitellu - u flussu tutale, chì cuntene un elementu zitellu - un cumentu separatu, etc. L'elementi di u zitellu sò in l'elementi parent sia in a pagina sia in a struttura di u quadru di l'autotest.

À questu puntu, l'audienza deve avè capitu fermamente cumu sò ereditati è ciò chì pò esse inseritu dopu à u puntu in onCommentBlock. À questu puntu, spieghemu tutti l'operatori: /, //, ., [] è cusì. Aghjunghjemu cunniscenze nantu à l'usu in a carica @class è altre cose necessarie.

Ritorna à a scola: cumu furmà i testi manuali per trattà cù testi automatizati

I studienti anu da capisce cumu traduce xpath in questu modu. Per cunsulidà - hè ghjustu, i travaglii. Sguassemu e descrizzioni di l'elementi, lasciate restaurà u travagliu di e teste.

Perchè sta strada particulare?

Ùn ci vole micca sopracarricà una persona cun cunniscenza cumplessa, ma duvemu spiegà tuttu in una volta, è questu hè un dilema difficiule. Stu percorsu ci permetterà di fà prima à l'ascultori fà dumande è ùn capisce micca qualcosa è risponde à u mumentu dopu. Se parlate di tutta l'architettura, da quandu u tema di passi o xpath hè analizatu, i parti più impurtanti di questu serà digià scurdatu per via di a so incomprensibilità.

Tuttavia, certi di voi prubabilmente puderà sparte a vostra sperienza nantu à cumu u prucessu pò esse ottimizatu ancu di più. Seraghju felice di leghje suggerimenti simili in i cumenti!

Source: www.habr.com

Add a comment