L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Parti 1: Web/Android

Innota: dan l-artikolu huwa traduzzjoni għar-Russu tal-artiklu oriġinali “L-għodod DevOps mhumiex biss għal DevOps. "Bini infrastruttura ta 'awtomazzjoni tat-test mill-bidu." Madankollu, l-illustrazzjonijiet, il-links, il-kwotazzjonijiet u t-termini kollha huma ppreservati fil-lingwa oriġinali biex tiġi evitata distorsjoni tat-tifsira meta jiġu tradotti għar-Russu. Nawguralkom kuntenti tistudjaw!

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Bħalissa, l-ispeċjalità DevOps hija waħda mill-aktar domanda fl-industrija tal-IT. Jekk tiftaħ siti popolari ta’ tfittxija ta’ xogħol u tiffiltra skont is-salarju, tara li l-impjiegi relatati ma’ DevOps jinsabu fil-quċċata tal-lista. Madankollu, huwa importanti li wieħed jifhem li dan jirreferi prinċipalment għal pożizzjoni 'Senior', li jimplika li l-kandidat għandu livell għoli ta' ħiliet, għarfien tat-teknoloġija u għodod. Dan jiġi wkoll ma 'grad għoli ta' responsabbiltà assoċjata mal-operat mhux interrott tal-produzzjoni. Madankollu, bdejna ninsew x'inhu DevOps. Inizjalment, ma kienx xi persuna jew dipartiment speċifiku. Jekk infittxu definizzjonijiet ta’ dan it-terminu, insibu ħafna nomi sbieħ u korretti, bħal metodoloġija, prattiċi, filosofija kulturali, grupp ta’ kunċetti, eċċ.

L-ispeċjalizzazzjoni tiegħi hija inġinier tal-awtomazzjoni tat-test (inġinier tal-awtomazzjoni tal-QA), iżda nemmen li m'għandhiex tkun assoċjata biss mal-kitba ta 'testijiet awtomatiċi jew mal-iżvilupp tal-arkitettura tal-qafas tat-test. Fl-2020, l-għarfien tal-infrastruttura tal-awtomazzjoni huwa essenzjali wkoll. Dan jippermettilek torganizza l-proċess ta’ awtomazzjoni lilek innifsek, milli tmexxi testijiet sal-provvista tar-riżultati lill-partijiet interessati kollha skont il-miri tiegħek. Bħala riżultat, il-ħiliet DevOps huma essenzjali biex isir ix-xogħol. U dan kollu huwa tajjeb, iżda, sfortunatament, hemm problema (spoiler: dan l-artikolu jipprova jissimplifika din il-problema). Il-punt huwa li DevOps huwa diffiċli. U dan huwa ovvju, minħabba li l-kumpaniji mhux se jħallsu ħafna għal xi ħaġa li hija faċli li tagħmel... Fid-dinja DevOps, hemm numru kbir ta 'għodod, termini, u prattiki li jeħtieġ li jiġu mhaddma. Dan huwa speċjalment diffiċli fil-bidu ta 'karriera u jiddependi fuq l-esperjenza teknika akkumulata.

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu
Sors: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Hawnhekk probabbilment se nispiċċaw bil-parti introduttorja u niffukaw fuq l-iskop ta 'dan l-artikolu. 

X'inhu dan l-artikolu dwar?

F'dan l-artikolu, ser naqsam l-esperjenza tiegħi tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test. Hemm ħafna sorsi ta 'informazzjoni fuq l-Internet dwar għodod varji u kif tużahom, iżda nixtieq inħares lejhom purament fil-kuntest tal-awtomazzjoni. Nemmen li ħafna inġiniera tal-awtomazzjoni huma familjari mas-sitwazzjoni meta ħadd ħliefek ma jmexxi t-testijiet żviluppati jew jieħu ħsieb iżżommhom. Bħala riżultat, it-testijiet isiru skaduti u trid tqatta’ ħin taġġornahom. Għal darb'oħra, fil-bidu ta 'karriera, dan jista' jkun kompitu pjuttost diffiċli: tiddeċiedi b'mod għaqli liema għodod għandhom jgħinu biex telimina problema partikolari, kif tagħżel, tikkonfigura u żżommhom. Xi testers jirrikorru għand DevOps (bnedmin) għall-għajnuna u, ejja nkunu onesti, dan l-approċċ jaħdem. F'ħafna każijiet din tista' tkun l-unika għażla peress li m'għandniex viżibilità fid-dipendenzi kollha. Imma kif nafu, DevOps huma guys okkupati ħafna, għax iridu jaħsbu dwar l-infrastruttura, l-iskjerament, il-monitoraġġ, il-mikroservizzi u kompiti simili oħra tal-kumpanija kollha skont l-organizzazzjoni/tim. Kif normalment ikun il-każ, l-awtomazzjoni mhix prijorità. F’każ bħal dan, irridu nippruvaw nagħmlu dak kollu possibbli min-naħa tagħna mill-bidu sal-aħħar. Dan se jnaqqas id-dipendenzi, iħaffef il-fluss tax-xogħol, intejjeb il-ħiliet tagħna u jippermettilna naraw l-istampa akbar ta 'dak li qed jiġri.

L-artiklu jippreżenta l-għodod l-aktar popolari u popolari u juri kif tużahom biex tibni infrastruttura ta 'awtomazzjoni pass pass. Kull grupp huwa rappreżentat minn għodod li ġew ittestjati permezz ta 'esperjenza personali. Imma dan ma jfissirx li għandek tuża l-istess ħaġa. L-għodda nfushom mhumiex importanti, jidhru u jsiru skaduti. Il-kompitu tal-inġinerija tagħna huwa li nifhmu l-prinċipji bażiċi: għaliex għandna bżonn dan il-grupp ta 'għodod u liema problemi tax-xogħol nistgħu nsolvu bl-għajnuna tagħhom. Huwa għalhekk li fl-aħħar ta' kull taqsima nħalli links għal għodod simili li jistgħu jintużaw fl-organizzazzjoni tiegħek.

Dak li mhux f'dan l-artikolu

Nirrepeti għal darb'oħra li l-artiklu mhuwiex dwar għodod speċifiċi, għalhekk mhux se jkun hemm inserzjonijiet ta 'kodiċi mid-dokumentazzjoni u deskrizzjonijiet ta' kmandi speċifiċi. Imma fl-aħħar ta’ kull taqsima nħalli links għal studju dettaljat.

Dan isir minħabba li: 

  • dan il-materjal huwa faċli ħafna li ssib f'diversi sorsi (dokumentazzjoni, kotba, korsijiet bil-vidjo);
  • jekk nibdew nidħlu aktar fil-fond, ikollna niktbu 10, 20, 30 parti minn dan l-artiklu (filwaqt li l-pjanijiet huma 2-3);
  • Ma rridx naħli l-ħin tiegħek peress li tista' tkun trid tuża għodod oħra biex tikseb l-istess għanijiet.

Prattika

Nixtieq ħafna li dan il-materjal ikun utli għal kull qarrej, u mhux biss jaqra u minsi. Fi kwalunkwe studju, il-prattika hija komponent importanti ħafna. Għal dan ħejjejt Repożitorju GitHub bi struzzjonijiet pass pass dwar kif tagħmel kollox mill-bidu. Hemm ukoll il-homework għalikom biex taċċerta ruħek li ma tikkopja bla ħsieb il-linji tal-kmandi li tkun qed tesegwixxi.

Pjan

Pass
teknoloġija
għodod

1
Tmexxija lokali (pprepara testijiet demo tal-web / android u mexxiha lokalment) 
Node.js, Selenju, Appium

2
Sistemi ta' kontroll tal-verżjoni 
go

3
Konteniturizzazzjoni
Docker, grilja tas-Selenju, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
Pjattaformi tas-sħab
Google Cloud Platform

6
Orkestrazzjoni
Kubernetes

7
Infrastruttura bħala kodiċi (IaC)
Terraform, Ansible

Struttura ta' kull taqsima

Biex in-narrattiva tibqa’ ċara, kull taqsima hija deskritta skont il-qosor li ġej:

  • deskrizzjoni qasira tat-teknoloġija,
  • valur għall-infrastruttura tal-awtomazzjoni,
  • illustrazzjoni tal-istat attwali tal-infrastruttura,
  • links għall-istudju,
  • għodod simili.

