Koormustestimine CI-teenusena arendajatele

Koormustestimine CI-teenusena arendajatele

Üks peamisi probleeme, millega tihti silmitsi seisavad mitme toote tarkvara pakkujad, on inseneride – arendajate, testijate ja infrastruktuuri administraatorite – oskuste dubleerimine peaaegu igas meeskonnas. See kehtib ka kallite inseneride – koormustestimise spetsialistide kohta.

Kuna insenerid peavad sageli alates nullist ĂŒles seadma testimistööriistade infrastruktuuri, seadistama koormustestimise tööriistu ning integreerima need CI-sĂŒsteemidesse, seadistama jĂ€lgimist ja aruannete avaldamist, jÀÀb neil vĂ€hem aega oma pĂ”hikohustuste tĂ€itmiseks ja oma ainulaadse kogemuse rakendamiseks koormustestimise protsessi ĂŒlesehitamisel, meetodite valimisel, optimaalsete mÔÔdikute mÀÀramisel ja automaatsete testide kirjutamisel koormusprofiilide jĂ€rgi.

MĂ”ningate organisatsiooniliste probleemide lahendustega testimisel, mida rakendame Positive Technologies, vĂ”ite tutvuda teises artiklis. Selles artiklis rÀÀgin koormustestide integreerimisest ĂŒldisesse CI-protsessi mĂ”iste „koormustestimine teenusena” (load testing as a service) abil. Saate teada, kuidas ja milliseid koormusallikaid Docker-pilte CI-protsessis kasutada; kuidas ĂŒhendada koormusallikaid oma CI-projekti ehitusmalli abil; kuidas nĂ€eb vĂ€lja demopipeline koormustestide kĂ€ivitamiseks ja tulemuste avaldamiseks. Artikkel vĂ”ib olla kasulik tarkvaratestimise inseneridele ja automatiseerimisinseneridele CI-s, kes on mĂ”elnud oma koormussĂŒsteemi arhitektuurile.

MÔiste olemus

MĂ”iste load testing as a service tĂ€hendab vĂ”imalust integreerida koormustööriistu nagu Apache JMeter, Yandex.Tank ja oma raamistikud igasse pideva integreerimise sĂŒsteemi. Demokood on mĂ”eldud GitLab CI jaoks, kuid pĂ”himĂ”tted on ĂŒldiselt rakendatavad kĂ”igile CI-sĂŒsteemidele.

Koormustestimine teenusena — see on tsentraalselt hallatav teenus koormustestide lĂ€biviimiseks. Koormustestid kĂ€ivitatakse eraldatud agentide basseinides, tulemuste avaldamine toimub automaatselt GitLab Pages, Influx DB ja Grafana vĂ”i testitulemuste raportimise sĂŒsteemides (TestRail, ReportPortal jne). Automatiseerimine ja mÔÔtmete laiendamine on vĂ”imalikult lihtne — lihtsalt lisades ja parametriseerides GitLab CI projektis tavalist gitlab-ci.yml malli.

Selle lĂ€henemise eeliseks on see, et kogu CI-infrastruktuur, koormuse agentuurid, koormusallikate docker-pildid, testimisprotsessid ja raportite avaldamine — toetatakse tsentraalse automatiseerimise osakonna (DevOps-inseneride) poolt, samas kui koormustestimise insenerid saavad keskenduda testide arendamisele ja nende tulemuste analĂŒĂŒsimisele, tegelemata infrastruktuuri probleemidega.

