L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Parte 1: Web / Android

Vita: stu articulu hè una traduzzione in Russu di l'articulu originale "L'arnesi DevOps ùn sò micca solu per DevOps. "Custruisce l'infrastruttura di automatizazione di teste da zero". Tuttavia, tutte l'illustrazioni, ligami, citazioni è termini sò cunservati in a lingua originale per evità distorsioni di u significatu quandu sò tradutti in russo. Vi vogliu studià felice!

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Attualmente, a specialità DevOps hè una di e più richieste in l'industria IT. Sè avete apertu siti di ricerca di travagliu populari è filtrà per salariu, vi vede chì i travaglii di DevOps sò in cima di a lista. Tuttavia, hè impurtante capisce chì questu si riferisce principalmente à una pusizione "Senior", chì implica chì u candidatu hà un altu livellu di cumpetenze, cunniscenze di tecnulugia è arnesi. Questu vene ancu cun un altu gradu di rispunsabilità assuciatu cù l'operazione ininterrotta di a produzzione. Tuttavia, avemu cuminciatu à scurdà ciò chì DevOps hè. In principiu, ùn era micca una persona o dipartimentu specificu. Sè circhemu difinizzioni di stu terminu, truveremu assai nomi belli è curretti, cum'è metodulugia, pratiche, filusufìa culturale, gruppu di cuncetti, etc.

A mo specializazione hè un ingegnere d'automatizazione di teste (ingegnere d'automatizazione di QA), ma crede chì ùn deve esse assuciatu solu cù a scrittura di teste auto o di sviluppu di l'architettura di framework di teste. In 2020, a cunniscenza di l'infrastruttura d'automatizazione hè ancu essenziale. Questu vi permette di urganizà u prucessu d'automatizazione sè stessu, da l'esecuzione di teste à furnisce risultati à tutti i stakeholder in cunfurmità cù i vostri scopi. In u risultatu, e cumpetenze DevOps sò un must per fà u travagliu. È tuttu questu hè bonu, ma, sfurtunatamenti, ci hè un prublema (spoiler: stu articulu prova di simplificà stu prublema). U puntu hè chì DevOps hè difficiule. È questu hè ovvi, perchè l'imprese ùn paganu micca assai per qualcosa chì hè faciule fà ... In u mondu DevOps, ci sò un gran numaru di arnesi, termini è pratiche chì deve esse maestru. Questu hè soprattuttu difficiule à u principiu di una carriera è dipende da l'esperienza tecnica accumulata.

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero
Source: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Quì prubabilmente finiremu cù a parte introduttiva è fucalizza nantu à u scopu di stu articulu. 

Cosa hè stu articulu circa?

In questu articulu, aghju da sparte a mo sperienza di custruisce una infrastruttura d'automatizazione di teste. Ci sò parechje fonti d'infurmazioni nantu à Internet nantu à e diverse arnesi è cumu si usanu, ma mi piacerebbe guardà à elli puramente in u cuntestu di l'automatizazione. Credu chì parechji ingegneri di l'automatizazione sò familiarizati cù a situazione quandu nimu, eccettu voi, eseguisce e teste sviluppate o si preoccupa di mantene. In u risultatu, i testi diventanu obsoleti è avete da passà tempu per aghjurnà. In novu, à l'iniziu di una carriera, questu pò esse un compitu assai difficiule: decide sapientemente quale arnesi duveranu aiutà à eliminà un prublema, cumu selezziunate, cunfigurà è mantene. Certi testatori si rivolgianu à DevOps (umani) per aiutu è, simu onesti, stu approcciu funziona. In parechji casi, questu pò esse l'unica opzione postu chì ùn avemu micca visibilità in tutte e dipendenze. Ma cum'è sapemu, i DevOps sò assai occupati, perchè anu da pensà à l'infrastruttura, a implementazione, u monitoraghju, i microservizi è à altre attività simili di tutta a cumpagnia, secondu l'urganizazione / squadra. Comu di solitu, l'automatizazione ùn hè micca una priorità. In un tali casu, avemu da pruvà à fà tuttu ciò chì hè pussibule da a nostra parte da u principiu à a fine. Questu riducerà e dipendenze, accelerà u flussu di travagliu, migliurà e nostre cumpetenze è ci permetterà di vede a stampa più grande di ciò chì succede.

L'articulu presenta l'arnesi più populari è populari è mostra cumu aduprà per custruisce una infrastruttura d'automatizazione passu à passu. Ogni gruppu hè rapprisintatu da strumenti chì sò stati pruvati attraversu l'esperienza persunale. Ma questu ùn significa micca chì avete aduprà a stessa cosa. L'arnesi stessi ùn sò micca impurtanti, appariscenu è diventanu obsoleti. U nostru compitu ingegneria hè di capisce i principii basi: perchè avemu bisognu di stu gruppu di arnesi è chì prublemi di travagliu pudemu risolve cù u so aiutu. Hè per quessa à a fine di ogni rùbbrica lasciu ligami à strumenti simili chì ponu esse aduprati in a vostra urganizazione.

Ciò chì ùn hè micca in questu articulu

Ripetu una volta chì l'articulu ùn hè micca nantu à strumenti specifichi, per quessa ùn ci sarà micca inseriti di codice da a documentazione è e descrizzioni di cumandamenti specifichi. Ma à a fine di ogni rùbbrica lassu ligami per un studiu detallatu.

Questu hè fattu perchè: 

  • stu materiale hè assai faciule di truvà in diverse fonti (documentazione, libri, video corsi);
  • s'è no cuminciamu à andà più in fondu, avemu da scrive 10, 20, 30 parte di stu articulu (mentre i piani sò 2-3);
  • Solu ùn vogliu micca perde u vostru tempu postu chì pudete vulete usà altre arnesi per ottene i stessi scopi.

Prutizzioni

Mi piacerebbe veramente chì stu materiale sia utile à ogni lettore, è micca solu leghje è scurdatu. In ogni studiu, a pratica hè un cumpunente assai impurtante. Per questu aghju preparatu Repository GitHub cù struzzioni passu per passu nantu à cumu fà tuttu da zero. Ci hè ancu i travaglii in casa chì aspetta per voi per assicurà chì ùn copiate micca senza mente e linee di i cumandamenti chì eseguite.

Pianu

passu
Technology
Tools

1
Esecuzione locale (preparate testi demo web / Android è eseguite lu in u locu) 
Node.js, Selenium, Appium

2
Sistemi di cuntrollu di versione 
Git

3
Containerization
Docker, Selenium grid, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
Piattaforme Cloud
Google Cloud Platform

6
Orchestration
Kubernetes

7
Infrastruttura cum'è codice (IaC)
Terraform, Ansible

Struttura di ogni rùbbrica