1. Mexxi testijiet lokalment

Deskrizzjoni qasira tat-teknoloġija

Dan huwa biss pass preparatorju biex tmexxi t-testijiet demo lokalment u tivverifika li jgħaddu. Fil-parti prattika, jintuża Node.js, iżda l-lingwa tal-ipprogrammar u l-pjattaforma wkoll mhumiex importanti u tista 'tuża dawk li jintużaw fil-kumpanija tiegħek. 

Madankollu, bħala għodod ta 'awtomazzjoni, nirrakkomanda li tuża Selenium WebDriver għal pjattaformi tal-web u Appium għall-pjattaforma Android, rispettivament, peress li fil-passi li jmiss se nużaw immaġini Docker li huma mfassla biex jaħdmu speċifikament ma' dawn l-għodod. Barra minn hekk, b'referenza għar-rekwiżiti tax-xogħol, dawn l-għodod huma l-aktar fid-domanda fis-suq.

Kif forsi innotajt, aħna nikkunsidraw biss it-testijiet tal-web u tal-Android. Sfortunatament, iOS hija storja kompletament differenti (grazzi Apple). Nippjana li nuri soluzzjonijiet u prattiki relatati mal-IOS f'partijiet li ġejjin.

Valur għall-infrastruttura tal-awtomazzjoni

Mill-perspettiva tal-infrastruttura, it-tħaddim lokalment ma jipprovdi l-ebda valur. Tiċċekkja biss li t-testijiet jaħdmu fuq il-magna lokali fil-browsers u simulaturi lokali. Iżda fi kwalunkwe każ, dan huwa punt tat-tluq meħtieġ.

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili

  • kwalunkwe lingwa ta' programmar li tixtieq flimkien mat-testijiet Selenium/Appium;
  • kwalunkwe test;
  • kwalunkwe runner tat-test.

2. Sistemi ta' kontroll tal-verżjoni (Git)

Deskrizzjoni qasira tat-teknoloġija

Mhux se tkun rivelazzjoni kbira għal ħadd jekk ngħid li l-kontroll tal-verżjoni huwa parti estremament importanti mill-iżvilupp, kemm f’tim kif ukoll individwalment. Ibbażat fuq diversi sorsi, huwa tajjeb li wieħed jgħid li Git huwa r-rappreżentant l-aktar popolari. Sistema ta 'kontroll tal-verżjoni tipprovdi ħafna benefiċċji, bħall-kondiviżjoni tal-kodiċi, il-ħażna tal-verżjonijiet, ir-restawr għal fergħat preċedenti, il-monitoraġġ tal-istorja tal-proġett, u l-backups. Aħna mhux se niddiskutu kull punt fid-dettall, peress li jien ċert li inti familjari ħafna miegħu u tużah fix-xogħol tiegħek ta 'kuljum. Imma jekk f'daqqa waħda le, allura nirrakkomanda li nieqaf naqra dan l-artikolu u timla dan il-vojt kemm jista 'jkun malajr.

Valur għall-infrastruttura tal-awtomazzjoni

U hawn tista’ tistaqsi mistoqsija raġonevoli: “Għaliex qed jgħidilna dwar Git? Kulħadd jaf dan u jużah kemm għall-kodiċi tal-iżvilupp kif ukoll għall-kodiċi tat-test awtomatiku.” Int ser ikollok raġun assolutament, iżda f'dan l-artikolu qed nitkellmu dwar l-infrastruttura u din it-taqsima taġixxi bħala preview għat-taqsima 7: "Infrastruttura bħala Kodiċi (IaC)". Għalina, dan ifisser li l-infrastruttura kollha, inkluż l-ittestjar, hija deskritta fil-forma ta 'kodiċi, għalhekk nistgħu wkoll napplikaw sistemi ta' verżjonijiet għaliha u niksbu benefiċċji simili bħal għall-kodiċi ta 'żvilupp u awtomazzjoni.

Aħna ser inħarsu lejn IaC f'aktar dettall fil-Pass 7, iżda anke issa tista 'tibda tuża Git lokalment billi toħloq repożitorju lokali. L-istampa l-kbira se tiġi estiża meta nżidu repożitorju remot mal-infrastruttura.

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili

3. Kontenitur (Docker)

Deskrizzjoni qasira tat-teknoloġija

Biex turi kif il-kontejners bidlet ir-regoli tal-logħba, ejja mmorru lura fiż-żmien ftit deċennji. Dakinhar, in-nies xtraw u użaw magni tas-server biex imexxu l-applikazzjonijiet. Iżda fil-biċċa l-kbira tal-każijiet, ir-riżorsi tal-istartjar meħtieġa ma kinux magħrufa minn qabel. Bħala riżultat, il-kumpaniji nefqu flus fuq ix-xiri ta 'servers għaljin u b'saħħithom, iżda xi wħud minn din il-kapaċità ma ġewx utilizzati kompletament.

L-istadju li jmiss ta 'evoluzzjoni kien magni virtwali (VMs), li solvew il-problema tal-ħela ta' flus fuq riżorsi mhux użati. Din it-teknoloġija għamlitha possibbli li l-applikazzjonijiet jitħaddmu indipendentement minn xulxin fl-istess server, u talloka spazju kompletament iżolat. Iżda, sfortunatament, kwalunkwe teknoloġija għandha l-iżvantaġġi tagħha. It-tħaddim ta' VM jeħtieġ sistema operattiva sħiħa, li tikkonsma CPU, RAM, ħażna u, skont l-OS, jeħtieġ li jitqiesu l-ispejjeż tal-liċenzja. Dawn il-fatturi jaffettwaw il-veloċità tat-tagħbija u jagħmlu l-portabbiltà diffiċli.

U issa niġu għall-kontejners. Għal darb'oħra, din it-teknoloġija ssolvi l-problema preċedenti, peress li l-kontenituri ma jużawx OS sħiħ, li jillibera ammont kbir ta 'riżorsi u jipprovdi soluzzjoni veloċi u flessibbli għall-portabbiltà.

Naturalment, it-teknoloġija tal-kontejners mhi xejn ġdida u ġiet introdotta għall-ewwel darba fl-aħħar tas-snin 70. F'dawk il-jiem, saru ħafna riċerka, żviluppi u tentattivi. Iżda kien Docker li adatta din it-teknoloġija u għamilha faċilment aċċessibbli għall-massa. Illum il-ġurnata, meta nitkellmu dwar kontejners, fil-biċċa l-kbira tal-każijiet nifhmu Docker. Meta nitkellmu dwar kontenituri Docker, irridu nfissru kontenituri Linux. Nistgħu nużaw sistemi Windows u macOS biex inħaddmu kontenituri, iżda huwa importanti li nifhmu li f'dan il-każ jidher saff addizzjonali. Pereżempju, Docker fuq Mac imexxi kontenituri fis-skiet ġewwa VM Linux ħafifa. Se nerġgħu lura għal dan is-suġġett meta niddiskutu t-tħaddim ta 'emulaturi Android ġewwa kontenituri, għalhekk hawn hemm sfumatura importanti ħafna li jeħtieġ li tiġi diskussa f'aktar dettall.

Valur għall-infrastruttura tal-awtomazzjoni

Sirna li l-kontejners u Docker huma jibred. Ejja nħarsu lejn dan fil-kuntest tal-awtomazzjoni, għaliex kull għodda jew teknoloġija teħtieġ issolvi problema. Ejja niddeskrivu l-problemi ovvji tal-awtomazzjoni tat-test fil-kuntest tat-testijiet tal-UI:

  • numru kbir ta 'dipendenzi meta tinstalla Selenium u speċjalment Appium;
  • problemi ta' kompatibilità bejn verżjonijiet ta' browsers, simulaturi u sewwieqa;
  • nuqqas ta' spazju iżolat għall-browsers/simulaturi, li huwa partikolarment kritiku għat-tħaddim parallel;
  • diffiċli biex timmaniġġja u żżomm jekk ikollok bżonn tħaddem 10, 50, 100 jew saħansitra 1000 browser fl-istess ħin.

