Testimi i ngarkesës si shërbim CI për zhvilluesit

Testimi i ngarkesës si shërbim CI për zhvilluesit

NjĂ« nga problemet me tĂ« cilat shpesh pĂ«rballen ofruesit e softuerĂ«ve me shumĂ« produkte Ă«shtĂ« dyfishimi i kompetencave tĂ« inxhinierĂ«ve — zhvilluesve, testuesve dhe administratorĂ«ve tĂ« infrastrukturĂ«s — pothuajse nĂ« çdo ekip. Kjo vlen edhe pĂ«r inxhinierĂ«t e shtrenjtĂ« — specialistĂ«t nĂ« fushĂ«n e testimit tĂ« ngarkesĂ«s.

Në vend që të merren me detyrat e tyre të drejtpërdrejta dhe të përdorin eksperiencën e tyre unike për të ndërtuar procesin e testimit të ngarkesës, për të zgjedhur metodologjinë, vlerat optimale të metrikave dhe për të shkruar teste të automatizuara në përputhje me profilin e ngarkesës, inxhinierët shpesh duhet të krijojnë nga e para infrastrukturën testuese, të konfiguroni mjetet e ngarkesës, t'i integrojnë ato në sistemet CI, të vendosin monitorimin dhe publikimin e raportimeve.

Zgjidhjet për disa probleme organizative në testim, që ne i zbatojmë në Positive Technologies, mund t'i gjeni në një artikull tjetër. Në këtë artikull do të flas për mundësinë e integrimit të testeve të ngarkesës në konvejerin e përgjithshëm CI duke përdorur konceptin e "testimit të ngarkesës si shërbim". Do të mësoni se cilat figura docker të burimeve të ngarkesës mund të përdoren në konvejerin CI; si të lidhen burimet e ngarkesës në projektin tuaj CI me një shabllon ndërtimi; si duket një pipeline demo për të ekzekutuar testet e ngarkesës dhe për të publikuar rezultatet. Artikulli mund të jetë i dobishëm për inxhinierët e testimit të softuerit dhe inxhinierët automatizues në CI, që po mendojnë për arkitekturën e sistemit të tyre të ngarkesës.

Thelbi i konceptit

Koncepti i testimit të ngarkesës si shërbim supozon mundësinë e integrimit të mjeteve të ngarkesës Apache JMeter, Yandex.Tank dhe kornizave tona të brendshme në çdo sistem të vazhdueshëm integrimi. Shembulli demon do të jetë për GitLab CI, por parimet e paraqitura janë të përgjithshme për të gjithë sistemet CI.

Testimi i ngarkesĂ«s si shĂ«rbim Ă«shtĂ« njĂ« shĂ«rbim qendrorizuar pĂ«r zhvillimin e testeve tĂ« ngarkesĂ«s. Testet e ngarkesĂ«s ekzekutohen nĂ« grupe tĂ« veçanta tĂ« agjentĂ«ve, publikimi i rezultateve ndodh automatikisht nĂ« GitLab Pages, Influx DB dhe Grafana ose nĂ« sistemet e raportimit tĂ« testit (TestRail, ReportPortal, etj.). Automatizimi dhe shkallĂ«zimi realizohen maksimalisht thjesht — pĂ«rmes shtimit dhe parametrizimit nĂ« projektin GitLab CI tĂ« njĂ« shablloni tĂ« zakonshĂ«m gitlab-ci.yml.

Avantazhi i qasjes qĂ«ndron nĂ« faktin se e gjithĂ« infrastruktura CI, agjentĂ«t e ngarkesĂ«s, imazhet Docker tĂ« burimeve tĂ« ngarkesĂ«s, pipeline-t e testimit dhe publikimi i raporteve — mbahen nga ekipi i centralizuar i automatizimit (in XhinierĂ«t DevOps), ndĂ«rsa inxhinierĂ«t e testimit tĂ« ngarkesĂ«s mund tĂ« pĂ«rqendrohen nĂ« zhvillimin e testeve dhe analizimin e rezultateve tĂ« tyre, pa u shqetĂ«suar pĂ«r çështjet infrastrukturore.