Per mantene a narrativa chjara, ogni rùbbrica hè descritta secondu a seguente schema:

  • breve descrizzione di a tecnulugia,
  • valore per l'infrastruttura d'automatizazione,
  • illustrazione di u statu attuale di l'infrastruttura,
  • ligami per studià,
  • strumenti simili.

1. Eseguite testi in u locu

Breve descrizzione di a tecnulugia

Questu hè solu un passu preparatoriu per eseguisce e teste demo in u locu è verificate chì passanu. In a parte pratica, Node.js hè utilizatu, ma a lingua di prugrammazione è a piattaforma ùn sò micca impurtanti è pudete aduprà quelli chì sò usati in a vostra cumpagnia. 

Tuttavia, cum'è strumenti d'automatizazione, ricumandemu d'utilizà Selenium WebDriver per e plataforme web è Appium per a piattaforma Android, rispettivamente, postu chì in i prossimi passi avemu aduprà l'imaghjini Docker chì sò adattati per travaglià specificamente cù questi strumenti. Inoltre, in riferimentu à i bisogni di u travagliu, sti strumenti sò i più dumandati in u mercatu.

Comu pudete avè nutatu, cunsideremu solu testi web è Android. Sfortunatamente, iOS hè una storia completamente diversa (grazie Apple). Pensu di presentà e soluzioni è e pratiche relative à IOS in e parti prossime.

Valore per l'infrastruttura d'automatizazione

Da una perspettiva di l'infrastruttura, correre in u locu ùn furnisce micca valore. Verificate solu chì e teste currianu nantu à a macchina locale in navigatori è simulatori lucali. Ma in ogni casu, questu hè un puntu di partenza necessariu.

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili

  • ogni lingua di prugrammazione chì ti piace in cunghjunzione cù e teste Selenium / Appium;
  • ogni prova;
  • qualsiasi test runner.

2. Sistemi di cuntrollu di versione (Git)

Breve descrizzione di a tecnulugia

Ùn serà micca una grande rivelazione per nimu se dicu chì u cuntrollu di versione hè una parte estremamente impurtante di u sviluppu, sia in squadra sia individualmente. Basatu nantu à diverse fonti, hè sicuru di dì chì Git hè u rappresentante più populari. Un sistema di cuntrollu di versione furnisce assai benefizii, cum'è u sparte di codice, l'almacenamiento di e versioni, a ristaurazione di rami precedenti, u seguimentu di a storia di u prughjettu è e copie di salvezza. Ùn discuteremu micca ogni puntu in dettaglio, perchè sò sicuru chì site assai familiarizatu cù questu è l'utilizate in u vostru travagliu di ogni ghjornu. Ma s'ellu ùn hè micca di colpu, allora vi cunsigliu di mette in pausa a lettura di stu articulu è di riempie sta lacuna u più prestu pussibule.

Valore per l'infrastruttura d'automatizazione

È quì pudete fà una quistione raghjone: "Perchè ci parla di Git? Tuttu u mondu sanu questu è l'utilizanu sia per u codice di sviluppu sia per u codice di prova automatica ". Averete assolutamente ragiò, ma in questu articulu parlemu di infrastruttura è sta sezione agisce cum'è una vista previa per a sezione 7: "Infrastruttura cum'è Code (IaC)". Per noi, questu significa chì tutta l'infrastruttura, cumpresa a prova, hè descritta in forma di codice, cusì pudemu ancu applicà sistemi di versioning à questu è uttene benefici simili per u codice di sviluppu è di automatizazione.

Fighjemu à IaC in più detail in u Passu 7, ma ancu avà pudete cumincià à aduprà Git in u locu creendu un repository locale. U big picture serà allargatu quandu aghjunghjemu un repository remoto à l'infrastruttura.

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili

3. Containerization (Docker)

Breve descrizzione di a tecnulugia

Per dimustrà cumu a cuntainerizazione hà cambiatu e regule di u ghjocu, vultemu in u tempu uni pochi decennii. Allora, a ghjente hà acquistatu è utilizatu macchine di u servitore per eseguisce applicazioni. Ma in a maiò parte di i casi, i risorse di startup necessarii ùn sò micca cunnisciuti in anticipu. In u risultatu, l'imprese spende soldi per l'acquistu di servitori caru è putenti, ma una parte di sta capacità ùn hè micca stata utilizata.

A prossima tappa di l'evoluzione era e macchine virtuali (VM), chì risolviu u prublema di perdi soldi in risorse inutilizate. Sta tecnulugia hà permessu di eseguisce l'applicazioni indipindentamente l'una di l'altru in u stessu servitore, allughjendu spaziu cumpletamente isolatu. Ma, sfurtunatamenti, ogni tecnulugia hà i so inconvenienti. L'esecuzione di una VM richiede un sistema operatore sanu, chì cunsuma CPU, RAM, almacenamiento è, secondu u SO, i costi di licenza deve esse cunsideratu. Questi fattori affettanu a velocità di carica è facenu difficultà a portabilità.

È avà ghjunghjemu à a cuntainerizazione. Una volta, sta tecnulugia risolve u prublema precedente, cum'è i cuntenituri ùn utilizanu micca un OS cumpletu, chì libera una grande quantità di risorse è furnisce una suluzione rapida è flexible per a portabilità.

Di sicuru, a tecnulugia di containerizazione ùn hè nunda di novu è hè statu introduttu prima à a fini di l'anni 70. In quelli ghjorni, assai ricerche, sviluppi è tentativi sò stati realizati. Ma era Docker chì hà adattatu sta tecnulugia è l'hà fattu facilmente accessibile à e masse. Oghje, quandu si parla di cuntenituri, in a maiò parte di i casi, intendemu Docker. Quandu parlemu di cuntenituri Docker, intendemu cuntenituri Linux. Pudemu usà Windows è sistemi macOS per eseguisce cuntenituri, ma hè impurtante capisce chì in questu casu una capa addiziale appare. Per esempiu, Docker in Mac gestisce in silenziu cuntenituri in una VM Linux ligera. Riturneremu à questu tema quandu avemu discututu di l'emulatori Android in esecuzione in cuntenituri, cusì quì ci hè una sfumatura assai impurtante chì deve esse discussa in più detail.

Valore per l'infrastruttura d'automatizazione

Avemu scupertu chì a containerizazione è Docker sò cool. Fighjemu questu in u cuntestu di l'automatizazione, perchè ogni strumentu o tecnulugia hà bisognu di risolve un prublema. Scupritemu i prublemi evidenti di l'automatizazione di teste in u cuntestu di e teste UI:

  • un gran numaru di dependenzii quandu si stallanu Selenium è soprattuttu Appium;
  • prublemi di cumpatibilità trà e versioni di navigatori, simulatori è cunduttori;
  • mancanza di spaziu isolatu per i navigatori / simulatori, chì hè soprattuttu criticu per a corsa parallela;
  • difficiuli di gestisce è mantene s'ellu ci vole à eseguisce 10, 50, 100 o ancu 1000 navigatori à u stessu tempu.

Ma postu chì Selenium hè u strumentu d'automatizazione più pupulare è Docker hè l'uttellu di containerizazione più populari, ùn deve esse micca surprisa chì qualchissia hà pruvatu à cumminà per creà un strumentu putente per risolve i prublemi sopra citati. Cunsideremu tali suluzioni in più detail. 

Griglia di seleniu in docker

Stu strumentu hè u più pupulare in u mondu Selenium per eseguisce parechji navigatori in parechje macchine è gestisce da un centru cintrali. Per cumincià, avete bisognu di registrà almenu 2 parti: Hub è Node(s). Hub hè un node cintrali chì riceve tutte e dumande da e teste è li distribuisce à i Nodi appropritati. Per ogni Node pudemu cunfigurà una cunfigurazione specifica, per esempiu, specificendu u navigatore desideratu è a so versione. Tuttavia, avemu sempre bisognu di piglià cura di i cunduttori di navigatore cumpatibili noi stessi è stallà nantu à i Nodi desiderati. Per questu causa, a griglia di Selenium ùn hè micca utilizata in a so forma pura, salvu quandu avemu bisognu di travaglià cù i navigatori chì ùn ponu micca esse installati in Linux OS. Per tutti l'altri casi, una soluzione significativamente flessibile è curretta seria di utilizà l'imaghjini Docker per eseguisce Selenium grid Hub and Nodes. Stu approcciu simplifica assai a gestione di i nodi, postu chì pudemu selezziunà l'imaghjini chì avemu bisognu cù versioni cumpatibili di navigatori è drivers digià stallati.

Malgradu i critichi negativi nantu à a stabilità, soprattuttu quandu eseguisce un gran numaru di Nodi in parallelu, a griglia di Selenium hè sempre l'uttellu più populari per eseguisce e teste di Selenium in parallelu. Hè impurtante à nutà chì diverse migliure è mudificazioni di sta strumentu sò constantemente apparsu in open-source, chì cumbattenu diversi bottlenecks.

Selenoid per u Web

Stu strumentu hè un avanzu in u mondu di Selenium, postu chì travaglia ghjustu fora di a scatula è hà fattu a vita di parechji ingegneri d'automatizazione assai più faciule. Prima di tuttu, questu ùn hè micca una altra mudificazione di a griglia di Selenium. Invece, i sviluppatori anu creatu una versione completamente nova di Selenium Hub in Golang, chì, cumminata cù l'imaghjini Docker ligeri per parechji navigatori, hà datu un impetu à u sviluppu di l'automatizazione di teste. Inoltre, in u casu di Selenium Grid, duvemu determinà tutti i navigatori necessarii è e so versioni in anticipu, chì ùn hè micca un prublema quandu u travagliu cù un solu navigatore. Ma quandu si tratta di parechji navigatori supportati, Selenoid hè a suluzione numero unu grazie à a so funzione "navigatore à dumanda". Tuttu ciò chì hè necessariu di noi hè di scaricà l'imaghjini necessarii cù i navigatori in anticipu è aghjurnà u schedariu di cunfigurazione cù quale Selenoid interagisce. Dopu chì Selenoid riceve una dumanda da e teste, lanciarà automaticamente u cuntinuu desideratu cù u navigatore desideratu. Quandu a prova finisci, Selenoid ritirarà u containeru, liberendu cusì risorse per e dumande future. Stu approcciu elimina cumplettamente u prublema ben cunnisciutu di "degradazione di node" chì spessu scontru in a griglia di Selenium.

Ma, sfortunatamente, Selenoid ùn hè ancu micca una bala d'argentu. Avemu avutu a funzione "navigatore à dumanda", ma a funzione "risorse à dumanda" ùn hè ancu dispunibile. Per utilizà Selenoid, duvemu implementà nantu à hardware fisicu o in una VM, chì significa chì duvemu sapè in anticipu quantu risorse deve esse attribuite. Pensu chì questu ùn hè micca un prublema per i picculi prughjetti chì funzionanu 10, 20 o ancu 30 navigatori in parallelu. Ma chì si avemu bisognu di 100, 500, 1000 o più? Ùn hà micca sensu di mantene è pagà per tanti risorse tuttu u tempu. In e rùbbriche 5 è 6 di questu articulu, discutemu di suluzioni chì permettenu di scala, riducendu cusì significativamente i costi di a cumpagnia.

Selenoid per Android

Dopu à u successu di Selenoid cum'è strumentu d'automatizazione web, a ghjente vulia qualcosa simili per Android. È hè accadutu - Selenoid hè stata liberata cù supportu Android. Da un puntu di vista di l'utilizatori di altu livellu, u principiu di u funziunamentu hè simili à l'automatizazione web. L'unica diffarenza hè chì invece di cuntenituri di navigatore, Selenoid corre cuntenituri di emulatore Android. In u mo parè, questu hè attualmente u strumentu gratuitu più putente per eseguisce testi Android in parallelu.

Ùn vogliu micca veramente parlà di l'aspettu negativu di stu strumentu, postu chì mi piace veramente. Ma ancu, ci sò i stessi svantaghji chì s'applicanu à l'automatizazione web è sò assuciati cù scaling. In più di questu, avemu bisognu di parlà di una limitazione più chì pò esse una sorpresa s'ellu ci hè stallatu u strumentu per a prima volta. Per eseguisce l'imaghjini Android, avemu bisognu di una macchina fisica o VM cù supportu di virtualizazione nidificatu. In a guida cumu, dimustru cumu attivà questu nantu à una VM Linux. Tuttavia, sè vo site un utilizatore macOS è vulete implementà Selenoid in u locu, allora questu ùn serà micca pussibule di eseguisce teste Android. Ma pudete sempre eseguisce una VM Linux in u locu cun "virtualizazione nidata" cunfigurata è implementà Selenoid in l'internu.

Illustrazione di u statu attuale di l'infrastruttura

In u cuntestu di questu articulu, aghjunghjemu 2 strumenti per illustrà l'infrastruttura. Quessi sò Selenium grid per i testi web è Selenoid per i testi Android. In u tutoriale di GitHub, vi mustraraghju ancu cumu utilizà Selenoid per eseguisce testi web. 

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili

  • Ci sò altre strumenti di containerizazione, ma Docker hè u più populari. Se vulete pruvà una altra cosa, tenite in mente chì l'arnesi chì avemu cupertu per eseguisce e teste di Selenium in parallelu ùn funziona micca fora di a scatula.  
  • Comu digià dettu, ci sò parechje mudificazioni di a griglia di Selenium, per esempiu, Zalenium.

4.CI/CD

Breve descrizzione di a tecnulugia

A pratica di l'integrazione cuntinua hè abbastanza populari in u sviluppu è hè à parità cù i sistemi di cuntrollu di versione. Malgradu questu, mi sentu chì ci hè una cunfusione in a terminologia. In questu paràgrafu vogliu discrive 3 mudificazioni di sta tecnulugia da u mo puntu di vista. In Internet truverete assai articuli cù interpretazioni diffirenti, è hè assolutamente normale se a vostra opinione hè diversa. A più impurtante hè chì site in a stessa pagina cù i vostri culleghi.

Dunque, ci sò 3 termini: CI - Integrazione Continua, CD - Consegna Continua è dinò CD - Implementazione Continua. (Sottu aduprà sti termini in inglese). Ogni mudificazione aghjusta parechji passi supplementari à u vostru pipeline di sviluppu. Ma a parolla Cuntinua (continuu) hè a cosa più impurtante. In questu cuntestu, vulemu dì qualcosa chì succede da u principiu à a fine, senza interruzzione o intervenzione manuale. Fighjemu à CI & CD è CD in questu cuntestu.

  • Integrazione Continua questu hè u passu iniziale di l'evoluzione. Dopu avè sottumessu novu codice à u servitore, aspittemu di riceve un feedback rapidu chì i nostri cambiamenti sò ok. Di genere, CI include l'esecuzione di strumenti di analisi di codice staticu è teste di unità / API internu. Questu ci permette di ottene infurmazioni nantu à u nostru codice in pochi seconde / minuti.
  • Cunsigliu cuntinuu hè un passu più avanzatu induve eseguimu testi di integrazione / UI. In ogni casu, in questu stadiu ùn avemu micca risultati cusì rapidamente cum'è cù CI. Prima, sti tipi di teste pigghianu più tempu per compie. Siconda, prima di lancià, duvemu implementà i nostri cambiamenti à l'ambiente di prova / staging. Inoltre, se parlemu di u sviluppu mobile, allora un passu supplementu appare per creà una custruzione di a nostra applicazione.
  • Distribuzione cuntinua assume chì avemu liberatu automaticamente i nostri cambiamenti à a produzzione se tutti i testi di accettazione sò stati passati in i tappe previ. In più di questu, dopu a tappa di liberazione, pudete cunfigurà diverse tappe, cum'è eseguisce teste di fumu nantu à a pruduzzione è a cullizzioni di metriche d'interessu. A implementazione cuntinuu hè pussibule solu cù una bona copertura da teste automatizati. Se qualsiasi intervenzioni manuali sò necessarie, cumpresa a prova, allora questu ùn hè più Cuntinuu (cuntinuu). Allora pudemu dì chì a nostra pipeline cumpleta solu cù a pratica di Consegna Continua.

Valore per l'infrastruttura d'automatizazione

In questa sezione, duverebbe chjarificà chì quandu parlemu di teste UI end-to-end, significa chì duvemu implementà i nostri cambiamenti è servizii assuciati per pruvà ambienti. Integrazione Continua - u prucessu ùn hè micca applicabile per questu compitu è ​​avemu da piglià cura di implementà almenu e pratiche di Cunsigliu Continuu. L'implementazione cuntinuu hè ancu sensu in u cuntestu di e teste di UI se avemu da eseguisce in produzzione.

È prima di guardà l'illustrazione di u cambiamentu di l'architettura, vogliu dì uni pochi di parolle nantu à GitLab CI. A cuntrariu di l'altri arnesi CI/CD, GitLab furnisce un repository remoto è parechje altre funzioni supplementari. Cusì, GitLab hè più cà CI. Include gestione di codice fonte, gestione Agile, pipelines CI / CD, strumenti di logu è cullizzioni di metriche fora di a scatula. L'architettura GitLab hè custituita da Gitlab CI/CD è GitLab Runner. Eccu una breve descrizzione da u situ ufficiale:

Gitlab CI/CD hè una applicazione web cù una API chì guarda u so statu in una basa di dati, gestisce prughjetti / custruite è furnisce una interfaccia d'utilizatore. GitLab Runner hè una applicazione chì processa e custruzzioni. Pò esse implementatu separatamente è travaglia cù GitLab CI / CD attraversu una API. Per i testi in esecuzione, avete bisognu di l'istanza di Gitlab è di Runner.

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili

5. Piattaforme Cloud

Breve descrizzione di a tecnulugia

In questa sezione parleremu di una tendenza populari chjamata "nuvuli publichi". Malgradu l'enormi benefici chì e tecnulugii di virtualizazione è di containerizazione descritte sopra furniscenu, avemu sempre bisognu di risorse informatiche. Cumpagnia cumprà servitori caru o allughjenu centri di dati, ma in questu casu hè necessariu di fà calculi (à volte irrealisticu) di quanti risorse avemu bisognu, se l'avemu aduprà 24/7 è per quale scopi. Per esempiu, a produzzione richiede un servitore chì funziona XNUMX/XNUMX, ma avemu bisognu di risorse simili per pruvà fora di l'ore di travagliu? Depende ancu di u tipu di teste chì sò realizati. Un esempiu seria e teste di carica / stress chì avemu pensatu à eseguisce durante l'ore non di travagliu per ottene risultati u ghjornu dopu. Ma certamente a dispunibilità di u servitore XNUMX/XNUMX ùn hè micca necessariu per teste automatizate end-to-end è soprattuttu micca per ambienti di teste manuale. Per tali situazioni, saria bè d'ottene quante risorse quant'è necessariu nantu à a dumanda, l'utilizanu, è cessà di pagà quandu ùn sò più necessarii. Inoltre, saria fantasticu di riceve istantaneamente fendu uni pochi clicchi di u mouse o eseguendu un paru di script. Hè per quessa chì i nuvuli publichi sò usati. Fighjemu a definizione:

"U nuvulu publicu hè definitu cum'è servizii di computing offerti da fornitori di terze parti nantu à l'Internet publicu, rendendu dispunibuli à tutti quelli chì volenu aduprà o cumprà. Puderanu esse gratuiti o venduti à dumanda, chì permettenu à i clienti di pagà solu per l'usu per i cicli di CPU, u almacenamentu, o a larghezza di banda chì cunsuma ".

Ci hè una opinione chì i nuvuli publichi sò caru. Ma a so idea chjave hè di riduce i costi di a cumpagnia. Cumu l'esitatu prima, i nuvuli publichi permettenu di ottene risorse nantu à dumanda è pagà solu per u tempu chì l'utilizate. Inoltre, qualchì volta scurdemu chì l'impiegati ricevenu salarii, è i specialisti sò ancu una risorsa caru. Ci vole à piglià in contu chì i nuvuli publichi facenu u supportu di l'infrastruttura assai più faciule, chì permette à l'ingegneri di fucalizza nantu à i travaglii più impurtanti. 

Valore per l'infrastruttura d'automatizazione