Iżda peress li Selenium huwa l-għodda ta 'awtomazzjoni l-aktar popolari u Docker hija l-għodda ta' kontejners l-aktar popolari, m'għandha tkun l-ebda sorpriża li xi ħadd ipprova jgħaqqadhom biex joħloq għodda qawwija biex issolvi l-problemi msemmija hawn fuq. Ejja nikkunsidraw tali soluzzjonijiet f'aktar dettall. 

Grid tas-selenju fid-docker

Din l-għodda hija l-aktar popolari fid-dinja tas-Selenju għat-tħaddim ta’ browsers multipli fuq magni multipli u l-ġestjoni tagħhom minn ċentru ċentrali. Biex tibda, trid tirreġistra mill-inqas 2 partijiet: Hub u Node(s). Hub huwa node ċentrali li jirċievi t-talbiet kollha mit-testijiet u jqassamhom lin-Nodi xierqa. Għal kull Node nistgħu nikkonfiguraw konfigurazzjoni speċifika, pereżempju, billi nispeċifikaw il-browser mixtieq u l-verżjoni tiegħu. Madankollu, għad għandna bżonn nieħdu ħsieb is-sewwieqa tal-browser kompatibbli aħna stess u ninstallawhom fuq in-Nodi mixtieqa. Għal din ir-raġuni, il-grilja tas-Selenju ma tintużax fil-forma pura tagħha, ħlief meta għandna bżonn naħdmu ma 'browsers li ma jistgħux jiġu installati fuq Linux OS. Għall-każijiet l-oħra kollha, soluzzjoni flessibbli u korretta b'mod sinifikanti tkun li jintużaw immaġini Docker biex imexxu Selenium grid Hub u Nodes. Dan l-approċċ jissimplifika bil-kbir il-ġestjoni tan-nodi, peress li nistgħu nagħżlu l-immaġni li neħtieġu b'verżjonijiet kompatibbli ta 'browsers u sewwieqa diġà installati.

Minkejja reviżjonijiet negattivi dwar l-istabbiltà, speċjalment meta tmexxi numru kbir ta 'Nodes b'mod parallel, il-grilja tas-Selenju għadha l-għodda l-aktar popolari biex tmexxi testijiet tas-Selenju b'mod parallel. Huwa importanti li wieħed jinnota li diversi titjib u modifiki ta 'din l-għodda qed jidhru kontinwament f'sors miftuħ, li jiġġieldu diversi konġestjonijiet.

Selenoid għall-Web

Din l-għodda hija avvanz fid-dinja tas-Selenju peress li taħdem mill-ewwel u għamlet il-ħajja ta 'ħafna inġiniera tal-awtomazzjoni ħafna aktar faċli. L-ewwelnett, din mhix modifika oħra tal-grilja tas-Selenju. Minflok, l-iżviluppaturi ħolqu verżjoni kompletament ġdida ta 'Selenium Hub f'Golang, li, flimkien ma' stampi Docker ħfief għal diversi browsers, taw impetu għall-iżvilupp tal-awtomazzjoni tat-test. Barra minn hekk, fil-każ tas-Selenium Grid, irridu niddeterminaw il-browsers kollha meħtieġa u l-verżjonijiet tagħhom minn qabel, li mhix problema meta naħdmu ma 'browser wieħed biss. Iżda meta niġu għal browsers appoġġjati multipli, Selenoid huwa s-soluzzjoni numru wieħed grazzi għall-karatteristika tiegħu 'browser on demand'. Dak kollu li hu meħtieġ minna huwa li tniżżel l-immaġini meħtieġa bil-browsers minn qabel u naġġorna l-fajl ta 'konfigurazzjoni li miegħu jinteraġixxi Selenoid. Wara li Selenoid jirċievi talba mit-testijiet, awtomatikament iniedi l-kontenitur mixtieq bil-browser mixtieq. Meta jitlesta t-test, Selenoid jirtira l-kontenitur, u b'hekk jillibera r-riżorsi għal talbiet futuri. Dan l-approċċ jelimina kompletament il-problema magħrufa ta ''degradazzjoni tan-node' li spiss niltaqgħu magħhom fil-grilja tas-Selenju.

Iżda, sfortunatament, Selenoid għadu mhux bulit tal-fidda. Aħna ksibna l-karatteristika 'browser on demand', iżda l-karatteristika 'riżorsi fuq talba' għadha mhix disponibbli. Biex nużaw Selenoid, irridu niskjerawha fuq hardware fiżiku jew fuq VM, li jfisser li rridu nkunu nafu minn qabel kemm jeħtieġ li jiġu allokati riżorsi. Naħseb li din mhix problema għal proġetti żgħar li jħaddmu 10, 20 jew saħansitra 30 browser b'mod parallel. Imma x'jiġri jekk għandna bżonn 100, 500, 1000 jew aktar? Ma jagħmilx sens li żżomm u tħallas għal tant riżorsi l-ħin kollu. Fit-taqsimiet 5 u 6 ta’ dan l-artikolu, ser niddiskutu soluzzjonijiet li jippermettulek tiskala, u b’hekk tnaqqas b’mod sinifikanti l-ispejjeż tal-kumpanija.

Selenoid għal Android

Wara s-suċċess ta 'Selenoid bħala għodda ta' awtomazzjoni tal-web, in-nies riedu xi ħaġa simili għal Android. U ġara - Selenoid ġie rilaxxat b'appoġġ Android. Mill-aspett tal-utent ta 'livell għoli, il-prinċipju tal-operat huwa simili għall-awtomazzjoni tal-web. L-unika differenza hija li minflok il-kontenituri tal-browser, Selenoid imexxi kontenituri tal-emulatur Android. Fl-opinjoni tiegħi, bħalissa din hija l-aktar għodda b'xejn b'saħħitha għat-tmexxija tat-testijiet Android b'mod parallel.

Verament ma nixtieqx nitkellem dwar l-aspetti negattivi ta 'din l-għodda, peress li verament jogħġobni ħafna. Iżda xorta waħda, hemm l-istess żvantaġġi li japplikaw għall-awtomazzjoni tal-web u huma assoċjati mal-iskala. Flimkien ma’ dan, irridu nitkellmu dwar limitazzjoni oħra li tista’ tkun sorpriża jekk inkunu qed inwaqqfu l-għodda għall-ewwel darba. Biex tħaddem immaġini Android, għandna bżonn magna fiżika jew VM b'appoġġ ta 'virtwalizzazzjoni nested. Fil-gwida dwar kif, nuri kif nippermetti dan fuq VM Linux. Madankollu, jekk inti utent macOS u trid tuża Selenoid lokalment, allura dan mhux se jkun possibbli li tmexxi testijiet Android. Imma int tista' dejjem tħaddem VM Linux lokalment b''virtwalizzazzjoni neted' konfigurata u tuża Selenoid ġewwa.

Illustrazzjoni tal-istat attwali tal-infrastruttura

Fil-kuntest ta 'dan l-artikolu, se nżidu 2 għodod biex juru l-infrastruttura. Dawn huma grid tas-Selenju għal testijiet tal-web u Selenoid għal testijiet Android. Fit-tutorja ta 'GitHub, ser nuruk ukoll kif tuża Selenoid biex tmexxi testijiet tal-web. 

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili

  • Hemm għodod oħra ta 'kontejners, iżda Docker huwa l-aktar popolari. Jekk trid tipprova xi ħaġa oħra, żomm f'moħħok li l-għodod li koprejna għat-twettiq tat-testijiet tas-Selenju b'mod parallel mhux se jaħdmu barra mill-kaxxa.  
  • Kif diġà ntqal, hemm ħafna modifiki tal-grilja tas-Selenju, pereżempju, Zalenium.

4.CI/CD

Deskrizzjoni qasira tat-teknoloġija

Il-prattika ta 'integrazzjoni kontinwa hija pjuttost popolari fl-iżvilupp u hija fuq l-istess livell mas-sistemi ta' kontroll tal-verżjoni. Minkejja dan, inħoss li hemm konfużjoni fit-terminoloġija. F'dan il-paragrafu nixtieq niddeskrivi 3 modifiki ta 'din it-teknoloġija mil-lat tiegħi. Fuq l-internet issib ħafna artikli b'interpretazzjonijiet differenti, u huwa assolutament normali jekk l-opinjoni tiegħek tkun differenti. L-iktar ħaġa importanti hija li tkun fuq l-istess paġna mal-kollegi tiegħek.

Allura, hemm 3 termini: CI - Integrazzjoni Kontinwa, CD - Kunsinna Kontinwa u għal darb'oħra CD - Skjerament Kontinwu. (Hawn taħt se nuża dawn it-termini bl-Ingliż). Kull modifika żżid diversi passi addizzjonali mal-pipeline tal-iżvilupp tiegħek. Imma l-kelma kontinwu (kontinwu) hija l-aktar ħaġa importanti. F'dan il-kuntest, nifhmu xi ħaġa li sseħħ mill-bidu sat-tmiem, mingħajr interruzzjoni jew intervent manwali. Ejja nħarsu lejn CI & CD u CD f'dan il-kuntest.

  • Integrazzjoni Kontinwa dan huwa l-pass inizjali tal-evoluzzjoni. Wara li tissottometti kodiċi ġdid lis-server, nistennew li nirċievu feedback malajr li l-bidliet tagħna huma ok. Tipikament, CI jinkludi t-tħaddim ta' għodod ta' analiżi tal-kodiċi statiku u testijiet tal-API tal-unità/intern.Dan jippermettilna niksbu informazzjoni dwar il-kodiċi tagħna fi ftit sekondi/minuti.
  • Kunsinna Kontinwa huwa pass aktar avvanzat fejn inwettqu testijiet ta 'integrazzjoni/UI. Madankollu, f'dan l-istadju ma nġibux riżultati malajr daqs CI. L-ewwel, dawn it-tipi ta 'testijiet jieħdu aktar żmien biex jitlestew. It-tieni nett, qabel it-tnedija, irridu niskjeraw il-bidliet tagħna fl-ambjent tat-test/stadju. Barra minn hekk, jekk qed nitkellmu dwar l-iżvilupp tal-mowbajl, allura jidher pass addizzjonali biex toħloq bini tal-applikazzjoni tagħna.
  • Skjerament Kontinwu jassumi li aħna awtomatikament nirilaxxaw il-bidliet tagħna għall-produzzjoni jekk it-testijiet kollha ta 'aċċettazzjoni jkunu għaddew fl-istadji preċedenti. Barra minn hekk, wara l-istadju tar-rilaxx, tista 'tikkonfigura diversi stadji, bħat-tmexxija ta' testijiet tad-duħħan fuq il-produzzjoni u l-ġbir ta 'metriċi ta' interess. L-Użu Kontinwu huwa possibbli biss b'kopertura tajba minn testijiet awtomatizzati. Jekk xi interventi manwali huma meħtieġa, inkluż l-ittestjar, allura dan m'għadux Kontinwu (kontinwu). Imbagħad nistgħu ngħidu li l-pipeline tagħna jikkonforma biss mal-prattika tal-Konsenja Kontinwa.

Valur għall-infrastruttura tal-awtomazzjoni

F'din it-taqsima, għandi niċċara li meta nitkellmu dwar testijiet UI minn tarf sa tarf, dan ifisser li għandna niskjeraw il-bidliet tagħna u s-servizzi assoċjati biex jittestjaw l-ambjenti. Integrazzjoni Kontinwa - il-proċess mhuwiex applikabbli għal dan il-kompitu u rridu nieħdu ħsieb li nimplimentaw mill-inqas prattiki ta' Twassil Kontinwu. L-Iskjerament Kontinwu jagħmel sens ukoll fil-kuntest tat-testijiet tal-UI jekk se nħaddmuhom fil-produzzjoni.

U qabel ma nħarsu lejn l-illustrazzjoni tal-bidla fl-arkitettura, irrid ngħid ftit kliem dwar GitLab CI. B'differenza għal għodod CI/CD oħra, GitLab jipprovdi repożitorju remot u ħafna karatteristiċi addizzjonali oħra. Għalhekk, GitLab huwa aktar minn CI. Jinkludi ġestjoni tal-kodiċi tas-sors, ġestjoni b'aġilità, pipelines CI/CD, għodod ta 'qtugħ u ġbir ta' metriċi barra mill-kaxxa. L-arkitettura GitLab tikkonsisti minn Gitlab CI/CD u GitLab Runner. Hawnhekk hawn deskrizzjoni qasira mill-websajt uffiċjali:

Gitlab CI/CD hija applikazzjoni tal-web b'API li taħżen l-istat tagħha f'database, timmaniġġja proġetti/bini u tipprovdi interface għall-utent. GitLab Runner hija applikazzjoni li tipproċessa l-bini. Jista' jiġi skjerat separatament u jaħdem ma' GitLab CI/CD permezz ta' API. Għat-testijiet li qed isiru għandek bżonn kemm l-istanza Gitlab kif ukoll ir-Runner.

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili

5. Pjattaformi tas-sħab

Deskrizzjoni qasira tat-teknoloġija

F'din it-taqsima ser nitkellmu dwar xejra popolari msejħa 'public clouds'. Minkejja l-benefiċċji enormi li jipprovdu t-teknoloġiji tal-virtwalizzazzjoni u tal-kontejners deskritti hawn fuq, għad għandna bżonn riżorsi tal-kompjuter. Kumpaniji jixtru servers għaljin jew jikru ċentri tad-dejta, iżda f'dan il-każ huwa meħtieġ li jsiru kalkoli (xi kultant mhux realistiċi) ta 'kemm se jkollna bżonn riżorsi, jekk se nużawhom 24/7 u għal liema skopijiet. Pereżempju, il-produzzjoni teħtieġ server li jaħdem XNUMX/XNUMX, imma għandna bżonn riżorsi simili għall-ittestjar barra mis-sigħat tax-xogħol? Jiddependi wkoll mit-tip ta' ttestjar li qed isir. Eżempju jkun it-testijiet tat-tagħbija/tal-istress li qed nippjanaw li nwettqu matul il-ħinijiet mhux tax-xogħol sabiex niksbu riżultati l-għada. Iżda żgur li d-disponibbiltà tas-server XNUMX/XNUMX mhix meħtieġa għal testijiet awtomatizzati minn tarf sa tarf u speċjalment mhux għal ambjenti ta 'ttestjar manwali. Għal sitwazzjonijiet bħal dawn, ikun tajjeb li tikseb riżorsi kemm meħtieġ fuq talba, tużahom, u tieqaf tħallas meta ma jkunux aktar meħtieġa. Barra minn hekk, ikun kbir li tirċevihom istantanjament billi tagħmel ftit klikks tal-maws jew tmexxi ftit skripts. Dan huwa dak li jintużaw sħab pubbliċi. Ejja nħarsu lejn id-definizzjoni:

“Il-cloud pubbliku huwa definit bħala servizzi ta’ kompjuters offruti minn fornituri terzi fuq l-Internet pubbliku, li jagħmluhom disponibbli għal kull min irid jużahom jew jixtrihom. Jistgħu jkunu b'xejn jew mibjugħa fuq talba, li jippermettu lill-klijenti jħallsu biss għal kull użu għaċ-ċikli tas-CPU, il-ħażna, jew il-bandwidth li jikkunsmaw."

Hemm opinjoni li sħab pubbliċi jiswew ħafna flus. Iżda l-idea ewlenija tagħhom hija li jitnaqqsu l-ispejjeż tal-kumpanija. Kif issemma qabel, sħab pubbliċi jippermettulek tikseb riżorsi fuq talba u tħallas biss għall-ħin li tużahom. Ukoll, xi kultant ninsew li l-impjegati jirċievu salarji, u l-ispeċjalisti huma wkoll riżors għali. Għandu jitqies li sħab pubbliċi jagħmlu l-appoġġ tal-infrastruttura ħafna aktar faċli, li jippermetti lill-inġiniera jiffokaw fuq kompiti aktar importanti. 

Valur għall-infrastruttura tal-awtomazzjoni