Për thjeshtësinë e përshkrimit, le të supozojmë se aplikacioni ose serveri i testuar tashmë është vendosur dhe konfigurimi i tij është bërë paraprakisht (për të mund të përdoren skenarë të automatizuar në Python, SaltStack, Ansible etj.). Kështu, e gjithë koncepti i testimit të ngarkesës si një shërbim përfshin tre faza: përgatitja, testimi, publikimi i raporteve. Më shumë në diagram (të gjitha imazhet janë të klikueshme):

Testimi i ngarkesës si shërbim CI për zhvilluesit

Koncepte dhe definita kryesore në testimin e ngarkesës

Kur bëjmë prova ngarkesash, ne mundohemi të respektojmë standardet dhe metodologjinë ISTQB, përdorim terminologjinë përkatëse dhe metrikat e rekomanduara. Ja një listë e shkurtër e koncepteve dhe definita kryesore në testimin e ngarkesës.

Agjenti i ngarkesĂ«s (load agent) — njĂ« makinĂ« virtuale, mbi tĂ« cilĂ«n do tĂ« ekzekutohet aplikacioni — burimi i ngarkesĂ«s (Apache JMeter, Yandex.Tank ose moduli i ngarkesĂ«s i shkruar nga vetĂ«).

QĂ«llimi i testimit (target) — serveri ose aplikacioni, i instaluar nĂ« server, i cili do tĂ« nĂ«nshtruar ngarkesĂ«s.

Skenari i testit (test case) — njĂ« grup hapash tĂ« parametrizuar: veprime tĂ« pĂ«rdoruesve dhe reagimet e pritura ndaj kĂ«tyre veprimeve, me kĂ«rkesat dhe pĂ«rgjigjet e ngurtĂ«suara nĂ« rrjet, nĂ« varĂ«si tĂ« parametrave tĂ« caktuar.

Profili ose plani i ngarkesĂ«s (profile) — nĂ« metodologjinĂ« ISTQB (p. 4.2.4, fq. 43) profili i ngarkesĂ«s pĂ«rcakton metrikat kritike pĂ«r testin specifik dhe variantet e ndryshimit tĂ« parametrave tĂ« ngarkesĂ«s gjatĂ« testit. Shembujt e profileve mund t'i shihni nĂ« figurĂ«.

Testimi i ngarkesës si shërbim CI për zhvilluesit

Testi (test) — njĂ« skenar me njĂ« grup parametresh tĂ« caktuar mĂ« parĂ«.

Plani i testit (test-plan) — njĂ« grup testesh dhe njĂ« profil ngarkese.

Testimi (testrun) — njĂ« iteracion i njĂ« testi tĂ« vetĂ«m me njĂ« skenar tĂ« ngarkesĂ«s tĂ« plotĂ« dhe raporte tĂ« marrĂ«.

KĂ«rkesa nĂ« rrjet (request) — kĂ«rkesa HTTP, e dĂ«rguar nga agjenti nĂ« qĂ«llim.

PĂ«rgjigja nĂ« rrjet (response) — HTTP pĂ«rgjigja e dĂ«rguar nga objekti te agjenti.
Kodi i pĂ«rgjigjes HTTP (HTTP responses status) — kodi standard i pĂ«rgjigjes nga serveri i aplikacioneve.
Transaksioni (transaction) — cikli i plotĂ« 'kĂ«rkesĂ« — pĂ«rgjigje'. Transaksioni fillon me dĂ«rgimin e kĂ«rkesĂ«s (request) dhe pĂ«rfundon me marrjen e pĂ«rgjigjes (response).

Statusi i transaksionit (transactions status) — nĂ«se cikli 'kĂ«rkesĂ« – pĂ«rgjigje' Ă«shtĂ« pĂ«rfunduar me sukses. NĂ«se kishte ndonjĂ« gabim nĂ« kĂ«tĂ« cikĂ«l, i gjithĂ« transaksioni konsiderohet si i dĂ«shtuar.

Koha e pĂ«rgjigjes (latency) — koha nga pĂ«rfundimi i dĂ«rgimit tĂ« kĂ«rkesĂ«s (request) deri nĂ« fillimin e marrjes sĂ« pĂ«rgjigjes (response).

Metrikat e ngarkesĂ«s (metrics) — karakteristikat e shĂ«rbimit tĂ« ngarkuar dhe agjentit tĂ« ngarkesĂ«s tĂ« pĂ«rcaktuara gjatĂ« testimit tĂ« ngarkesĂ«s.

Metrikat kryesore për matjen e parametrave të ngarkesës

Disa nga metrikat më të zakonshme dhe të rekomanduara në metodologji ISTQB (fq. 36, 52) metrike janë listuar në tabelën më poshtë. Metrikat e ngjashme për agjentin dhe objektin janë treguar në një rresht.

Metrikat për agjentin e ngarkesës
Metrikat e sistemit ose aplikacionit të targetuar, të testuara nën ngarkesë

Numri  vCPU dhe memories RAM,
Disk — karakteristikat 'harduer' tĂ« agjentit tĂ« ngarkesĂ«s
CPU, PĂ«rkujtimi, PĂ«rdorimi i Diskut — dinamika e ngarkesĂ«s sĂ« procesorit, memories dhe diskut
gjatë testimit. Zakonisht matet në përqindje të
vlerave maksimale të disponueshme

Kapaciteti i rrjetit (nĂ« agjentin e ngarkesĂ«s) — kapaciteti i
ndërfaqes rrjetësore në serverin
ku është instaluar agjenti i ngarkesës.
Zakonisht matet në bytes për sekondë (bps)
Kapaciteti i rrjetit(nĂ« objekt) — kapaciteti i ndĂ«rfaqes rrjetĂ«sore
në serverin e targetuar. Zakonisht matet në bytes për sekondë (bps)

PĂ«rdoruesit virtualë— numri i pĂ«rdoruesve virtualĂ«,
të cilët realizojnë skenarët e ngarkesës dhe
imitohen veprimet reale të përdoruesve
Statusi i pĂ«rdoruesve virtualĂ«, Kaloi/DĂ«shtoi/Total — numri i statusĂ«ve tĂ« suksesshĂ«m dhe
të dështuar të punës së përdoruesve virtualë
për skenarët e ngarkesës, si dhe numri i tyre total.

Zakonisht pritet që të gjithë përdoruesit të jenë në gjendje të kryejnë
të gjitha detyrat e tyre, siç janë specifikuar në profilin e ngarkesës.
Çdo gabim do tĂ« thotĂ« se asnjĂ« pĂ«rdorues real nuk do tĂ« mund
të zgjidhë detyrën e tij kur punon me sistemin

KĂ«rkesat pĂ«r sekondĂ« (minutĂ«)— numri i kĂ«rkesave rrjetĂ«sore nĂ« sekondĂ« (ose minutĂ«).

Një karakteristikë e rëndësishme e agjentit të ngarkesës: sa mund të gjenerojë kërkesa.
Kjo është, në të vërtetë, një imitim i interaksionit me aplikacionin nga përdorues virtualë.
Përgjigjet për sekondë (minutë)
— numri i pĂ«rgjigjeve rrjetore nĂ« sekondĂ« (ose nĂ« minutĂ«).

Një karakteristikë e rëndësishme e shërbimit të synuar: sa është arritur
të gjenerohen dhe dërgohen përgjigje ndaj kërkesave nga
agjenti i ngarkesës.

Statusi i pĂ«rgjigjeve HTTP— numri i kodĂ«ve tĂ« ndryshĂ«m tĂ« pĂ«rgjigjes
nga serveri i aplikacionit, të marrë nga agjenti i ngarkesës.
Për shembull, 200 OK do të thotë një kërkesë të suksesshme,
ndërsa 404 nënkupton se burimi nuk u gjet.

Latenca (koha e pĂ«rgjigjes) — koha nga pĂ«rfundimi
i dërgimit të kërkesës (request) deri në fillimin e pranimit të përgjigjes (response).
Në përgjithësi matet në milisekonda (ms).

Koha e pĂ«rgjigjes sĂ« transaksionit— koha e njĂ« transaksioni tĂ« plotĂ«,
pĂ«rfundimi i ciklit "kĂ«rkesĂ« — pĂ«rgjigje".
Kjo është koha nga fillimi i dërgimit të kërkesës (request)
deri në përfundimin e pranimit të përgjigjes (response).