Chì risorse specifiche avemu bisognu per teste UI end-to-end? Bastamente si tratta di macchine virtuali o clusters (parleremu di Kubernetes in a sezione dopu) per eseguisce navigatori è emulatori. Quantu più navigatori è emulatori vulemu eseguisce simultaneamente, più CPU è memoria necessaria è più soldi avemu da pagà per questu. Cusì, i nuvuli publichi in u cuntestu di l'automatizazione di teste ci permettenu di eseguisce un gran numaru (100, 200, 1000 ...) di navigatori / emulatori nantu à a dumanda, uttene risultati di teste u più prestu pussibule è cessà di pagà per tali risorse insanamente intensive. putenza. 

I fornitori di nuvola più populari sò Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). A guida cumu furnisce esempi di cumu utilizà GCP, ma in generale ùn importa micca ciò chì aduprate per i travaglii d'automatizazione. Tutti furniscenu circa a listessa funziunalità. Di genere, per selezziunà un fornitore, a gestione si cuncentra nantu à tutta l'infrastruttura di a cumpagnia è i bisogni di l'affari, chì hè fora di u scopu di stu articulu. Per l'ingegneri di l'automatizazione, serà più interessante di paragunà l'usu di i fornituri di nuvola cù l'usu di e plataforme di nuvola specificamente per scopi di teste, cum'è Sauce Labs, BrowserStack, BitBar, etc. Allora facemu ancu ! In u mo parè, Sauce Labs hè a splutazioni di teste di nuvola più famosa, per quessa chì l'aghju utilizatu per paragunà. 

GCP vs Sauce Labs per scopi d'automatizazione:

Imaginemu chì avemu bisognu di eseguisce 8 teste web è 8 teste Android simultaneamente. Per questu useremu GCP è eseguisce 2 macchine virtuali cù Selenoid. Nantu à u primu, suscitaremu 8 cuntenituri cù i navigatori. In u sicondu ci sò 8 cuntenituri cù emulatori. Fighjemu i prezzi:  

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero
Per eseguisce un containeru cù Chrome, avemu bisognu n1-standard-1 vittura. In u casu di Android serà n1-standard-4 per un emulatore. In fatti, un modu più flexible è più prezzu hè di stabilisce valori specifichi d'utilizatori per CPU / Memoria, ma per u mumentu questu ùn hè micca impurtante per paragunà cù Sauce Labs.

E quì sò i tariffi per aduprà Sauce Labs:

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero
Credu chì avete digià nutatu a diffarenza, ma aghju sempre furnisce un tavulu cù calculi per u nostru compitu:

Risorse necessarie
Mensili
Oghje ghjornu(8 ore à 8 ore)
Oghje ghjornu+ Preemptibile

GCP per u Web
n1-standard-1 x 8 = n1-standard-8
$194.18
23 ghjorni * 12h * 0.38 = $ 104.88 
23 ghjorni * 12h * 0.08 = $ 22.08

Sauce Labs per u Web
Testi paralleli Virtual Cloud8
$1.559
-
-

GCP per Android
n1-standard-4 x 8: n1-standard-16
$776.72
23 ghjorni * 12h * 1.52 = $ 419.52 
23 ghjorni * 12h * 0.32 = $ 88.32

Sauce Labs per Android
Real Device Cloud 8 teste parallele
$1.999
-
-

Comu pudete vede, a diffarenza di u costu hè tamanta, soprattuttu s'è vo eseguite testi solu durante un periodu di travagliu di dodici ore. Ma pudete taglià i costi ancu più s'è vo aduprate machini preemptible. Chi hè què?

Una VM preemptible hè una istanza chì pudete creà è eseguisce à un prezzu assai più altu di l'istanze normali. Tuttavia, Compute Engine puderia finisce (preempt) queste istanze se esige accessu à queste risorse per altre attività. I casi preemptibili sò capacità eccessiva di Compute Engine, cusì a so dispunibilità varia cù l'usu.

Se e vostre app sò tolleranti à i difetti è ponu resiste à eventuali preempzioni di istanza, allora l'istanze preemptible ponu riduce significativamente i vostri costi di Compute Engine. Per esempiu, i travaglii di trasfurmazioni in batch ponu esse eseguiti in casi preemptible. Se alcuni di questi casi terminanu durante a trasfurmazioni, u travagliu rallenta ma ùn si ferma micca completamente. L'istanze preemptibili cumplenu i vostri travaglii di trasfurmazioni in batch senza mette una carica di travagliu supplementu nantu à e vostre istanze esistenti è senza esigenza di pagà u prezzu tutale per istanze normali supplementari.

È ùn hè ancu finitu ! In realità, sò sicuru chì nimu esegue teste per 12 ore senza una pausa. È s'ellu hè cusì, pudete automaticamente inizià è piantà e macchine virtuali quandu ùn sò micca necessariu. U tempu d'utilizazione attuale pò esse ridutta à 6 ore à ghjornu. Allora u pagamentu in u cuntestu di u nostru compitu diminuirà à $ 11 per mese per 8 navigatori. Ùn hè micca stu maravigliu? Ma cù e machini preemptible avemu da esse attenti è preparati per interruzioni è inestabilità, ancu s'è queste situazioni ponu esse furnite è trattate in u software. Vale a pena!

Ma ùn dicu micca "mai aduprate farms di prova in nuvola". Hanu una quantità di vantaghji. Prima di tuttu, questu ùn hè micca solu una macchina virtuale, ma una soluzione d'automatizazione di teste cumpleta cù un inseme di funziunalità fora di a scatula: accessu remoto, logs, screenshots, video recording, diversi navigatori è dispositivi mobili fisici. In parechje situazioni, questu pò esse una alternativa chic essenziale. E plataforme di teste sò particularmente utili per l'automatizazione IOS, quandu i nuvuli publichi ponu offre solu sistemi Linux / Windows. Ma avemu da parlà di iOS in i seguenti articuli. Vi ricumandemu sempre à fighjà a situazione è partendu da i travaglii: in certi casi hè più prezzu è più efficau di utilizà nuvuli publichi, è in altri i plataformi di teste valenu definitivamente i soldi spesi.

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili:

6. Orchestrazione

Breve descrizzione di a tecnulugia

Aghju una bona nutizia - simu quasi à a fine di l'articulu! À u mumentu, a nostra infrastruttura d'automatizazione hè custituita da testi web è Android, chì eseguimu attraversu GitLab CI in parallelu, utilizendu strumenti Docker-enabled: Selenium grid è Selenoid. Inoltre, usemu macchine virtuali create via GCP per ospitare cuntenituri cù navigatori è emulatori. Per riduce i costi, cumminciamu queste macchine virtuali solu nantu à a dumanda è fermamu quandu a prova ùn hè micca realizata. Ci hè qualcosa altru chì pò migliurà a nostra infrastruttura? A risposta hè sì! Incuntrà Kubernetes (K8s)!

Prima, fighjemu cumu e parolle orchestrazione, cluster, è Kubernetes sò ligati l'un à l'altru. À un altu livellu, l'orchestrazione hè u sistema chì implementa è gestisce l'applicazioni. Per l'automatizazione di teste, tali applicazioni containerizzate sò Selenium grid è Selenoid. Docker è K8s si cumplementanu. U primu hè adupratu per l'implementazione di l'applicazioni, u sicondu per l'orchestrazione. À u turnu, K8s hè un cluster. U compitu di u cluster hè di utilizà VM cum'è Nodes, chì vi permette di installà diverse funziunalità, prugrammi è servizii in un servitore (cluster). Se qualcunu di i Nodi falla, altri Nodi ripiglià, chì assicura l'operazione ininterrotta di a nostra applicazione. In più di questu, K8s hà una funziunalità impurtante ligata à u scaling, grazia à quale avemu automaticamente ottene a quantità ottima di risorse basatu nantu à a carica è stabilisce limiti.

In verità, implementà manualmente Kubernetes da zero ùn hè micca un compitu triviale. Lascià un ligame à a famosa guida "Kubernetes The Hard Way" è se site interessatu, pudete praticà. Ma, per furtuna, ci sò metudi è strumenti alternativu. A manera più faciule hè di utilizà Google Kubernetes Engine (GKE) in GCP, chì vi permetterà di ottene un cluster ready-made in pochi clicchi. Aghju ricumandemu d'utilizà stu approcciu per cumincià à amparà, perchè vi permetterà di fucalizza nantu à l'apprendimentu di l'usu di i K8 per i vostri compiti invece di amparà cumu i cumpunenti interni devenu esse integrati l'un à l'altru. 

Valore per l'infrastruttura d'automatizazione

Fighjemu uni pochi di funzioni impurtanti chì u K8s furnisce:

  • implementazione di l'applicazioni: utilizendu un cluster multi-nodi invece di VM;
  • scala dinamica: riduce u costu di risorse chì sò aduprate solu nantu à a dumanda;
  • auto-guarigione: ricuperazione automatica di baccelli (per via di quale i cuntenituri sò ancu restaurati);
  • rollout of updates and rollbacks of changes without downtime: l'aghjurnamentu di i strumenti, i navigatori è l'emulatori ùn interrompe micca u travagliu di l'utilizatori attuali

Ma u K8 ùn hè ancu micca una bala d'argentu. Per capiscenu tutti i vantaghji è e limitazioni in u cuntestu di l'arnesi chì avemu cunsideratu (Selenium grid, Selenoid), discuteremu brevemente a struttura di K8s. U Cluster cuntene dui tipi di Nodi: Nodi Maestri è Nodi di travagliu. I Nodi Maestri sò rispunsevuli di e decisioni di gestione, implementazione è pianificazione. I nodi di i travagliadori sò induve l'applicazioni sò lanciate. I nodi cuntenenu ancu un ambiente di runtime di cuntainer. In u nostru casu, questu hè Docker, chì hè rispunsevule per l'operazioni relative à u containeru. Ma ci sò ancu suluzioni alternative, per esempiu cuntained. Hè impurtante di capiscenu chì a scala o l'autocurazione ùn hè micca appiicata direttamente à i cuntenituri. Questu hè implementatu aghjunghjendu / diminuendu u nùmeru di pods, chì à u turnu cuntenenu cuntenituri (in solitu un cuntainer per pod, ma sicondu u compitu pò esse più). A ghjerarchia d'altu livellu hè custituita da nodi di u travagliu, in u quale ci sò baccelli, in u quale i cuntenituri sò alzati.

A funzione di scala hè chjave è pò esse appiicata à i dui nodi in un cluster node-pool è pods in un node. Ci hè 2 tipi di scala chì s'applicanu à i dui nodi è pods. U primu tippu hè horizontale - a scala si faci aumentendu u numeru di nodi / pods. Stu tipu hè più preferibile. U sicondu tipu hè, per quessa, verticale. Scaling hè realizatu aumentendu a dimensione di nodi / pods, è micca u so numeru.

Avà fighjemu i nostri strumenti in u cuntestu di i termini sopra.

Griglia di seleniu

Cumu l'esitatu prima, a griglia di Selenium hè un strumentu assai populari, è ùn hè micca surprisa chì hè stata cuntainerizzata. Dunque, ùn hè micca surprisa chì a griglia di Selenium pò esse implementata in K8s. Un esempiu di cumu fà questu pò esse truvatu in u repositoriu ufficiale K8s. Comu solitu, aghju attaccatu ligami à a fine di a sezione. Inoltre, a guida cumu si mostra cumu fà questu in Terraform. Ci hè ancu struzzioni nantu à cumu scala u numeru di pods chì cuntenenu cuntenituri di navigatore. Ma a funzione di scaling automatica in u cuntestu di K8s ùn hè ancu micca un compitu cumplitamenti evidenti. Quandu aghju cuminciatu à studià, ùn aghju micca trovu alcuna guida pratica o raccomandazione. Dopu parechji studii è esperimenti cù u sustegnu di a squadra DevOps, avemu sceltu l'approcciu di crià cuntenituri cù i navigatori necessarii in un pod, chì si trova in un nodu di u travagliu. Stu metudu ci permette di applicà a strategia di scala horizontale di nodi aumentendu u so numeru. Spergu chì questu cambierà in u futuru è vedemu più è più descrizzioni di avvicinamenti megliu è suluzioni pronti, soprattuttu dopu a liberazione di Selenium grid 4 cù una architettura interna cambiata.

Selenoide:

A implementazione di selenoid in K8s hè attualmente a più grande delusione. Ùn sò micca cumpatibili. In teoria, pudemu elevà un containeru Selenoid in un pod, ma quandu Selenoid principia à lancià cuntenituri cù i navigatori, seranu sempre in u stessu pod. Questu rende impussibile a scala è, in u risultatu, u travagliu di Selenoid in un cluster ùn serà micca diffirenti da u travagliu in una macchina virtuale. A fine di a storia.

Luna:

Sapendu stu collu di bottiglia quandu travaglia cù Selenoid, i sviluppatori anu liberatu un strumentu più putente chjamatu Luna. Stu strumentu hè statu inizialmente cuncepitu per travaglià cù Kubernetes è, in u risultatu, a funzione di autoscaling pò è deve esse usata. Inoltre, diceraghju chì in u mumentu hè u solu un strumentu in u mondu Selenium, chì hà un supportu nativu di cluster K8s fora di a scatula (ùn hè più dispunibule, vede u prossimu strumentu ). E caratteristiche chjave di Moon chì furnisce stu supportu sò: 

Completamente senza statu. Selenoid almacena in memoria l'infurmazioni nantu à e sessioni di navigatore attualmente in esecuzione. Se per una certa ragione u so prucessu crash - allora tutte e sessioni in esecuzione sò perse. A Luna invece ùn hà micca statu internu è pò esse replicatu in i centri di dati. E sessioni di u navigatore restanu vivu ancu s'è una o più rèpliche falanu.

Allora, Luna hè una grande suluzione, ma ci hè un prublema: ùn hè micca liberu. U prezzu dipende da u numeru di sessioni. Pudete solu eseguisce 0-4 sessioni gratuitamente, chì ùn hè micca particularmente utile. Ma, partendu da a quinta sessione, avete da pagà $ 5 per ognunu. A situazione pò differisce da cumpagnia à cumpagnia, ma in u nostru casu, l'usu di Luna hè inutile. Cumu l'aghju descrittu sopra, pudemu eseguisce VMs cù Selenium Grid nantu à dumanda o aumentà u numeru di Nodes in u cluster. Per circa un pipeline, lancemu 500 navigatori è fermemu tutte e risorse dopu chì i testi sò finiti. Sè avemu usatu Luna, avissi a pagari un supplementu 500 x 5 = $ 2500 per mese, ùn importa quante volte avemu curriri testi. In novu, ùn dicu micca chì ùn utilizate micca a Luna. Per i vostri compiti, questu pò esse una suluzione indispensabile, per esempiu, se avete assai prughjetti / squadre in a vostra urganizazione è avete bisognu di un grande cluster cumunu per tutti. Cum'è sempre, lassu un ligame à a fine è ricumandemu di fà tutti i calculi necessarii in u cuntestu di u vostru compitu.

Callisto: (Attenzione ! Questu ùn hè micca in l'articulu originale è hè solu in a traduzzione russa)

Comu dissi, Selenium hè un strumentu assai populari, è u campu di l'IT si sviluppa assai rapidamente. Mentre ch'e aghju travagliatu nantu à a traduzzione, un novu strumentu promettente chjamatu Callisto hè apparsu nantu à u web (salutu Cypress è altri assassini di Selenium). Funziona nativamente cù K8s è permette di eseguisce cuntenituri Selenoid in pods, distribuiti in Nodes. Tuttu funziona ghjustu fora di a scatula, cumpresa l'autoscaling. Fantasticu, ma deve esse pruvatu. Aghju digià riesciutu à implementà stu strumentu è eseguite parechji esperimenti. Ma hè troppu prestu per piglià cunclusioni, dopu avè ricivutu risultati nantu à una longa distanza, forse aghju da fà una rivista in articuli futuri. Per avà lasciu solu ligami per a ricerca indipendente.  

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre

Strumenti simili

7. Infrastruttura cum'è Code (IaC)

Breve descrizzione di a tecnulugia

È avà ghjunghjemu à l'ultima sezione. Di genere, sta tecnulugia è i travaglii cunnessi ùn sò micca rispunsabilità di l'ingegneri di l'automatizazione. È ci sò ragiuni per questu. Prima, in parechje urganisazioni, i prublemi di l'infrastruttura sò sottu à u cuntrollu di u dipartimentu DevOps è i squadre di sviluppu ùn si preoccupanu micca veramente di ciò chì face u funziunamentu di u pipeline è cumu tuttu ciò chì cunnessu cù questu deve esse supportatu. Siconda, essendu onestu, a pratica di l'Infrastruttura cum'è Code (IaC) ùn hè ancu aduttatu in parechje cumpagnie. Ma hè diventatu definitivamente una tendenza populari è hè impurtante per pruvà à esse implicati in i prucessi, avvicinamenti è arnesi assuciati cun ella. O almenu stà à ghjornu.

Cuminciamu cù a motivazione per aduprà stu approcciu. Avemu digià discututu chì per eseguisce testi in GitlabCI, avemu bisognu à u minimu e risorse per eseguisce Gitlab Runner. È per eseguisce cuntenituri cù navigatori / emulatori, avemu bisognu di riservà una VM o cluster. In più di e risorse di teste, avemu bisognu di una quantità significativa di capacità per sustene u sviluppu, staging, ambienti di pruduzzione, chì includenu ancu basa di dati, scheduli automatichi, cunfigurazioni di rete, balancers di carica, diritti d'utilizatori, etc. U prublema chjave hè u sforzu necessariu per sustene tuttu. Ci hè parechje manere chì pudemu fà cambiamenti è mette l'aghjurnamenti. Per esempiu, in u cuntestu di GCP, pudemu usà a cunsola UI in u navigatore è eseguisce tutte l'azzioni clicchendu i buttoni. Una alternativa seria d'utilizà e chjama API per interagisce cù entità di nuvola, o aduprà l'utilità di linea di cummanda gcloud per fà e manipulazioni desiderate. Ma cù un gran numaru di entità diverse è elementi infrastrutturali, diventa difficiule o ancu impussibile di fà tutte e operazioni manualmente. Inoltre, tutte queste azzione manuale sò incontrollable. Ùn pudemu micca sottumessu per rivisione prima di l'esekzione, aduprà un sistema di cuntrollu di versione, è rinvià rapidamente i cambiamenti chì anu purtatu à l'incidentu. Per risolve tali prublemi, l'ingegneri anu creatu è creanu script automatici bash / shell, chì ùn sò micca assai megliu cà i metudi precedenti, postu chì ùn sò micca cusì faciuli di leghje rapidamente, capiscenu, mantenenu è mudificà in un stile procedurale.

In questu articulu è cumu guidà, aghju utilizatu 2 strumenti in relazione à a pratica IaC. Questi sò Terraform è Ansible. Certi pirsuni crèdenu chì ùn hà micca sensu di usà à u stessu tempu, postu chì a so funziunalità hè simile è sò intercambiabili. Ma u fattu hè chì, inizialmente, sò datu compiti completamente differenti. È u fattu chì sti strumenti devenu cumplementarii l'altri hè statu cunfirmatu in una presentazione cumuna da i sviluppatori chì rapprisentanu HashiCorp è RedHat. A diferenza cuncettuale hè chì Terraform hè un strumentu di pruvista per a gestione di i servitori stessi. Mentre Ansible hè un strumentu di gestione di cunfigurazione chì u so compitu hè di stallà, cunfigurà è gestisce u software in questi servitori.

Un'altra funzione distintiva chjave di questi strumenti hè u stilu di codificazione. A cuntrariu di bash è Ansible, Terraform usa un stile dichjarazione basatu annantu à una descrizzione di u statu finale desideratu per esse rializatu in u risultatu di l'esekzione. Per esempiu, se avemu da creà 10 VM è applicà i cambiamenti à traversu Terraform, allora averemu 10 VM. Se curriamu u script di novu, nunda ùn succederà postu chì avemu digià 10 VM, è Terraform sapi di questu perchè guarda u statu attuale di l'infrastruttura in un schedariu statale. Ma Ansible usa un accostu procedurale è, se li dumandate di creà 10 VMs, allora nantu à u primu lanciamentu averemu 10 VMs, simili à Terraform. Ma dopu avè riavviatu avemu digià 20 VMs. Questa hè a diferenza impurtante. In u stilu procedurale, ùn avemu micca guardatu u statu attuale è simpricimenti descrive una sequenza di passi chì deve esse realizatu. Di sicuru, pudemu trattà diverse situazioni, aghjunghje parechji cuntrolli per l'esistenza di risorse è u statu attuale, ma ùn ci hè nunda di perdi u nostru tempu è di mette u sforzu per cuntrullà sta logica. Inoltre, questu aumenta u risicu di fà sbagli. 

Riassuntu tuttu ciò chì sopra, pudemu cuncludi chì Terraform è a notazione dichjarazione sò un strumentu più adattatu per a pruvista di servitori. Ma hè megliu delegate u travagliu di gestione di cunfigurazione à Ansible. Cù questu fora di u modu, fighjemu i casi d'usu in u cuntestu di l'automatizazione.

Valore per l'infrastruttura d'automatizazione

L'unica cosa impurtante per capiscenu quì hè chì l'infrastruttura di l'automatizazione di teste deve esse cunsiderata cum'è parte di l'infrastruttura di a cumpagnia sana. Questu significa chì tutte e pratiche IaC devenu esse applicate in u mondu à e risorse di l'urganizazione sana. Quale hè rispunsevule per questu dipende di i vostri prucessi. U squadra DevOps hè più espertu in questi prublemi, vedenu tutta a stampa di ciò chì succede. In ogni casu, l'ingegneri QA sò più implicati in u prucessu di l'automatizazione di l'edificiu è a struttura di u pipeline, chì li permette di vede megliu tutti i cambiamenti necessarii è l'opportunità per a migliione. A megliu opzione hè di travaglià inseme, scambià cunniscenze è idee per ottene u risultatu previstu. 

Eccu alcuni esempi di l'usu di Terraform è Ansible in u cuntestu di l'automatizazione di teste è l'arnesi chì avemu discututu prima:

1. Descrive e caratteristiche è i paràmetri necessarii di VM è clusters chì utilizanu Terraform.

2. Utilizendu Ansible, installate l'arnesi necessarii per a prova: docker, Selenoid, Selenium Grid è scaricate e versioni richieste di navigatori / emulatori.

3. Utilizendu Terraform, descrive e caratteristiche di a VM in quale GitLab Runner serà lanciatu.

4. Installa GitLab Runner è l'arnesi necessarii d'accumpagnamentu cù Ansible, stabilisce paràmetri è cunfigurazioni.

Illustrazione di u statu attuale di l'infrastruttura

L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Ligami per scopre:

Strumenti simili

Riassumemu !

passu
Technology
Tools
Valore per l'infrastruttura d'automatizazione

1
Corsa locale
Node.js, Selenium, Appium

  • I strumenti più populari per u web è mobile
  • Supporta parechje lingue è piattaforme (cumpresu Node.js)

2
Sistemi di cuntrollu di versione 
Git

  • Beneficii simili cù u codice di sviluppu

3
Containerization
Docker, Selenium grid, Selenoid (Web, Android)

  • Esecuzione di testi in parallelu
  • Ambienti isolati
  • Aggiornamenti di versione simplici è flessibili
  • Ferma dinamicamente e risorse inutilizate
  • Facile da installà

4
CI/CD
Gitlab CI

  • Testa parte di u pipeline
  • Risposta rapida
  • Visibilità per tutta a cumpagnia / squadra

5
Piattaforme Cloud
Google Cloud Platform

  • Risorse nantu à a dumanda (paghemu solu quandu hè necessariu)
  • Facile da gestisce è aghjurnà
  • Visibilità è cuntrollu di tutte e risorse

6
Orchestration
Kubernetes
In u cuntestu di cuntenituri cù navigatori / emulatori in pods:

  • Scaling/auto scaling
  • Auto-guarigione
  • Aghjurnamenti è rollbacks senza interruzzione

7
Infrastruttura cum'è codice (IaC)
Terraform, Ansible

  • Beneficii simili cù l'infrastruttura di sviluppu
  • Tutti i benefici di a versione di codice
  • Facile per fà cambiamenti è mantene
  • Completamente automatizatu

Diagrammi di carte mentale: evoluzione di l'infrastruttura

Passu 1: Locale
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Passu 2: VCS
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Step3: Containerization 
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Step4: CI/CD 
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Step5: Piattaforme Cloud
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Step6: Orchestrazione
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

passu 7: IaC
L'arnesi DevOps ùn sò micca solu per DevOps. U prucessu di custruisce una infrastruttura d'automatizazione di teste da zero

Chi c'è vicinu?

Dunque, questu hè a fine di l'articulu. Ma in cunclusioni, vogliu stabilisce certi accordi cun voi.

Da u vostru latu
Comu dissi à u principiu, mi piacerebbe chì l'articulu sia d'utile praticu è aiutavvi à applicà a cunniscenza acquistata in u travagliu veru. Aghju aghjustatu di novu ligame à a guida pratica.

Ma ancu dopu, ùn fermate micca, praticate, studià ligami pertinenti è libri, scopre cumu si travaglia in a vostra cumpagnia, truvate lochi chì ponu esse migliurati è participà à questu. Bona Furtuna !

Da u mo latu

Da u tìtulu pudete vede chì questu era solu a prima parte. Malgradu u fattu chì hè diventatu abbastanza grande, temi impurtanti ùn sò micca cuparti quì. In a seconda parte, aghju pensatu à guardà l'infrastruttura d'automatizazione in u cuntestu di IOS. A causa di e restrizioni d'Apple in l'esecuzione di simulatori iOS solu nantu à i sistemi macOS, a nostra gamma di soluzioni hè ristretta. Per esempiu, ùn pudemu micca aduprà Docker per eseguisce u simulatore o nuvuli publichi per eseguisce e macchine virtuali. Ma questu ùn significa micca chì ùn ci sò micca altre alternative. Pruvaraghju di mantenevi aghjurnatu cù suluzioni avanzate è arnesi muderni !

Inoltre, ùn aghju micca parlatu di temi abbastanza grandi in relazione à u monitoraghju. In a Parte 3, andaraghju à guardà l'arnesi di monitoraghju di l'infrastruttura più populari è quali dati è metriche da cunsiderà.

È infine. In u futuru, aghju pensatu à liberà un video cursu nantu à a custruzzione di l'infrastruttura di teste è l'arnesi populari. Attualmente, ci sò uni pochi di corsi è lezioni nantu à DevOps in Internet, ma tutti i materiali sò presentati in u cuntestu di u sviluppu, micca l'automatizazione di teste. Nantu à questu prublema, aghju veramente bisognu di feedback nantu à se un tali cursu serà interessante è preziosu per a cumunità di teste è ingegneri d'automatizazione. Grazie in anticipu!

Source: www.habr.com

Add a comment