Liema riżorsi speċifiċi neħtieġu għal testijiet tal-IU minn tarf sa tarf? Bażikament dawn huma magni virtwali jew raggruppamenti (se nitkellmu dwar Kubernetes fit-taqsima li jmiss) għat-tħaddim ta 'browsers u emulaturi. Iktar ma rridu nħaddmu browsers u emulaturi simultanjament, aktar CPU u memorja meħtieġa u aktar flus irridu nħallsu għaliha. Għalhekk, sħab pubbliċi fil-kuntest tal-awtomazzjoni tat-test jippermettulna nħaddmu numru kbir (100, 200, 1000...) ta 'browsers/emulaturi fuq talba, niksbu r-riżultati tat-test malajr kemm jista' jkun u nieqfu nħallsu għal tali intensiv ta 'riżorsi insanely. qawwa. 

L-aktar fornituri tas-sħab popolari huma Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). Il-gwida ta' kif tagħmel tipprovdi eżempji ta' kif tuża l-GCP, iżda b'mod ġenerali ma jimpurtax dak li tuża għall-kompiti ta' awtomazzjoni. Dawn kollha jipprovdu bejn wieħed u ieħor l-istess funzjonalità. Tipikament, biex tagħżel fornitur, il-ġestjoni tiffoka fuq l-infrastruttura kollha tal-kumpanija u r-rekwiżiti tan-negozju, li huwa lil hinn mill-ambitu ta 'dan l-artikolu. Għall-inġiniera tal-awtomazzjoni, se jkun aktar interessanti li jitqabbel l-użu tal-fornituri tal-cloud mal-użu ta 'pjattaformi tal-cloud speċifikament għal skopijiet ta' ttestjar, bħal Sauce Labs, BrowserStack, BitBar, eċċ. Mela ejja nagħmluha wkoll! Fl-opinjoni tiegħi, Sauce Labs huwa l-aktar razzett famuż għall-ittestjar tas-sħab, u huwa għalhekk li użajtu għal tqabbil. 

GCP vs Sauce Labs għal skopijiet ta' awtomazzjoni:

Ejja nimmaġinaw li għandna bżonn inmexxu 8 testijiet tal-web u 8 testijiet Android fl-istess ħin. Għal dan se nużaw GCP u nħaddmu 2 magni virtwali b'Selenoid. Fuq l-ewwel waħda se ngħollu 8 containers bil-browsers. Fuq it-tieni hemm 8 kontenituri b'emulaturi. Ejja nagħtu ħarsa lejn il-prezzijiet:  

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu
Biex inħaddmu kontenitur wieħed bil-Chrome, għandna bżonn n1-standard-1 karozza. Fil-każ ta 'Android se jkun n1-standard-4 għal emulatur wieħed. Fil-fatt, mod aktar flessibbli u orħos huwa li jiġu stabbiliti valuri speċifiċi tal-utent għal CPU/Memorja, iżda bħalissa dan mhux importanti għal tqabbil ma' Sauce Labs.

U hawn huma t-tariffi għall-użu ta' Sauce Labs:

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu
Nemmen li diġà ndunajt id-differenza, iżda xorta se nipprovdi tabella b'kalkoli għall-kompitu tagħna:

Riżorsi meħtieġa
Kull xahar
Sigħat ta 'xogħol(8 am - 8 pm)
Sigħat ta 'xogħol+ Preemptibbli

GCP għall-Web
n1-standard-1 x 8 = n1-standard-8
$194.18
23 jum * 12h * 0.38 = $104.88 
23 jum * 12h * 0.08 = $22.08

Zalza Labs għall-Web
Virtual Cloud8 testijiet paralleli
$1.559
-
-

GCP għal Android
n1-standard-4 x 8: n1-standard-16
$776.72
23 jum * 12h * 1.52 = $419.52 
23 jum * 12h * 0.32 = $88.32

Sauce Labs għal Android
Real Device Cloud 8 testijiet paralleli
$1.999
-
-

Kif tistgħu taraw, id-differenza fl-ispiża hija enormi, speċjalment jekk tmexxi testijiet biss matul perjodu ta 'xogħol ta' tnax-il siegħa. Imma tista 'tnaqqas l-ispejjeż saħansitra aktar jekk tuża magni preemptible. X'inhu?

VM preemptible hija eżempju li inti tista 'toħloq u tħaddem bi prezz ħafna aktar minn każijiet normali. Madankollu, Compute Engine jista' jtemm (jippreġudika) dawn l-istanzi jekk jeħtieġ aċċess għal dawk ir-riżorsi għal kompiti oħra. L-istanzi preemptibbli huma kapaċità żejda tal-Compute Engine, għalhekk id-disponibbiltà tagħhom tvarja skont l-użu.

Jekk l-apps tiegħek huma tolleranti għall-ħsarat u jistgħu jifilħu preempzzjonijiet ta' istanzi possibbli, allura l-istanzi preemptibbli jistgħu jnaqqsu l-ispejjeż tal-Compute Engine tiegħek b'mod sinifikanti. Pereżempju, l-impjiegi tal-ipproċessar tal-lott jistgħu jaħdmu fuq każijiet preemptibbli. Jekk xi wħud minn dawk l-istanzi jintemmu waqt l-ipproċessar, ix-xogħol jonqos iżda ma jieqafx kompletament. L-istanzi preemptibbli jlestu l-kompiti tal-ipproċessar tal-lott tiegħek mingħajr ma jpoġġu xogħol addizzjonali fuq l-istanzi eżistenti tiegħek u mingħajr ma jeħtieġu li tħallas prezz sħiħ għal każijiet normali addizzjonali.

U għadu mhux spiċċa! Fir-realtà, jien ċert li ħadd ma jagħmel testijiet għal 12-il siegħa mingħajr waqfa. U jekk iva, allura tista 'tibda u twaqqaf awtomatikament magni virtwali meta ma jkunux meħtieġa. Il-ħin ta' użu attwali jista' jitnaqqas għal 6 sigħat kuljum. Imbagħad il-ħlas fil-kuntest tal-kompitu tagħna se jonqos għal $11 fix-xahar għal 8 browsers. Dan mhux mill-isbaħ? Iżda b'magni preemptibles irridu noqogħdu attenti u ppreparati għal interruzzjonijiet u instabbiltà, għalkemm dawn is-sitwazzjonijiet jistgħu jiġu pprovduti u mmaniġġjati f'software. Huwa worth it!

Imma bl-ebda mod ma qed ngħid 'qatt tuża cloud test farms'. Huma għandhom numru ta 'vantaġġi. L-ewwelnett, din mhix biss magna virtwali, iżda soluzzjoni sħiħa ta 'awtomazzjoni tat-test b'sett ta' funzjonalità barra mill-kaxxa: aċċess mill-bogħod, zkuk, screenshots, reġistrazzjoni bil-vidjo, browsers varji u apparat mobbli fiżiku. F'ħafna sitwazzjonijiet, din tista 'tkun alternattiva chic essenzjali. Il-pjattaformi tal-ittestjar huma speċjalment utli għall-awtomazzjoni tal-IOS, meta sħab pubbliċi jistgħu joffru biss sistemi Linux/Windows. Imma se nitkellmu dwar iOS fl-artikoli li ġejjin. Nirrakkomanda li dejjem tħares lejn is-sitwazzjoni u nibda mill-kompiti: f'xi każijiet huwa orħos u aktar effiċjenti li tuża sħab pubbliċi, u f'oħrajn il-pjattaformi tat-test huma definittivament jiswew il-flus minfuqa.

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili:

6. Orkestrazzjoni

Deskrizzjoni qasira tat-teknoloġija

Għandi aħbar tajba - wasalna kważi fl-aħħar tal-artiklu! Bħalissa, l-infrastruttura ta 'awtomazzjoni tagħna tikkonsisti f'testijiet tal-web u Android, li nħaddmu permezz ta' GitLab CI b'mod parallel, bl-użu ta 'għodod ppermettiet Docker: Selenium grid u Selenoid. Barra minn hekk, nużaw magni virtwali maħluqa permezz tal-GCP biex jospitaw kontenituri bi browsers u emulaturi. Biex innaqqsu l-ispejjeż, nibdew dawn il-magni virtwali biss fuq talba u nwaqqfuhom meta l-ittestjar ma jkunx qed isir. Hemm xi ħaġa oħra li tista' ttejjeb l-infrastruttura tagħna? It-tweġiba hija iva! Iltaqa' ma' Kubernetes (K8s)!

L-ewwel, ejja nħarsu lejn kif il-kliem orkestrazzjoni, cluster, u Kubernetes huma relatati ma 'xulxin. F'livell għoli, l-orkestrazzjoni hija s-sistema li tiskjera u tamministra l-applikazzjonijiet. Għall-awtomazzjoni tat-test, applikazzjonijiet f'kontenituri bħal dawn huma grilja tas-Selenju u Selenoid. Docker u K8s jikkumplimentaw lil xulxin. L-ewwel jintuża għall-iskjerament tal-applikazzjoni, it-tieni għall-orkestrazzjoni. Min-naħa tagħhom, K8s huwa raggruppament. Il-kompitu tal-cluster huwa li tuża VMs bħala Nodes, li jippermettilek tinstalla diversi funzjonalitajiet, programmi u servizzi f'server wieħed (cluster). Jekk xi wieħed mill-Nodes jonqos, Nodes oħra se jittellgħu, li jiżgura tħaddim bla interruzzjoni tal-applikazzjoni tagħna. Barra minn hekk, K8s għandu funzjonalità importanti relatata mal-iskala, li bis-saħħa tagħha awtomatikament niksbu l-aħjar ammont ta 'riżorsi bbażati fuq it-tagħbija u nissettjaw il-limiti.

Fil-verità, l-iskjerament manwalment ta 'Kubernetes mill-bidu mhu kompitu trivjali xejn. Se nħalli link għall-famuż kif gwida "Kubernetes The Hard Way" u jekk int interessat, tista 'tipprattikaha. Iżda, fortunatament, hemm metodi u għodod alternattivi. L-eħfef mod huwa li tuża Google Kubernetes Engine (GKE) fil-GCP, li jippermettilek li tikseb cluster lest fi ftit klikks. Nirrakkomanda li tuża dan l-approċċ biex tibda titgħallem, peress li se tippermettilek tiffoka fuq it-tagħlim kif tuża l-K8s għall-kompiti tiegħek minflok titgħallem kif il-komponenti interni għandhom jiġu integrati ma 'xulxin. 

Valur għall-infrastruttura tal-awtomazzjoni

Ejja nagħtu ħarsa lejn ftit karatteristiċi sinifikanti li jipprovdi l-K8s:

  • skjerament ta' applikazzjoni: bl-użu ta' cluster b'ħafna nodi minflok VMs;
  • skalar dinamiku: inaqqas l-ispiża tar-riżorsi li jintużaw biss fuq talba;
  • awto-fejqan: irkupru awtomatiku tal-imżiewed (b'riżultat li l-kontenituri jiġu restawrati wkoll);
  • Tnedija ta' aġġornamenti u rollbacks ta' bidliet mingħajr perijodi ta' waqfien: l-aġġornament ta' għodod, browsers u emulaturi ma jinterrompix ix-xogħol tal-utenti attwali

Iżda l-K8s għadu mhux bulit tal-fidda. Biex nifhmu l-vantaġġi u l-limitazzjonijiet kollha fil-kuntest tal-għodod li qed nikkunsidraw (grilja tas-Selenju, Selenoid), se niddiskutu fil-qosor l-istruttura tal-K8s. Cluster fih żewġ tipi ta’ Nodi: Nodi Master u Nodi tal-Ħaddiema. Master Nodes huma responsabbli għall-ġestjoni, l-iskjerament u d-deċiżjonijiet tal-iskedar. In-nodi tal-ħaddiema huma fejn jitmexxew l-applikazzjonijiet. In-nodi fihom ukoll ambjent ta' runtime ta' kontenitur. Fil-każ tagħna, dan huwa Docker, li huwa responsabbli għall-operazzjonijiet relatati mal-kontejners. Iżda hemm ukoll soluzzjonijiet alternattivi, pereżempju containerd. Huwa importanti li wieħed jifhem li l-iskala jew l-awto-fejqan ma japplikawx direttament għall-kontenituri. Dan huwa implimentat billi jiżdied/jitnaqqas in-numru ta 'miżwed, li min-naħa tagħhom ikun fihom kontenituri (ġeneralment kontenitur wieħed għal kull pod, iżda skond il-kompitu jista' jkun hemm aktar). Il-ġerarkija ta 'livell għoli tikkonsisti f'nodi tal-ħaddiema, li ġewwa fihom hemm imżiewed, li fihom jittellgħu l-kontenituri.

Il-karatteristika tal-iskala hija essenzjali u tista 'tiġi applikata kemm għal nodi fi ħdan cluster node-pool kif ukoll għall-imżiewed fi ħdan node. Hemm 2 tipi ta 'skala li japplikaw kemm għan-nodi kif ukoll għall-imżiewed. L-ewwel tip huwa orizzontali - l-iskalar iseħħ billi jiżdied in-numru ta 'nodi/miżwed. Dan it-tip huwa aktar preferibbli. It-tieni tip huwa, għaldaqstant, vertikali. L-iskala titwettaq billi jiżdied id-daqs ta 'nodi/miżwed, u mhux in-numru tagħhom.

Issa ejja nħarsu lejn l-għodod tagħna fil-kuntest tat-termini ta 'hawn fuq.

Grilja tas-selenju

Kif issemma qabel, il-grilja tas-Selenju hija għodda popolari ħafna, u mhix sorpriża li ġiet f'kontenituri. Għalhekk, mhix sorpriża li l-grilja tas-Selenju tista 'tiġi skjerata fil-K8s. Eżempju ta' kif tagħmel dan jista' jinstab fir-repożitorju uffiċjali tal-K8s. Bħas-soltu, nehmeż links fl-aħħar tat-taqsima. Barra minn hekk, il-gwida dwar kif tagħmel dan f'Terraform. Hemm ukoll struzzjonijiet dwar kif tiskala n-numru ta 'miżwed li fihom kontenituri tal-browser. Iżda l-funzjoni tal-iskala awtomatika fil-kuntest tal-K8s għadha mhix kompitu kompletament ovvju. Meta bdejt nistudja, ma sibt ebda gwida prattika jew rakkomandazzjonijiet. Wara diversi studji u esperimenti bl-appoġġ tat-tim DevOps, għażilna l-approċċ li ngħollu kontenituri bil-browsers meħtieġa ġewwa pod wieħed, li jinsab ġewwa nodu wieħed tal-ħaddiema. Dan il-metodu jippermettilna li napplikaw l-istrateġija ta 'skala orizzontali ta' nodi billi nżidu n-numru tagħhom. Nittama li dan jinbidel fil-futur u se naraw aktar u aktar deskrizzjonijiet ta 'approċċi aħjar u soluzzjonijiet lesti, speċjalment wara r-rilaxx ta' Selenium grid 4 b'arkitettura interna mibdula.

Selenojd:

L-iskjerament tas-selenojd fil-K8s bħalissa huwa l-akbar diżappunt. Mhumiex kompatibbli. Fit-teorija, nistgħu ngħollu kontenitur Selenoid ġewwa pod, iżda meta Selenoid jibda jniedi kontenituri bil-browsers, xorta se jkunu ġewwa l-istess pod. Dan jagħmel l-iskala impossibbli u, bħala riżultat, ix-xogħol tas-Selenoid ġewwa cluster mhux se jkun differenti minn xogħol ġewwa magna virtwali. Tmiem tal-istorja.

Moon:

Billi jafu dan il-konġestjoni meta jaħdmu ma 'Selenoid, l-iżviluppaturi ħarġu għodda aktar qawwija msejħa Moon. Din l-għodda kienet oriġinarjament iddisinjata biex taħdem ma' Kubernetes u, bħala riżultat, il-karatteristika ta 'autoscaling tista' u għandha tintuża. Barra minn hekk, ngħid li bħalissa huwa l-uniku għodda fid-dinja tas-Selenju, li għandha appoġġ indiġenu tal-cluster K8s barra mill-kaxxa (m'għadux disponibbli, ara l-għodda li jmiss ). Il-karatteristiċi ewlenin tal-Qamar li jipprovdu dan l-appoġġ huma: 

Kompletament mingħajr stat. Selenoid jaħżen fil-memorja informazzjoni dwar is-sessjonijiet tal-browser li qed jaħdmu bħalissa. Jekk għal xi raġuni l-proċess tiegħu jiġġarraf — allura s-sessjonijiet kollha tat-tħaddim jintilfu. Il-qamar għall-kuntrarju m'għandux stat intern u jista 'jiġi replikat madwar iċ-ċentri tad-dejta. Is-sessjonijiet tal-browser jibqgħu ħajjin anki jekk replika waħda jew aktar jinżlu.

Allura, Moon huwa soluzzjoni kbira, iżda hemm problema waħda: mhix b'xejn. Il-prezz jiddependi min-numru ta 'sessjonijiet. Tista 'tmexxi biss 0-4 sessjonijiet b'xejn, li mhux partikolarment utli. Iżda, mill-ħames sessjoni, ikollok tħallas $5 għal kull wieħed. Is-sitwazzjoni tista 'tvarja minn kumpanija għal oħra, iżda fil-każ tagħna, l-użu ta' Moon huwa inutli. Kif deskritt hawn fuq, nistgħu nħaddmu VMs b'Selenium Grid fuq talba jew inżidu n-numru ta 'Nodes fil-cluster. Għal madwar pipeline wieħed, inniedu 500 browser u nieqfu r-riżorsi kollha wara li jitlestew it-testijiet. Jekk użajna Moon, ikollna nħallsu 500 x 5 addizzjonali = $2500 fix-xahar, irrispettivament minn kemm inwettqu t-testijiet. Għal darb'oħra, jien ma ngħidx tużax Moon. Għall-kompiti tiegħek, din tista 'tkun soluzzjoni indispensabbli, pereżempju, jekk għandek ħafna proġetti/timijiet fl-organizzazzjoni tiegħek u għandek bżonn cluster komuni enormi għal kulħadd. Bħal dejjem, inħalli link fl-aħħar u nirrakkomanda li tagħmel il-kalkoli kollha meħtieġa fil-kuntest tal-kompitu tiegħek.

Callisto: (Attenzjoni! Dan mhuwiex fl-artiklu oriġinali u jinsab biss fit-traduzzjoni Russa)

Kif għedt, Selenium huwa għodda popolari ħafna, u l-qasam tal-IT qed jiżviluppa malajr ħafna. Waqt li kont qed naħdem fuq it-traduzzjoni, dehret għodda ġdida promettenti imsejħa Callisto fuq il-web (hello Cypress u qattiela oħra tas-Selenju). Jaħdem b'mod nattiv ma 'K8s u jippermettilek li tħaddem kontenituri Selenoid f'imżiewed, imqassma madwar Nodes. Kollox jaħdem dritt barra mill-kaxxa, inkluż autoscaling. Fantastiku, iżda jeħtieġ li jiġi ttestjat. Diġà rnexxieli niskjera din l-għodda u nmexxi diversi esperimenti. Imma għadu kmieni wisq biex nislet konklużjonijiet, wara li rċievi riżultati fuq distanza twila, forsi nagħmel reviżjoni f'artikli futuri. Għalissa qed inħalli biss links għal riċerka indipendenti.  

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora

Għodod simili

7. Infrastruttura bħala Kodiċi (IaC)

Deskrizzjoni qasira tat-teknoloġija

U issa naslu għall-aħħar taqsima. Tipikament, din it-teknoloġija u l-kompiti relatati mhumiex ir-responsabbiltà tal-inġiniera tal-awtomazzjoni. U hemm raġunijiet għal dan. L-ewwelnett, f'ħafna organizzazzjonijiet, kwistjonijiet ta 'infrastruttura huma taħt il-kontroll tad-dipartiment DevOps u t-timijiet ta' żvilupp ma tantx jimpurtahom minn dak li jagħmel il-pipeline jaħdem u kif dak kollu konness miegħu jeħtieġ li jiġi appoġġjat. It-tieni nett, ejja nkunu onesti, il-prattika tal-Infrastructure as Code (IaC) għadha mhix adottata f'ħafna kumpaniji. Iżda żgur li saret xejra popolari u huwa importanti li tipprova tkun involut fil-proċessi, l-approċċi u l-għodod assoċjati magħha. Jew għall-inqas ibqgħu aġġornati.

Nibdew bil-motivazzjoni għall-użu ta 'dan l-approċċ. Diġà ddiskutejna li biex inħaddmu testijiet f'GitlabCI, ser ikollna bżonn mill-inqas ir-riżorsi biex inħaddmu Gitlab Runner. U biex imexxu kontenituri b'browsers/emulaturi, għandna bżonn nirriżervaw VM jew cluster. Minbarra r-riżorsi tal-ittestjar, għandna bżonn ta 'ammont sinifikanti ta' kapaċità biex nappoġġaw l-iżvilupp, il-waqfien, l-ambjenti ta 'produzzjoni, li jinkludi wkoll databases, skedi awtomatiċi, konfigurazzjonijiet tan-netwerk, load balancers, drittijiet tal-utent, eċċ. Il-kwistjoni ewlenija hija l-isforz meħtieġ biex jiġi appoġġjat dan kollu. Hemm diversi modi kif nistgħu nagħmlu bidliet u nwasslu aġġornamenti. Pereżempju, fil-kuntest tal-GCP, nistgħu nużaw il-console UI fil-browser u nwettqu l-azzjonijiet kollha billi nikklikkjaw il-buttuni. Alternattiva tkun li tuża sejħiet API biex jinteraġixxi ma 'entitajiet cloud, jew tuża l-utilità tal-linja tal-kmand gcloud biex twettaq il-manipulazzjonijiet mixtieqa. Iżda b'numru verament kbir ta 'entitajiet differenti u elementi ta' infrastruttura, isir diffiċli jew saħansitra impossibbli li jitwettqu l-operazzjonijiet kollha manwalment. Barra minn hekk, dawn l-azzjonijiet manwali kollha huma inkontrollabbli. Aħna ma nistgħux nissottomettuhom għal reviżjoni qabel l-eżekuzzjoni, nużaw sistema ta 'kontroll tal-verżjoni, u nerġgħu lura malajr il-bidliet li wasslu għall-inċident. Biex isolvu problemi bħal dawn, l-inġiniera ħolqu u joħolqu skripts bash/shell awtomatiċi, li mhumiex ħafna aħjar minn metodi preċedenti, peress li mhumiex daqshekk faċli biex jinqraw, jifhmu, iżommu u jimmodifikaw malajr fi stil proċedurali.

F'dan l-artikolu u gwida dwar kif, nuża 2 għodod relatati mal-prattika IaC. Dawn huma Terraform u Ansible. Xi nies jemmnu li ma jagħmilx sens li jużawhom fl-istess ħin, peress li l-funzjonalità tagħhom hija simili u huma interkambjabbli. Iżda l-fatt hu li inizjalment jingħataw kompiti kompletament differenti. U l-fatt li dawn l-għodod għandhom jikkumplimentaw lil xulxin ġie kkonfermat fi preżentazzjoni konġunta mill-iżviluppaturi li jirrappreżentaw HashiCorp u RedHat. Id-differenza kunċettwali hija li Terraform hija għodda ta 'forniment għall-ġestjoni tas-servers infushom. Filwaqt li Ansible hija għodda ta 'ġestjoni tal-konfigurazzjoni li l-kompitu tagħha huwa li tinstalla, tikkonfigura u timmaniġġja s-softwer fuq dawn is-servers.

Fattur ieħor ewlieni li jiddistingwi dawn l-għodod huwa l-istil tal-kodifikazzjoni. B'differenza minn bash u Ansible, Terraform juża stil dikjarattiv ibbażat fuq deskrizzjoni tal-istat finali mixtieq li għandu jinkiseb bħala riżultat tal-eżekuzzjoni. Pereżempju, jekk se noħolqu 10 VMs u napplikaw il-bidliet permezz ta' Terraform, allura se nġibu 10 VMs. Jekk nerġgħu nħaddmu l-iskrittura, ma jiġri xejn peress li diġà għandna 10 VMs, u Terraform jaf dwar dan għaliex jaħżen l-istat attwali tal-infrastruttura f'fajl tal-istat. Iżda Ansible juża approċċ proċedurali u, jekk titlobha biex toħloq 10 VMs, allura fl-ewwel tnedija se jkollna 10 VMs, simili għal Terraform. Iżda wara li nibdew mill-ġdid diġà jkollna 20 VM. Din hija d-differenza importanti. Fl-istil proċedurali, aħna ma naħżnux l-istat attwali u sempliċement niddeskrivu sekwenza ta 'passi li għandhom jitwettqu. Naturalment, nistgħu nittrattaw diversi sitwazzjonijiet, inżidu diversi kontrolli għall-eżistenza tar-riżorsi u l-istat attwali, iżda m'hemm l-ebda punt li naħlu l-ħin tagħna u nagħmlu sforz biex nikkontrollaw din il-loġika. Barra minn hekk, dan iżid ir-riskju li jsiru żbalji. 

Fil-qosor ta 'dan kollu ta' hawn fuq, nistgħu nikkonkludu li Terraform u notazzjoni dikjarattiva huma għodda aktar xierqa għall-forniment ta 'servers. Iżda huwa aħjar li tiddelega x-xogħol tal-ġestjoni tal-konfigurazzjoni lil Ansible. B'dan il-mod, ejja nħarsu lejn każijiet ta 'użu fil-kuntest tal-awtomazzjoni.

Valur għall-infrastruttura tal-awtomazzjoni

L-unika ħaġa importanti li wieħed jifhem hawnhekk hija li l-infrastruttura tal-awtomazzjoni tat-test għandha titqies bħala parti mill-infrastruttura kollha tal-kumpanija. Dan ifisser li l-prattiki kollha tal-IaC għandhom jiġu applikati globalment għar-riżorsi tal-organizzazzjoni kollha. Min hu responsabbli għal dan jiddependi fuq il-proċessi tiegħek. It-tim DevOps għandu aktar esperjenza f'dawn il-kwistjonijiet, jaraw l-istampa kollha ta 'dak li qed jiġri. Madankollu, l-inġiniera tal-QA huma aktar involuti fil-proċess tal-awtomazzjoni tal-bini u l-istruttura tal-pipeline, li jippermettilhom jaraw aħjar il-bidliet u l-opportunitajiet kollha meħtieġa għal titjib. L-aħjar għażla hija li naħdmu flimkien, jiskambjaw għarfien u ideat biex jinkiseb ir-riżultat mistenni. 

Hawn huma ftit eżempji ta 'użu ta' Terraform u Ansible fil-kuntest tal-awtomazzjoni tat-test u l-għodod li ddiskutejna qabel:

1. Iddeskrivi l-karatteristiċi u l-parametri meħtieġa ta 'VMs u clusters bl-użu ta' Terraform.

2. Bl-użu ta 'Ansible, installa l-għodda meħtieġa għall-ittestjar: docker, Selenoid, Selenium Grid u niżżel il-verżjonijiet meħtieġa ta' browsers/emulators.

3. Billi tuża Terraform, iddeskrivi l-karatteristiċi tal-VM li fiha se jitnieda GitLab Runner.

4. Installa GitLab Runner u l-għodod ta' akkumpanjament meħtieġa billi tuża Ansible, issettja l-issettjar u l-konfigurazzjonijiet.

Illustrazzjoni tal-istat attwali tal-infrastruttura

L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Links biex tesplora:

Għodod simili

Ejja niġbruha fil-qosor!

Pass
teknoloġija
għodod
Valur għall-infrastruttura tal-awtomazzjoni

1
Tmexxija lokali
Node.js, Selenju, Appium

  • L-aktar għodda popolari għall-web u l-mowbajl
  • Jappoġġja ħafna lingwi u pjattaformi (inkluż Node.js)

2
Sistemi ta' kontroll tal-verżjoni 
go

  • Benefiċċji simili mal-kodiċi ta 'żvilupp

3
Konteniturizzazzjoni
Docker, grilja tas-Selenju, Selenoid (Web, Android)

  • Tmexxija ta' testijiet b'mod parallel
  • Ambjenti iżolati
  • Titjib tal-verżjoni sempliċi u flessibbli
  • Twaqqaf b'mod dinamiku riżorsi mhux użati
  • Faċli biex titwaqqaf

4
CI/CD
Gitlab CI

  • Tittestja parti mill-pipeline
  • Feedback malajr
  • Viżibilità għall-kumpanija/tim kollu

5
Pjattaformi tas-sħab
Google Cloud Platform

  • Riżorsi fuq talba (aħna nħallsu biss meta meħtieġ)
  • Faċli biex timmaniġġja u taġġorna
  • Viżibilità u kontroll tar-riżorsi kollha

6
Orkestrazzjoni
Kubernetes
Fil-kuntest ta' kontenituri b'browsers/emulaturi ġewwa l-imżiewed:

  • Skalar/skalar awtomatiku
  • Awto-fejqan
  • Aġġornamenti u rollbacks mingħajr interruzzjoni

7
Infrastruttura bħala kodiċi (IaC)
Terraform, Ansible

  • Benefiċċji simili mal-infrastruttura tal-iżvilupp
  • Il-benefiċċji kollha tal-verżjoni tal-kodiċi
  • Faċli biex tagħmel bidliet u żżomm
  • Kompletament awtomatizzat

Dijagrammi tal-mapep tal-moħħ: evoluzzjoni tal-infrastruttura

pass 1: Lokali
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass2: VCS
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass 3: Containerization 
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass4: CI/CD 
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass 5: Pjattaformi Cloud
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass6:Orkestrazzjoni
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

pass 7: IaC
L-għodod DevOps mhumiex biss għal DevOps. Il-proċess tal-bini ta 'infrastruttura ta' awtomazzjoni tat-test mill-bidu

Xi jmiss?

Għalhekk, dan huwa t-tmiem tal-artiklu. Iżda bħala konklużjoni, nixtieq nistabbilixxi xi ftehimiet miegħek.

Min-naħa tiegħek
Kif intqal fil-bidu, nixtieq li l-artiklu jkun ta’ użu prattiku u jgħinek tapplika l-għarfien miksub f’xogħol reali. Inżid mill-ġdid link għal gwida prattika.

Imma anki wara dan, tieqafx, tipprattika, tistudja links u kotba rilevanti, issir taf kif taħdem fil-kumpanija tiegħek, issib postijiet li jistgħu jittejbu u ħu sehem fihom. Ix-xorti t-tajba!

Min-naħa tiegħi

Mit-titlu tista' tara li din kienet biss l-ewwel parti. Minkejja l-fatt li rriżulta li kien pjuttost kbir, suġġetti importanti għadhom mhumiex koperti hawn. Fit-tieni parti, qed nippjana li nħares lejn l-infrastruttura tal-awtomazzjoni fil-kuntest tal-IOS. Minħabba r-restrizzjonijiet ta 'Apple fuq it-tħaddim ta' simulaturi tal-iOS biss fuq sistemi macOS, il-firxa tagħna ta 'soluzzjonijiet hija ristretta. Pereżempju, ma nistgħux nużaw Docker biex imexxu s-simulatur jew sħab pubbliċi biex imexxu magni virtwali. Iżda dan ma jfissirx li m'hemmx alternattivi oħra. Se nipprova nżommok aġġornat b'soluzzjonijiet avvanzati u għodod moderni!

Ukoll, ma semmejtx suġġetti pjuttost kbar relatati mal-monitoraġġ. Fil-Parti 3, ser inħares lejn l-aktar għodod popolari għall-monitoraġġ tal-infrastruttura u liema data u metriċi nikkunsidra.

U finalment. Fil-futur, qed nippjana li nirrilaxxa kors bil-vidjo dwar il-bini ta 'infrastruttura tat-test u għodod popolari. Bħalissa, hemm pjuttost ftit korsijiet u lekċers dwar DevOps fuq l-Internet, iżda l-materjali kollha huma ppreżentati fil-kuntest tal-iżvilupp, mhux l-awtomazzjoni tat-test. Dwar din il-kwistjoni, għandi bżonn verament feedback dwar jekk kors bħal dan hux se jkun interessanti u siewi għall-komunità tat-testers u l-inġiniera tal-awtomazzjoni. Grazzi bil-quddiem!

Sors: www.habr.com

Żid kumment