Koha e transaksionit mund të matet në sekonda (ose minuta)
në disa mënyra: llogaritet minimalja,
maksimalja, mesatarja dhe, për shembull, percentili 90.
Shifrat minimale dhe maksimale përfaqësojnë skajet
e performancës së sistemit.
Percentili i nëntëdhjetë përdoret më shpesh,
sepse tregon shumicën e përdoruesve,
që punojnë komfortshëm në pragun e performancës së sistemit.

Transaksionet pĂ«r sekondĂ« (minutĂ«) — numri i transaksioneve tĂ« plota
në sekondë (minutë),
domethënë sa kërkesa aplikacioni mundi të pranojë dhe
të përpunojë dhe të japë përgjigje.
Kjo është, në fakt, kapaciteti i sistemit.

Statusi i transaksioneve , Kaloi / DĂ«shtoi / Totali — numri
i transaksioneve të suksesshme, të dështuar dhe të përgjithshme.

Për përdoruesit real, një transaksion i dështuar
do të thotë realisht
pamundësia për të punuar me sistemin nën ngarkesë.

Skema themelore e testimit të ngarkesës

Skema themelore e testimit tĂ« ngarkesĂ«s Ă«shtĂ« shumĂ« e thjeshtĂ« dhe pĂ«rbĂ«het nga tre etapa kryesore, pĂ«r tĂ« cilat kam pĂ«rmendur tashmĂ«: PĂ«rgatit — Test — Raport, domethĂ«nĂ« pĂ«rgatitja e qĂ«llimeve tĂ« testimit dhe caktimi i parametrave pĂ«r burimet e ngarkesĂ«s, pastaj kryerja e testeve tĂ« ngarkesĂ«s dhe, nĂ« fund, formimi dhe publikimi i raportit tĂ« testimit.

Testimi i ngarkesës si shërbim CI për zhvilluesit

Shënime rreth skemës:

  • QA.Tester — ekspert nĂ« testimin e ngarkesĂ«s,
  • Target — aplikacioni i synuar, pĂ«r tĂ« cilin duhet tĂ« kuptohet sjellja e tij nĂ«n ngarkesĂ«.

Klassifikatori i entiteteve, etapave dhe hapave në skemë

Etapat dhe hapat
ÇfarĂ« po ndodh
ÇfarĂ« ka nĂ« hyrje
ÇfarĂ« ka nĂ« dalje

Prepare: faza e përgatitjes për testimin

LoadParameters
Caktimi dhe inicializimi
nga përdoruesi
parametrat e ngarkesës,
zgjedhja e metrikave dhe
përgatitja e planit të testit
(profili i ngarkesës)
Parametrat e personalizuar për
inicializimin e agentit të ngarkesës
Plani i testit
Qëllimi i testimit

VM
Zhvillimi në cloud
të makinës virtuale me
karakteristikat e kërkuara
Parametrat e VM për agentin e ngarkesës
Skenarët e automatizimit për
krijimin e VM
VM e konfiguruar në
cloud

Env
Konfigurimi i OS dhe përgatitja
e ambientit për
punën e agentit të ngarkesës
Parametrat e ambientit për
agjentin e ngarkesës
Skenarët e automatizimit për
konfigurimet e ambientit
Ambient i përgatitur:
OS, shërbimet dhe aplikacionet,
të nevojshme për funksionimin
agjentin e ngarkesës

LoadAgents
Instalimi, konfigurimi dhe parametrizimi
i agentit të ngarkesës.
Ose shkarkimi i imazhit docker me
burimin e ngarkesës të parakonfiguruar
Imazhi docker i burimit të ngarkesës
(YT, JM ose një framework të shkruar vetë)
Parametrat e konfigurimit
agjentin e ngarkesës
Agjenti i ngarkesës i konfiguruar dhe i gatshëm
për punë

Test: faza e ekzekutimit të testeve të ngarkesës. Burimet janë agjentët e ngarkesës, të zhvilluar në grupe të dedikuara të agjentëve për GitLab CI

Ngarko
Nisja e agjentit të ngarkesës
me planin e testit të përzgjedhur
dhe parametrat e ngarkesës
Parametrat e personalizuar
për inicializimin
agjentin e ngarkesës
Plani i testit
Qëllimi i testimit
Diengjërit e ekzekutimit
të testeve të ngarkesës
Gazetat sistemore
Dinamika e ndryshimit të metrikave të qëllimit dhe agjentit të ngarkesës

RunAgents
Ekzekutimi nga agjenti
i ngarkesës i skenarëve të testeve
përputhshëm me
profilin e ngarkesës
Ndërveprimi i agjentit të ngarkesës
me qëllimin e testimit
Plani i testit
Qëllimi i testimit

Logs
Grumbullimi i ‘logĂ«ve’ tĂ« papĂ«rpunuara
në procesin e testimit të ngarkesës:
shënimet mbi veprimet e agjentit të ngarkesës,
gjendja e qëllimit të testimit
dhe VM, në të cilën është nisur agjenti

Diengjërit e ekzekutimit
të testeve të ngarkesës
Gazetat sistemore

Metrics
Grumbullimi i metrikave ‘tĂ« papĂ«rpunuara’ gjatĂ« testimit

Dinamika e ndryshimit të metrikave të qëllimit
dhe agjentit të ngarkesës

Raport: faza e përgatitjes së raportit për testimin

Generator
Shpërndarja e të dhënave të mbledhura
nga sistemi i ngarkesës dhe
sistemi mbikĂ«qyrĂ«s ‘tĂ« papĂ«rpunuara’
metrikave dhe logëve
Formimi i raportit në
një format të lexueshëm nga njeriu,
ndoshta me elemente
analizë
Diengjërit e ekzekutimit
të testeve të ngarkesës
Gazetat sistemore
Dinamika e ndryshimit të metrikave
të qëllimit dhe agjentit të ngarkesës
LogĂ«t e pĂ«rpunuara ‘tĂ« papĂ«rpunuara’
në format, të përshtatshëm për
eksportin në magazina të jashtme
Raporti statik mbi ngarkesën,
i përshtatshëm për analizë nga njeriu

Publiko
Publikimi i raportit
për testimin e ngarkesës në
të jashtme
shërbimit
Të procesuar "të papërpunuar"
logjet në formatin e përshtatshëm
për eksport në depo të jashtme
deponi
Raportet e ruajtura në depo të jashtme për
ngarkesën, të përshtatshme
për analizë nga njeriu
K lidhja e burimeve të ngarkesës në template CI

Të kalojmë në pjesën praktike. Dua të tregoj se si në disa projekte në kompaninë

Positive Technologies për realizuam konceptin e testimit të ngarkesës si shërbim. Fillimisht, me ndihmën e inxhinierëve tanë DevOps, krijuam në GitLab CI një grup të dedikuar të agjentëve për të drejtuar testet e ngarkesës. Që të mos i ngatërrojmë në template me të tjerët, siç janë grupet e ndërtimit, ne shtuam etiketa në këta agjentë,

etiketat : ngarkesë. Mund të përdoren etika të tjera kuptimplote. Ato caktohennë regjistrim GitLab CI Runners. Si ta kuptojmë fuqinë e nevojshme për "çelikan"? Karakteristikat e agjentëve të ngarkesës - numri i mjaftueshëm i vCPU, RAM dhe Disk - mund të llogariten duke pasur parasysh se në agjent duhet të jenë të nisura Docker, Python (për Yandex.Tank), agjenti GitLab CI, Java (për Apache JMeter). Për Java nën JMeter gjithashtu rekomandohet të përdoren të paktën 512 MB RAM dhe, si kufi të sipërm,

80% e memories së disponueshme Pra, për bazuar në përvojën tonë, ne rekomandojmë që për agjentët e ngarkesave të përdoren të paktën: 4 vCPU, 4 GB RAM, 60 GB SSD. Kapaciteti i kartës së rrjetit përcaktohet në bazë të kërkesave të profilit të ngarkesës..

Ne zakonisht përdorim dy burime ngarkese - imazhet docker të Apache JMeter dhe Yandex.Tank.

Yandex.Tank

është një mjet open-source i kompanisë Yandex për të kryer testime ngarkese. Në thelb të arkitekturës së saj modulare është një gjenerues me performancë të lartë asinkron hit-based i HTTP kërkesave, Phantom. Tanka ka monitorim të integruar të burimeve të serverit të testuar përmes protokollit SSH, mund të ndalë automatikisht testin sipas kushteve të caktuara, di të nxjerrë rezultatet si në konsolë ashtu edhe në formë grafikash, mund të lidhet me modul të tij për të zgjeruar funksionalitetin. Përveç kësaj, ne e kemi përdorur Tank kur kjo nuk ishte akoma një tendencë. Në artikullin " Yandex.Tank dhe automatizimi i testimit të ngarkesës" mund të lexoni historinë se si në vitin 2013 ne realizuam testimin e ngarkesës me tëPT Appllication Firewall - një nga produktet e kompanisë tonë. Apache JMeter

Apache JMeter — Ă«shtĂ« njĂ« mjet open-source pĂ«r kryerjen e testimeve tĂ« ngarkesĂ«s, i zhvilluar nga kompania Apache. Ai mund tĂ« pĂ«rdoret po aq mirĂ« pĂ«r testimin e aplikacioneve tĂ« uebit statike ashtu si dhe pĂ«r ato dinamike. JMeter mbĂ«shtet njĂ« numĂ«r tĂ« madh protokollesh dhe mĂ«nyrash ndĂ«rveprimi me aplikacionet: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET etj.), SOAP / REST Webservices, FTP, TCP, LDAP, SMTP(S), POP3(S) dhe IMAP(S), bazat e tĂ« dhĂ«nave pĂ«rmes JDBC, mund tĂ« ekzekutojĂ« komandat shell dhe tĂ« punojĂ« me objekte Java. JMeter ka njĂ« IDE pĂ«r krijimin, debugimin dhe ekzekutimin e planeve tĂ« testimit. Po ashtu ka njĂ« CLI pĂ«r tĂ« punuar nĂ« linjĂ«n e komandĂ«s nĂ« çdo sistem operativ tĂ« pĂ«rputhshĂ«m me Java (Linux, Windows, Mac OS X). Ky mjet Ă«shtĂ« nĂ« gjendje tĂ« gjenerojĂ« dinamikisht njĂ« raport HTML mbi testimin.

Për lehtësi përdorimi brenda kompanisë sonë, për t'iu dhënë mundësi testuesve të ndryshojnë dhe shtojnë ambientin, ne kemi bërë ndërtimet e imazheve Docker për burimet e ngarkesës në GitLab CI me publikim në regjistrin Docker në Artifactory. Kështu bëhet më shpejt dhe më lehtë për t'i lidhur në pipeline për testet e ngarkesës. Si të bëni docker push në regjistrin përmes GitLab CI - shihni në udhëzimet.

Dockerfile bazë për Yandex.Tank ne e morëm këtë:

Dockerfile 
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]

Dhe për Apache JMeter këtë:

Dockerfile 
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]

Si funksionon sistemi ynë i integrimit të vazhdueshëm, mund të lexoni në artikullin "Automatizimi i proceseve të zhvillimit: si implementuam ne idetë DevOps në Positive Technologies».

Shabllon dhe pipeline

Një shembull shablloni për kryerjen e testeve të ngarkesës është i disponueshëm në projektin demo-load. Në readme-file mund të lexoni udhëzimet për përdorimin e shabllonit. Në vetë shabllonin (skedari .gitlab-ci.yml) ka vërejtje mbi atë që përfaqëson çdo hap.

Shablloni është shumë i thjeshtë dhe demonstrojnë tre faza të testimit të ngarkesës, të përshkruara më lart në diagram: përgatitja, testimi dhe publikimi i raporteve. Këto përfaqësohen nga stages: Prepare, Test dhe Report.

  1. Faza Prepare duhet të përdoret për konfigurimin paraprak të objektivave të testimit ose për të kontrolluar disponueshmërinë e tyre. Ambienti për burimet e ngarkesës nuk ka nevojë të konfigurohet, ato janë më parë ndërtuar si imazhe Docker dhe janë ngarkuar në regjistrinë docker: mjafton të specifikoni versionin e nevojshëm në fazën Test. Por mund të rindezësh ato dhe të bësh imazhe të modifikuara të tua.
  2. Faza Test përdoret për të treguar burimin e ngarkesës, për të filluar testet dhe për të ruajtur artefaktet e testimit. Mund të zgjidhet çdo burim ngarkese: Yandex.Tank, Apache JMeter, i tuaj ose të gjitha së bashku. Për të çaktivizuar burimet e panevojshme, mjafton të komenton ose të fshin punën. Pikat e hyrjes për burimet e ngarkesës:

    Shënim: modelimi i konfigurimit të ndërtimit përdoret për të rregulluar ndërveprimin me sistemin CI dhe nuk supozon të vendosë logjikën e testeve. Për testet, përcaktohet pika e hyrjes ku ndodhet skripti menaxhues bash. Mënyra se si kruhen testet, formimi i raporteve dhe vetë skenarët e testimit - duhet të realizohen nga inxhinierët QA. Në shembullin e demonstrimit për të dy burimet e ngarkesës, si një test më të thjesht e përdorin kërkesën për faqen kryesore të Yandex. Skenarët dhe parametrat e testeve ndodhen në katalogun ./tests.

  3. Në fazën Raporti duhet të përshkruajë mënyrat e publikimit të rezultateve të testimit, të marra në fazën Test, në depo të jashtme, për shembull në GitLab Pages ose sisteme të veçanta raportimi. Për GitLab Pages kërkohet që pas përfundimit të testeve, katalogu ./public të jetë i papërmbushur dhe të përmbajë të paktën skedarin index.html. Për detajet e funksionimit të shërbimit GitLab Pages mund të lexoni në lidhje.

    Shembuj, si të eksportoni të dhënat:

    Udhëzime për konfigurimin e publikimit:

Në shembullin e demonstrimit, pipeline me testet e ngarkesës dhe dy burime ngarkese (mund të çaktivizoni të panevojshmin) duket kështu:

Testimi i ngarkesës si shërbim CI për zhvilluesit

Apache JMeter e ka mundësinë për të formuar vetë raportin HTML, prandaj është më e leverdishme që të ruhen në GitLab Pages me mjetet standarde. Ja si duket raporti i Apache JMeter:

Testimi i ngarkesës si shërbim CI për zhvilluesit

Në shembullin e demonstrimit për Yandex.Tank do të shihni vetëm një raport tekstual fals në seksionin për GitLab Pages. Gjatë testimit, Tanka di të ruajë rezultatet në bazën InfluxDB, dhe nga aty ato mund të shfaqen, për shembull, në Grafana (konfigurimi bëhet në skedarin ./tests/example-yandextank-test.yml). Ja si duket raporti i Tankës në Grafana:

Testimi i ngarkesës si shërbim CI për zhvilluesit

CV

Në këtë artikull, unë kam folur për konceptin e «testimit të ngarkesës si shërbim» (load testing as a service). Ideja kryesore është përdorimi i infrastrukturës së grupeve të parakonfiguruara të agjentëve të ngarkesës, imazheve Docker të burimeve të ngarkesës, sistemeve të raportimit dhe një pipeline të bashkuar në GitLab CI mbi një template të thjeshtë .gitlab-ci.yml (shembull në lidhje). E gjithë kjo mbështetet nga një ekip i vogël inxhinierësh-automatizuesish dhe mund të riprodhohet sipas kërkesës së ekipeve produktore. Shpresoj se kjo do t'ju ndihmojë në përgatitjen dhe realizimin e një skeme të ngjashme në kompaninë tuaj. Faleminderit për vëmendjen!

P. S. Dua t'u them falënderime të mëdha kolegëve të mi, Sergey Kurbanov dhe Nikolay Yusev, për ndihmën teknike në realizimin e konceptit të testimit të ngarkesës si shërbim në kompaninë tonë.

Autori: Timur Gilmullin — zĂ«vendĂ«sdrejtor i departamentit tĂ« teknologjive dhe proceseve tĂ« zhvillimit (DevOps) nĂ« Positive Technologies

Burimi: habr.com

Bleni hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera đŸ”„ Bli hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera | ProHoster