Lihtsuse huvides oletame, et sihtotstarbeline testitav rakendus vĂ”i server on juba eelnevalt ĂŒles seatud ja konfigureeritud (selleks vĂ”ivad olla kasutatud automatiseeritud skriptid Pythonis, SaltStackis, Ansible'is jne). Sel juhul jaguneb kogu koormustestimise kontseptsioon teenusena kolmeks etapiks: ettevalmistus, testimine, aruannete avaldamine. TĂ€psemalt skeemil (kĂ”ik pildid on klikatavad):

Koormustestimine CI-teenusena arendajatele

Peamised mÔisted ja mÀÀratlemised koormustestimises

Koormustestide lĂ€biviimisel pĂŒĂŒame jĂ€rgida standardeid ja ISTQB metoodikat, kasutades vastavaid termineid ja soovitatud mÔÔdikuid. Toome vĂ€lja lĂŒhikese loetelu peamistest mĂ”istetest ja mÀÀratlemistest koormustestimises.

Koormusagent (load agent) — virtuaalne masin, millel kĂ€ivitub rakendus, mis tekitab koormust (Apache JMeter, Yandex.Tank vĂ”i isekirjutatud koormusmoodul).

Testimise eesmĂ€rk (target) — server vĂ”i rakendus, mis on serveris installitud ja millele rakendatakse koormust.

Testimisstsenaarium (test case) — parameteriseeritud toimingute kogum: kasutajate tegevused ja oodatavad reaktsioonid nendele tegevustele, koos fikseeritud vĂ”rgupĂ€ringute ja vastustega, sĂ”ltuvalt mÀÀratud parameetritest.

Koormusprofiil (profile) — in ISTQB metoodikas (p. 4.2.4, lehekĂŒlg 43) koormusprofiilid mÀÀratlevad konkreetse testi jaoks kriitilise tĂ€htsusega mÔÔdikud ja koormusparameetrite muutmise variandid testi kĂ€igus. Koormusprofiile saab nĂ€ha joonisel.

Koormustestimine CI-teenusena arendajatele

Test (test) — stsenaarium, millel on eelnevalt mÀÀratud parameetrite kogum.

Testiplaan (test-plan) — testide kogum ja koormusprofiil.

Testijooks (testrun) — ĂŒks iteratsioon ĂŒhe testi kĂ€itamisest tĂ€ieliku koormusstsenaariumi ja saadud aruandega.

VĂ”rgupĂ€ring (request) — HTTP-pĂ€ring, mis saadetakse agentilt eesmĂ€rgile.

VĂ”rguvastus (response) — HTTP-vastus, mis saadetakse eesmĂ€rgilt agentile.
HTTP vastuse kood (HTTP responses status) — rakenduste serveri standardne vastusekood.
Tehing (transaction) — tĂ€ielik "pĂ€ring — vastus" tsĂŒkkel. Tehingut loetakse algusest pĂ€ringu saatmisest (request) kuni vastuse vastuvĂ”tmise lĂ”petamiseni (response).

Tehingu staatuse (transactions status) — kas «pĂ€ring – vastus» tsĂŒkkel Ă”nnestus edukalt lĂ”petada. Kui selle tsĂŒkli jooksul esines viga, loetakse kogu tehing ebaĂ”nnestunuks.

Vastuse aeg (latency) — aeg, mis kulub pĂ€ringu (request) saatmise lĂ”pust vastuse (response) vastuvĂ”tu alguseni.

KoormusmÔÔdikud (metrics) — koormustestimise kĂ€igus mÀÀratud koormatud teenuse ja koormusagendi omadused.

PÔhikategooriad koormuse mÔÔtmiseks

MĂ”ned kĂ”ige tavalisemad ja soovitatavad meetodid ISTQB (lk 36, 52) mÔÔdikud on esitatud allolevas tabelis. Sarnased mÔÔdikud agendi ja sihtkoha jaoks on toodud ĂŒhel real.

MÔÔdikud koormusagendi jaoks
SihtsĂŒsteemi vĂ”i rakenduse, mida koormuse all testitakse, mÔÔdikud

Kogus  vCPU ja mÀlu RAM,
Ketas — „rauda“ omadused koormusagendi jaoks
CPU, MĂ€lu, Diski kasutus — protsessori, mĂ€lu ja ketta koormuse dĂŒnaamika
testimise kÀigus. Tavaliselt mÔÔdetakse protsentides
maksimaalselt saadaval olevast vÀÀrtusest

VĂ”rgu lĂ€bilaskevĂ”ime (koormusagendil) — vĂ”rguĂŒhenduse lĂ€bilaskevĂ”ime
serveris,
kus koormusagent on installitud.
Tavaliselt mÔÔdetakse baitides sekundis (bps)
VĂ”rgu lĂ€bilaskevĂ”ime(sihtimise pĂ€eval) — vĂ”rgu liidese lĂ€bilaskevĂ”ime
sihtserveris. Tavaliselt mÔÔdetakse baitides sekundis (bps)

Virtuaalsed kasutajad— virtuaalsete kasutajate arv,
kes rakendavad koormusskeeme ja
imitavad pÀris kasutajate tegevusi
Virtuaalsete kasutajate olek, Edastus/EbaĂ”nnestumine/Kokku — eduka ja
ebaÔnnestunud virtuaalsete kasutajate olekute arv
koormusskeemide jaoks ning nende koguarv.

Tavaliselt eeldatakse, et kÔik kasutajad suudavad tÀita
oma ĂŒlesandeid, mis on mÀÀratletud koormaprofiilis.
Iga viga tÀhendab, et ka pÀris kasutaja ei suuda
oma ĂŒlesannet sĂŒsteemis lahendada

NĂ”uded sekundis (minuutis)— vĂ”rgu pĂ€ringute arv sekundis (vĂ”i minutis).

Oluline koormusagendi omadus: kui palju ta suudab genereerida pÀringuid.
Sisuliselt on see simulatsioon rakenduse poole pöördumisest virtuaalsete kasutajate poolt
Vastused sekundis (minuutis)
— vĂ”rgu vastuste arv sekundis (vĂ”i minutis).

Oluline sihttouote omadus: kui palju on Ônnestunud
genereerida ja saata vastuseid pÀringutele,
mis pÀrit koormusagendilt

HTTP vastuste olek— erinevate vastuskoodide arv
rakenduste serverist, mis on saadud koormustestija poolt.
NÀiteks 200 OK tÀhendab eduka pöördumist,
samal ajal kui 404 – et ressurssi ei leitud

Ooteaeg (latentsusaeg) – aeg pĂ€rast
pÀringu (request) saatmise lÔpetamist kuni vastuse (response) vastuvÔtmise alguseni.
Tavaliselt mÔÔdetakse millisekundites (ms)

Tehingu vastuse aeg– ĂŒhe tĂ€ieliku tehingu aeg,
tsĂŒkli «pĂ€ring – vastus» lĂ”petamine.
See aeg algab pÀringu (request) saatmisest
kuni vastuse (response) vastuvÔtmise lÔpetamiseni.

Tehingu aeg vÔib olla mÔÔdetud sekundites (vÔi minutites)
mitmel erineval viisil: arvestatakse minimaalset,
maksimaalset, keskmist ja nÀiteks 90. persentiili.
Minimaalsed ja maksimaalsed nĂ€idud on sĂŒsteemi
soorituse ÀÀrmused.
90. persentiili kasutatakse kÔige sagedamini,
kuna see nÀitab enamikku kasutajatest,
kes töötavad mugavalt sĂŒsteemi soorituse piiridel.

Tehingud sekundis (minuutis) – tĂ€istehingute arv sekundis (minuutis),
ehk kui palju pÀringuid rakendus suutis vastu vÔtta ja
töötada lÀbi ning vastuseid anda.
Tegelikult on see sĂŒsteemi lĂ€bilaskevĂ”ime.
Tehingute staatus

, LĂ€bimurre / EbaĂ”nnestumine / Kokku – arv , LĂ€bimise / EbaĂ”nnestumise / Kokku — arv
edukate, eba puutumised ja ĂŒldine tehingute arv.

Reaalsete kasutajate puhul tÀhendab ebaÔnnestunud
tehing tegelikult
sĂŒsteemi koormuse all mitte töötamist.

Koormustestimise pÔhimÔtteline skeem

Koormustestimise pĂ”himĂ”tteline skeem on vĂ€ga lihtne ja koosneb kolmest pĂ”hietapist, millest olen juba rÀÀkinud: Prepare — Test — Report, st testimise eesmĂ€rkide ettevalmistamine ja parameetrite seadmine koormusallikatele, seejĂ€rel koormustestide lĂ€biviimine ja lĂ”puks testimisraporti koostamine ja avaldamine.

Koormustestimine CI-teenusena arendajatele

MĂ€rkused skeemile:

  • QA.Tester — koormustestimise ekspert,
  • Target — sihtrakendus, mille kĂ€itumist tuleb koormuse all uurida.

Entiteetide, etappide ja sammude klassifikaator skeemil

Etapid ja sammud
Mis toimub
Mis on sisendiks
Mis on vÀljundiks

Prepare: testimise ettevalmistamise etapp

LoadParameters
Koormuse parameetrite seadmine ja initsialiseerimine,
kasutaja
valikute mÔÔdikud ja
testimiskava ettevalmistamine
(koormuse profiil)
Kohandatud parameetrid koormuse agenti initsialiseerimiseks
Kasutaja parameetrid
koormuse agendi initsialiseerimiseks
Testimiskava
Testimise eesmÀrk

VM
KasutuselevÔtt pilves
virtuaalmasina
vajalikud omadused
VM-i parameetrid koormuse agendi jaoks
Automatiseerimise skriptid
VM-i loomine
Konfigureeritud VM
pilves

Env
OP-i seadistamine ja
keskkonna ettevalmistamine
koormuse agendi tööks
Keskkonna parameetrid
koormuse agendi jaoks
Automatiseerimise skriptid
keskkonna seadistamine
Valmis keskkond:
OP, teenused ja rakendused
tööks vajalikud
koormuse agendi jaoks

LoadAgents
Paigaldamine, seadistamine ja parameetrite mÀÀramine
koormuse agendi jaoks.
VÔi allalaadimine Docker-pildist
ettevalmistatud koormuse allikaga
Koormuse allika Docker-pilt
(YAT, JM vÔi omatehtud raamistik)
Seadistamise parameetrid
koormuse agendi jaoks
Konfigureeritud ja valmis
tööks koormuse agent

Test: koormustestide tÀitmise etapp. Allikateks on koormuse agendid, mis on paigaldatud eraldatud agentide basseinidesse GitLab CI jaoks.

Load
Koormuse agendi kÀivitamine
valitud testplaaniga
ja koormuse parameetritega
Kohandatud parameetrid
iniitsialiseerimiseks
koormuse agendi jaoks
Testimiskava
Testimise eesmÀrk
TĂ€itmislogid
koormustestide
SĂŒsteemilogid
EesmĂ€rgi ja koormuse agendi mÔÔdikute dĂŒnaamika

RunAgents
Koormuse agentide
koormustestide skriptide tÀitmine
koormusprofili kohaselt
koormuse profiil
Kohanduste koormuseagent
testimise eesmÀrgil
Testimiskava
Testimise eesmÀrk

Logs
Toorandmete logide kogumine
koormustestimise kÀigus:
koormuseagendi tegevusraportid,
testimise eesmÀrgi olek
ja VM, kus koormuseagent töötab

TĂ€itmislogid
koormustestide
SĂŒsteemilogid

Metrics
Toorandmete mÔÔdikute kogumine testimise kÀigus

MÔÔdikute dĂŒnaamiline muutumine sihtmĂ€rgi
ja koormuseagendi kohta

Report: ettevalmistusprotsessi raporti tegemiseks testimisest

Generator
Kogutud töötlemine
koormussĂŒsteemi ja
monitooringusĂŒsteemi toorandmete
mÔÔdikute ja logide
Aruande koostamine
inimesele loetaval kujul,
vĂ”imalusel analĂŒĂŒsi elementidega
analĂŒĂŒtika
TĂ€itmislogid
koormustestide
SĂŒsteemilogid
MÔÔdikute dĂŒnaamiline muutumine
sihtmÀrgi ja koormuseagendi
Töödeldud toorlogid
vormingus, mis sobib
vĂ€listele andmesalvestussĂŒsteemidele
Statistiline koormusaruanne,
inimesele analĂŒĂŒsimiseks sobiv

Publish
Aruande avaldamine
koormustestimise
vÀlises teenuses
Töödeldud toorlogid vormingus, mis sobib
vÀlistele
andmesalvestussĂŒsteemidele
Salvestatud vÀlises
andmesalvestussĂŒsteemis koormuse
aruanded, mis sobivad
inimese analĂŒĂŒsimiseks
Koormuse allikate ĂŒhendamine CI-mallis
analĂŒĂŒsiks inimese poolt

Koormusallikate ĂŒhendamine CI-mallis

Liigume praktilise osa juurde. Soovin nÀidata, kuidas oleme mÔnede projektide puhul ettevÔttes Positive Technologies rakendanud koormustestimise kontseptsiooni teenusena.

Esmalt, meie DevOps-inseneride tööga, lĂ”ime GitLab CI-s spetsiaalse agentide basseini koormustestide kĂ€ivitamiseks. Et neid ĆĄabloonides teiste, nĂ€iteks kokkupanemise, basseinide seas segamini ei ajada, lisasime nende agentide kĂŒlge tunnused, tags: load. VĂ”ite kasutada ka muid arusaadavaid mĂ€rke. Need mÀÀratakse registreerimise ajal GitLab CI Runners.

Kuidas mÀÀrata vajalik riistvara vĂ”imsus? Koormuse agentide omadused — piisav arv vCPU, RAM ja Disk — saab arvutada lĂ€htuvalt sellest, et agendil peavad olema kĂ€imas Docker, Python (Yandex.Tank'i jaoks), GitLab CI agent, Java (Apache JMeter'i jaoks). JMeter'i jaoks Java puhul soovitatakse kasutada vĂ€hemalt 512 MB RAM-i ning ĂŒlemiseks piiriks, 80% kasutada olevast mĂ€lust..

Seega, lÀhtuvalt meie kogemusest, soovitame koormusagentide jaoks kasutada vÀhemalt: 4 vCPU, 4 GB RAM, 60 GB SSD. VÔrguadapteri lÀbilaskevÔime mÀÀratakse koormuse profiili nÔuete alusel.

Meie peamine koormusallikas on kaks — Apache JMeteri ja Yandex.Tanki Docker-pildid.

Yandex.Tank on Yandexi avatud lĂ€htekoodiga tööriist koormustestide teostamiseks. Selle modulaarne arhitektuur pĂ”hineb kĂ”rge jĂ”udlusega asĂŒnkroonsel hit-based HTTP-pĂ€ringute generaatoril Phantom. Tank sisaldab testitava serveri ressursside jĂ€lgimist SSH protokolli kaudu, suudab automaatselt testimise tingimuste saavutamisel peatada ning kuvab tulemusi nii konsoolis kui graafikute kujul. Samuti on vĂ”imalik lisada oma mooduleid funktsionaalsuse laiendamiseks. Muide, me kasutasime Tanki ajal, mil see polnud veel peavoolus. Artiklis „Yandex.Tank ja koormustestide automatiseerimine“ saab lugeda, kuidas me 2013. aastal lĂ€bi viisime koormustestimise PT Appllication Firewall — ĂŒks meie ettevĂ”tte tooteid.

Apache JMeter — on avatud lĂ€htekoodiga tööriist, mida kasutatakse koormustestimiseks Apache'i ettevĂ”ttest. Seda saab vĂ”rdselt hĂ€sti kasutada nii staatiliste kui dĂŒnaamiliste veebirakenduste testimiseks. JMeter toetab arvukalt protokolle ja suhtlemisviise rakendustega: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET jne), SOAP / REST veebiteenused, FTP, TCP, LDAP, SMTP(S), POP3(S) ja IMAP(S), andmebaasid JDBC kaudu, suudab kĂ€ivitada shell-kĂ€ske ja töötada Java-objektidega. JMeteril on IDE testiplaneeringute loomiseks, silumiseks ja tĂ€itmiseks. Samuti on olemas CLI, mis töötab igas Java-toega operatsioonisĂŒsteemis (Linux, Windows, Mac OS X). Tööriist suudab dĂŒnaamiliselt genereerida HTML-aruande testimise kohta.

Kasutamise mugavuse nimel meie ettevĂ”tte sees, et testijad saaksid keskkonda ise muuta ja lisada, oleme loonud koormusallikaid Docker-piltide kogumid GitLab CI-s koos publikatsiooniga meie sise- dokkeri registrisse Artifactory. See muudab koormustestide jaoks nende ĂŒhendamise torujuhtmetesse kiireks ja lihtsaks. Kuidas teha docker push registrisse lĂ€bi GitLab CI — vaadake juhendis.

Yandex.Tanki pÔhidoogeri faili vÔtsime selle:

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

Aga Apache JMeter on jÀrgmine:

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

Kuidas meie pidevat integreerimistöötluse sĂŒsteem töötab, vĂ”ite lugeda artiklist «Arendusprotsesside automatiseerimine: kuidas me Positive Technologies rakendasime DevOpsi ideid».

Mall ja tööprotsess

NÀide koormustestimise mallist on saadaval projektis demo-load. Dokumendihalduses readme-failis saate lugeda juhiseid malliga töötamiseks. Igas mallis (fail .gitlab-ci.yml) on mÀrkused selle kohta, mida iga samm tÀhistab.

Mall on vÀga lihtne ja demonstreerib kolme koormustestimise etappi, nagu eespool diagrammil kirjeldatud: ettevalmistus, testimine ja aruannete avaldamine. Selle eest vastutavad stages: Prepare, Test ja Report.

  1. Etapp Prepare tuleb kasutada testimise eesmÀrkide ettevalmistamiseks vÔi nende kergesti kÀttesaadavuse kontrollimiseks. Koormuse allikate keskkonda seadistama ei pea, need on eelnevalt kokku pandud kui docker-pildid ja saadaval docker registry's: piisab vajalikku versiooni mÀÀramisest etapis Test. Kuid neid saab ka tagasi ehitada ja luua oma modifitseeritud pildid.
  2. Etapp Test kasutatakse koormuse allika mÀÀramiseks, testide kĂ€ivitamiseks ja testimisartefaktide salvestamiseks. Vƍib valida mis tahes koormuse allika: Yandex.Tank, Apache JMeter, oma vĂ”i kĂ”iki koos. VĂ€henenud allikate keelamiseks piisab, kui kommenteerida vĂ”i kustutada töö. Koormuse allikate sisenemiskohad:

    MĂ€rkus: kokkupaneku konfiguratsiooni mall on mĂ”eldud CI-sĂŒsteemiga suhtlemise seadistamiseks ja ei eelda testide loogika paigutamist. Testide jaoks on mÀÀratud sisenemiskoht, kus asub juhtiva bash-skripti. Testide kĂ€ivitamise meetod, aruannete koostamine ja testimistooted — peavad olema rakendatud QA-inseneride poolt. Demokohas kasutatakse mĂ”lema koormuse allika jaoks kĂ”ige lihtsama testina Yandexi peamise lehe pĂ€ringut. Testide stsenaariumid ja parameetrid asuvad kataloogis ./tests.

  3. Etapis Aruanne on vajalik kirjeldada Test-etapis saadud testitulemuste avaldamise viise vĂ€listesse salvestuskohtadesse, nĂ€iteks GitLab Pages vĂ”i spetsiaalsetesse aruandekuule. GitLab Pages jaoks peab testide lĂ”ppedes kataloog ./public olema mitte tĂŒhi ja sisaldama vĂ€hemalt faili index.html. GitLab Pages teenuse toimimisest saate lugeda lingi kaudu.

    NĂ€ited, kuidas andmeid eksportida:

    Avaldamise seadistamise juhised:

Demoprintis nĂ€eb koormustestide torustik kahest koormuse allikast (ĂŒhe saab deaktiveerida) vĂ€lja selline:

Koormustestimine CI-teenusena arendajatele

Apache JMeter suudab ise genereerida HTML-aruande, seega on mÔistlikum see GitLab Pages-is tavaliste vahendite abil salvestada. Niisugune nÀeb vÀlja Apache JMeter aruanne:

Koormustestimine CI-teenusena arendajatele

Demoprintis Yandex.Tank-i jaoks nÀete ainult vale tekstiaruannet GitLab Pages-i jaotises. Testimise tÔttu oskab Tank salvestada tulemusi InfluxDB baasi, kust saab neid nÀiteks Grafanas kuvada (seadistamine toimub failis ./tests/example-yandextank-test.yml). Niisugune nÀeb vÀlja Tanki aruanne Grafanas:

Koormustestimine CI-teenusena arendajatele

KokkuvÔte

Artiklis rÀÀgin „koormustestimise kui teenuse” (load testing as a service) kontseptsioonist. PĂ”hiidee seisneb ettenĂ€htud koormuseagentide basseinide, koormuseallikate Docker-piltide, aruandlussĂŒsteemide ja neid ĂŒhendava GitLab CI teekonna kasutamises lihtsa .gitlab-ci.yml malli alusel. KĂ”ike seda toetab vĂ€ike automatiseerimise inseneride meeskond ja seda kopeeritakse tootevĂ”istkondade nĂ”udmisel. Loodan, et see aitab teid sarnase skeemi ettevalmistamisel ja rakendamisel teie ettevĂ”ttes. AitĂ€h tĂ€helepanu eest! lingi kauduP. S. Soovin suured tĂ€nud öelda oma kolleegidele, Sergei Kurbanovile ja Nikolai Yusevile, tehnilise abi eest koormustestimise kui teenuse (load testing as a service) kontseptsiooni rakendamisel meie ettevĂ”ttes.

Autor

Timur Gilmullin: — tegevdirektori asetĂ€itja arendustehnoloogia ja -protsesside osakonnas (DevOps) ettevĂ”ttes Positive Technologies NFC: Near Field Communication tehnoloogia analĂŒĂŒs

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster