Enye yeengxaki abasoloko bejongana nazo abathengisi besoftware yeemveliso ezininzi kukuphinda-phindwa kobuchule beenjineli - abaphuhlisi, abavavanyi, kunye nabalawuli beziseko zophuhliso - phantse kuwo onke amaqela. Oku kusebenza nakwiinjineli ezibizayo - iingcali kwinkalo yovavanyo lomthwalo.
Endaweni yokwenza imisebenzi yabo ethe ngqo kwaye basebenzise amava abo akhethekileyo ukwakha inkqubo yovavanyo lomthwalo, khetha indlela yokusebenza, iimetrikhi ezifanelekileyo kwaye ubhale ii-autotests ngokuhambelana neeprofayili zomthwalo, iinjineli zihlala zisebenzisa iziseko zovavanyo ukusuka ekuqaleni, ziqwalasele izixhobo zomthwalo, kwaye uzifake. ngokwabo kwiinkqubo zeCI, ukubeka iliso kunye nokupapashwa kweengxelo.
Ungafumana izisombululo kwiingxaki ezithile zombutho kuvavanyo esilisebenzisa kwiPositive Technologies in
Undoqo wengcamango
Ingcamango yovavanyo lomthwalo njengenkonzo ithetha ukukwazi ukudibanisa izixhobo zokulayisha i-Apache JMeter, i-Yandex.Tank kunye nezakhelo zakho zibe yinkqubo yokudibanisa eqhubekayo. Idemo iya kuba yeGitLab CI, kodwa imigaqo iqhelekile kuzo zonke iinkqubo zeCI.
Uvavanyo lomthwalo njengenkonzo yinkonzo esembindini yovavanyo lomthwalo. Iimvavanyo zomthwalo ziqhutywa kumachibi eearhente ezinikezelweyo, iziphumo zipapashwa ngokuzenzekelayo kwiGitLab Pages, Influx DB kunye neGrafana okanye kwiinkqubo zokunika ingxelo zovavanyo (TestRail, ReportPortal, njl.). Ukuzenzekela kunye nokukala kuphunyezwa ngokulula kangangoko - ngokongeza kunye nokulinganisa itemplate eqhelekileyo ye-gitlab-ci.yml kwiprojekthi ye-GitLab CI.
Inzuzo yale ndlela kukuba yonke isiseko se-CI, ii-agent zomthwalo, imifanekiso ye-docker yemithombo yomthwalo, imibhobho yokuvavanya, kunye neengxelo zokupapasha zigcinwa yisebe le-automation ye-centralized (i-DevOps engineers), ngelixa iinjineli zokuvavanya umthwalo zinokugxila kwimigudu yazo ekuphuhlisweni kovavanyo. kunye nohlalutyo lweziphumo zabo, ngaphandle kokujongana nemiba yeziseko zophuhliso.
Ukulula kwenkcazo, siya kucinga ukuba isicelo esijoliswe kuyo okanye iseva phantsi kovavanyo sele isetyenzisiwe kwaye iqwalaselwe kwangaphambili (izikripthi ezizenzekelayo kwiPython, i-SaltStack, i-Ansible, njl njl. zingasetyenziselwa oku). Ke yonke ingqikelelo yovavanyo lomthwalo njengenkonzo ingena kwizigaba ezithathu: ukulungiswa, uvavanyo, ukupapashwa kweengxelo. Iinkcukacha ezithe vetshe kumzobo (yonke imifanekiso iyacofa):
Iingcamango ezisisiseko kunye neenkcazo kuvavanyo lomthwalo
Xa siqhuba iimvavanyo zomthwalo, sizama ukubambelela
Iarhente yomthwalo - umatshini obonakalayo apho isicelo siya kuqaliswa - umthombo womthwalo (Apache JMeter, Yandex.Tank okanye imodyuli yomthwalo obhalwayo).
Injongo yovavanyo (injongo) - iseva okanye isicelo esifakwe kwiseva esiya kuba phantsi komthwalo.
Imeko yovavanyo (imeko yovavanyo) - isethi yamanyathelo eparameterized: izenzo zomsebenzisi kunye neempendulo ezilindelekileyo kwezi zenzo, kunye nezicelo zenethiwekhi ezisisigxina kunye neempendulo, kuxhomekeke kwiiparamitha ezichaziweyo.
Iprofayile okanye isicwangciso sokulayisha (iprofayile) - ngaphakathi
Uvavanyo β umbhalo oneseti emiselwe kwangaphambili yeeparamitha.
Isicwangciso sovavanyo (isicwangciso sovavanyo) - isethi yeemvavanyo kunye neprofayili yomthwalo.
Testran (tesrun) - uphinda-phindo olunye lokuqhuba uvavanyo olunye kunye nemeko yomthwalo owenziwe ngokupheleleyo kunye nengxelo efunyenweyo.
Isicelo senethiwekhi (isicelo) - Isicelo se-HTTP esithunyelwe kwi-arhente ukuya kwindawo ekujoliswe kuyo.
Impendulo yenethiwekhi (impendulo) - Impendulo ye-HTTP ethunyelwe kwithagethi kwi-arhente.
Ikhowudi yokuphendula ye-HTTP (isimo seempendulo ze-HTTP) - ikhowudi yempendulo eqhelekileyo evela kwiseva yesicelo.
Intengiselwano ngumjikelo opheleleyo wokuphendula isicelo. Intengiselwano ibalwa ukususela ekuqaleni kokuthumela isicelo (isicelo) ukuya ekugqityweni kokufumana impendulo (impendulo).
Ubume bentengiselwano - ingaba bekunokwenzeka na ukugqiba umjikelo wokuphendula ngempumelelo isicelo. Ukuba bekukho nayiphi na impazamo kulo mjikelo, ke yonke intengiselwano ithathwa njengengaphumelelanga.
Ixesha lokuphendula (latency) - ixesha ukusuka ekupheleni kokuthumela isicelo (isicelo) ukuya ekuqaleni kokufumana impendulo (impendulo).
Layisha iimetriki - iimpawu zenkonzo elayishiweyo kunye ne-arhente yomthwalo enqunywe kwinkqubo yokuvavanya umthwalo.
Iimetrics ezisisiseko zokulinganisa iiparamitha zomthwalo
Ezinye zezona zisetyenziswa kakhulu kwaye zicetyiswa kwindlela yokusebenza
Iimetrics zearhente yomthwalo
Iimetrics zenkqubo ekujoliswe kuyo okanye usetyenziso oluvavanywa phantsi komthwalo
Inani le vCPU kunye nenkumbulo i-ram,
disk - "intsimbi" iimpawu ze-arhente yomthwalo
ICPU, Imemori, ukusetyenziswa kweDiski -Amandla e-CPU, inkumbulo kunye nokulayishwa kwediski
kwinkqubo yovavanyo. Idla ngokulinganiswa njengepesenti ye
awona maxabiso aphezulu akhoyo
umsebenzi womnatha (kwi-arhente yomthwalo) - throughput
ujongano lwenethiwekhi kumncedisi,
apho i-arhente yomthwalo ifakwe khona.
Idla ngokulinganiswa ngee-bytes ngesekhondi (bps)
umsebenzi womnatha(kwithagethi) - ujongano lomnatha wonxibelelwano
kumncedisi ekujoliswe kuwo. Idla ngokulinganiswa ngee-bytes ngesekhondi (bps)
Abasebenzisi benyani-inani labasebenzisi benyani,
ukuphumeza iimeko zomthwalo kunye
ukulinganisa izenzo zabasebenzisi bokwenyani
Ubume babasebenzisi benyani, Upasiwe/Ayiphumelelanga/ Iyonke β inani labaphumeleleyo kunye
iimeko ezingaphumelelanga zabasebenzisi benyani
kwiimeko zomthwalo, kunye nenani labo lilonke.
Ngokuqhelekileyo kulindeleke ukuba bonke abasebenzisi bakwazi ukugqiba
yonke imisebenzi yakho echazwe kwiprofayile yomthwalo.
Nayiphi na impazamo iya kuthetha ukuba umsebenzisi wokwenene akayi kukwazi
Sombulula ingxaki yakho xa usebenza nenkqubo
Izicelo ngesekhondi nganye (umzuzu)- inani lezicelo zenethiwekhi ngesekhondi (okanye ngomzuzu).
Uphawu olubalulekileyo lwe-arhente yomthwalo kukuba zingaphi izicelo ezinokuzenza.
Enyanisweni, oku kukulinganisa ukufikelela kwisicelo ngabasebenzisi benyani
Iimpendulo ngomzuzwana (umzuzu)
- inani leempendulo zenethiwekhi ngesekhondi (okanye ngomzuzu).
Uphawu olubalulekileyo lwenkonzo ekujoliswe kuyo: yimalini
velisa kwaye uthumele iimpendulo kwimibuzo nge
i-arhente yokulayisha
Ubume bempendulo yeHTTP- inani leekhowudi ezahlukeneyo zokuphendula
kwiseva yesicelo efunyenwe ngummeli womthwalo.
Umzekelo, 200 OK uthetha umnxeba ophumeleleyo,
kunye ne-404 - ukuba ubutyebi abufunyanwanga
Ukuhamba (ixesha lokuphendula) - ixesha ukusuka ekupheleni
ukuthumela isicelo (isicelo) phambi kokuqala ukufumana impendulo (impendulo).
Idla ngokulinganiswa ngeemilliseconds (ms)
Ixesha lokuphendula intengiselwano- ixesha lentengiselwano enye epheleleyo,
ukugqitywa komjikelo wokuphendula isicelo.
Eli lixesha ukususela ekuqaleni kokuthumela isicelo (isicelo)
de kugqitywe ukufumana impendulo (impendulo).
Ixesha lentengiselwano inokulinganiswa ngemizuzwana (okanye imizuzu)
ngeendlela ezininzi: qwalasela ubuncinane,
ubuninzi, umndilili kwaye, umzekelo, ipesenti ye-90.
Ubuncinci kunye nobuninzi bokufunda bugqithise
ubume bokusebenza kwenkqubo.
Ipesenti yamashumi alithoba yeyona isetyenziswa kakhulu,
njengoko ibonisa uninzi lwabasebenzisi,
ukusebenza kakuhle kumda wokusebenza kwenkqubo
Iintengiselwano ngesekhondi (umzuzu) - inani elipheleleyo
intengiselwano ngesekhondi (umzuzu),
oko kukuthi, singakanani isicelo esikwazileyo ukwamkela kwaye
inkqubo yezicelo kwaye ikhuphe iimpendulo.
Enyanisweni, oku kukuphela kwenkqubo
Ubume bentengiselwano , Ipasile / Ayiphumelelanga / Iyonke - inani
ngempumelelo, ayiphumelelanga kunye nenani lilonke lentengiselwano.
Kubasebenzisi bokwenyani abaphumelelanga
intengiselwano iya kuthetha ngenene
ukungakwazi ukusebenza kunye nenkqubo phantsi komthwalo
Layisha Testing Schematic Diagram
Ingqikelelo yovavanyo lomthwalo ilula kakhulu kwaye iqulathe amanqanaba amathathu aphambili, esele ndiwakhankanyile: Lungiselela-Uvavanyo-Ngxelo, oko kukuthi, ukulungiselela iinjongo zovavanyo kunye nokubeka iiparitha kwimithombo yomthwalo, emva koko uqhuba iimvavanyo zomthwalo kwaye, ekugqibeleni, ukuvelisa nokupapasha ingxelo yovavanyo.
Amanqaku oyilo:
- I-QA.Tester yingcali yovavanyo lomthwalo,
- Ithagethi sisicelo ekujoliswe kuso ofuna ukwazi ukuziphatha kwayo phantsi komthwalo.
Umdidi wamaqumrhu, izigaba kunye namanyathelo kumzobo
Amanqanaba kunye namanyathelo
Kwenzeka ntoni
Yintoni ekungeneni
Yintoni imveliso
Lungiselela: inqanaba lokulungiselela uvavanyo
LoadParameters
Ukuseta kunye nokuqalisa
umsebenzisi
iparameters zokulayisha,
ukhetho lweemetrics kunye
Ukulungiselela isicwangciso sovavanyo
(layisha iprofayile)
Iinketho ezenzelwe wena
ukuqaliswa kwe-arhente yomthwalo
Isicwangciso sovavanyo
Injongo yovavanyo
VM
Ukusasazwa kwamafu
umatshini wenyani nge
iimpawu ezifunekayo
Izicwangciso ze-VM ze-arhente yomthwalo
Imibhalo ezenzekelayo ye
Ukwenziwa kweVM
I-VM ilungiselelwe ngaphakathi
ilifu
Umz
Ukuseta OS kunye nolungiselelo
imekobume ye
umsebenzi wearhente yomthwalo
Iisetingi zokusingqongileyo ze
iarhente yomthwalo
Imibhalo ezenzekelayo ye
izicwangciso zokusingqongileyo
Imekobume elungisiweyo:
I-OS, iinkonzo kunye nezicelo,
iyimfuneko emsebenzini
iarhente yomthwalo
LoadAgents
Ukufakela, uqwalaselo kunye neparameterization
i-arhente yokulayisha.
Okanye ukukhuphela umfanekiso wedocker ukusuka
umthombo womthwalo olungiselelwe kwangaphambili
Layisha umthombo wedocker umfanekiso
(YAT, JM okanye isakhelo esizibhalelayo)
Iisetingi
iarhente yomthwalo
Misela kwaye ulungile
kwi-arhente yomthwalo wokusebenza
Uvavanyo: inqanaba lokwenziwa kovavanyo lomthwalo. Imithombo zii-arhente zomthwalo ezifakwe kwii-arhente ezizinikeleyo kumachibi e-GitLab CI
umthwalo
Ukuqalisa i-Arhente yomthwalo
ngesicwangciso sovavanyo esikhethiweyo
kunye neeparamitha zokulayisha
Iinketho Zomsebenzisi
yokuqalisa
iarhente yomthwalo
Isicwangciso sovavanyo
Injongo yovavanyo
Izigodo zokuphumeza
iimvavanyo zomthwalo
Iilogi zenkqubo
Amandla otshintsho kwiimetriki zenjongo kunye nearhente yomthwalo
Baleka iiarhente
Ukuphunyezwa kwearhente
imithwalo yemibhalo yovavanyo
ngokwenxa ye
layisha iprofayile
Layisha i-Agent Interaction
ngenjongo yokuvavanya
Isicwangciso sovavanyo
Injongo yovavanyo
Iimpawu
Ukuqokelelwa kweelogi "ezikrwada".
ngexesha lovavanyo lomthwalo:
iirekhodi zomsebenzi we-arhente yomthwalo,
imeko yovavanyo ekujoliswe kulo
kunye neVM eqhuba iarhente
Izigodo zokuphumeza
iimvavanyo zomthwalo
Iilogi zenkqubo
Metrics
Ukuqokelela "ikrwada" imitha ngexesha lovavanyo
Utshintsho kwiimetriki zenjongo
kunye ne-arhente yomthwalo
Ingxelo: isigaba sokulungiselela ingxelo yovavanyo
Generator
Ukusetyenzwa kuqokelelwe
inkqubo yokulayisha kunye
inkqubo yokubeka iliso "ekrwada"
iimetrics kunye nelogi
Ukwenziwa kwengxelo kwi
ifom efundekayo yomntu
enokwenzeka ngezinto
abahlalutyi
Izigodo zokuphumeza
iimvavanyo zomthwalo
Iilogi zenkqubo
Utshintsho kwiimetriki
ekujoliswe kuyo kunye ne-arhente yomthwalo
Ilogs "ekrwada".
kwifomathi efanelekileyo
ukulayisha kwindawo yokugcina yangaphandle
Ingxelo yomthwalo omileyo,
efundekayo ngabantu
Shicilela
Ukupapashwa kwengxelo
malunga nomthwalo
uvavanyo lwangaphandle
inkonzo
Isetyenzwe "ekrwada"
logs ngendlela efanelekileyo
yokukhuphela ukuya ngaphandle
iindawo zokugcina
Igcinwe ngaphandle
iingxelo zokugcina kwi
umthwalo, ufanelekile
kuhlalutyo lwabantu
Ukudibanisa iMithombo yoMlayisho kwi-CI Template
Masiqhubele phambili kwinxalenye ebonakalayo. Ndifuna ukubonisa indlela kwiiprojekthi ezithile kwinkampani
Okokuqala, ngoncedo lweenjineli zethu ze-DevOps, senze iqela elizinikeleyo leearhente kwi-GitLab CI ukuqhuba iimvavanyo zomthwalo. Ukuze ungabaphambanisi kwiitemplates nabanye, njengamachibi endibano, songeze iithegi kwezi arhente,
Indlela yokufumana amandla afunekayo nge-hardware? Iimpawu zeearhente zomthwalo - inani elaneleyo le-vCPU, i-RAM kunye neDiski - ingabalwa ngokusekelwe kwinto yokuba i-Docker, i-Python (ye-Yandex.Tank), i-agent ye-GitLab CI, i-Java (ye-Apache JMeter) kufuneka isebenze kwi-arhente. . KwiJava phantsi kweJMeter, kuyacetyiswa ukuba usebenzise ubuncinci be-512 MB ye-RAM kwaye, njengomda ophezulu,
Ngaloo ndlela, ngokusekelwe kumava ethu, sincoma ukusebenzisa ubuncinane ii-vCPU ze-4, i-RAM ye-4 GB, i-60 GB SSD ye-agent yomthwalo. Ukugqithiswa kwekhadi lenethiwekhi kuchongwa ngokusekelwe kwiimfuno zeprofayili yomthwalo.
Ngokukodwa sisebenzisa imithombo emibini yomthwalo - iApache JMeter kunye neYandex.Tank docker imifanekiso.
Ukuze kube lula ukusetyenziswa ngaphakathi kwinkampani yethu, ukuze abavavanyi bakwazi ukutshintsha kwaye bongeze indalo, senze imifanekiso ye-docker yemithombo yomthwalo kwi-GitLab CI ngokupapashwa ngaphakathi.
Sithathe le fayile yedocker esisiseko yeYandex.Tank:
Dockerfile
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]
Kwaye ngeApache JMeter le:
Dockerfile
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]
Unokufunda indlela inkqubo yethu yokudibanisa eqhubekayo isebenza kwinqaku "
Itemplate kunye nombhobho
Umzekelo wethemplate yokuqhuba iimvavanyo zomthwalo uyafumaneka kwiprojekthi
Ithemplate ilula kakhulu kwaye ibonisa izigaba ezintathu zokuvavanya umthwalo ochazwe kumzobo ongentla: ukulungiselela, ukuvavanya, kunye nokushicilela iingxelo. Uxanduva loku
- Inqanaba
Lungiselela kufuneka isetyenziswe ukucwangcisa iithagethi zovavanyo okanye ukujonga ubukho bazo. Imekobume yemithombo yomthwalo ayifuni ukuqwalaselwa, yakhiwe kwangaphambili njengemifanekiso ye-docker kwaye ifakwe kwi-docker registry: cacisa nje inguqulelo efunwayo kwinqanaba loVavanyo. Kodwa unokubakha kwakhona kwaye wenze eyakho imifanekiso elungisiweyo. - Inqanaba
uvavanyo isetyenziselwa ukukhankanya umthombo womthwalo, qhuba iimvavanyo, kunye nogcino lobugcisa bovavanyo. Unokukhetha nawuphi na umthombo womthwalo: Yandex.Tank, Apache JMeter, eyakho, okanye zonke kunye. Ukukhubaza imithombo engeyomfuneko, vele uphawule okanye ucime umsebenzi. Iindawo zokungena kwimithombo yomthwalo:- Qalisa iiparamitha zeYandex.Tank zichazwe kwi.
/tests/yandextank.sh , - Iiparamitha zokuqalisa ze-Apache JMeter zichazwe kwifayile
./test/jmeter.sh .
Qaphela: Ithempleyithi yokumisela indibano isetyenziselwa ukuseta intsebenziswano kunye nenkqubo yeCI kwaye ayithethi ukubekwa kwengqiqo yovavanyo kuyo. Kwiimvavanyo, indawo yokungena icacisiwe, apho iskripthi solawulo se-bash sikhoyo. Indlela yokuqhuba iimvavanyo, ukuvelisa iingxelo, kunye neencwadi zeempendulo zovavanyo ngokwazo maziphunyezwe ziinjineli ze-QA. Kwidemo, kuyo yomibini imithombo yomthwalo, isicelo sephepha eliphambili leYandex sisetyenziswa njengolona vavanyo lulula. Izikripthi kunye neeparamitha zovavanyo zikuluhlu
./uvavanyo . - Qalisa iiparamitha zeYandex.Tank zichazwe kwi.
- Eqongeni
ingxelo kufuneka uchaze indlela yokupapasha iziphumo zovavanyo ezifunyenwe kwinqanaba loVavanyo kwiindawo zokugcina zangaphandle, umzekelo, kwiGitLab Pages okanye iinkqubo zokunika ingxelo ezizodwa. IGitLab Pages ifuna ukuba i-./public directory ingabi nanto kwaye iqulathe noko ifayile ye index.html emva kokuba uvavanyo lugqityiwe. Unokufunda malunga nee-nuances zenkonzo yeGitLab Pages.ikhonkco .Imizekelo yendlela yokuthumela ngaphandle idatha:
- ukusuka JMeter ukuya
Amaphepha eGitLab , - ukusuka Yandex.Tank ukuya
I-InfluxDB kunye neGrafana .
Ukuthumela imiyalelo yokuseta:
- I-HTML statics ngaphakathi
Amaphepha eGitLab , - ukuya kwi-InfluxDB kwaye emva koko
IGrafana .
- ukusuka JMeter ukuya
Kumzekelo wedemo, umbhobho oneemvavanyo zomthwalo kunye nemithombo emibini yomthwalo (unokukhubaza okungeyomfuneko) ijongeka ngolu hlobo:
I-Apache JMeter inokuvelisa ingxelo ye-HTML ngokwayo, ngoko kunenzuzo ngakumbi ukuyigcina kumaphepha eGitLab usebenzisa izixhobo eziqhelekileyo. Nantsi indlela ingxelo ye-Apache JMeter ejongeka ngayo:
Kumzekelo wedemo yeYandex.Tank, uya kubona kuphela
Isishwankathelo
Kwinqaku, ndathetha ngengcamango "yokuvavanya umthwalo njengenkonzo" (uvavanyo lomthwalo njengenkonzo). Ingcamango ephambili kukusebenzisa iziseko zamachibi esele ziqwalaselwe ii-arhente zomthwalo, imifanekiso yedocker yemithombo yomthwalo, iinkqubo zokunika ingxelo kunye nombhobho odibanisa kwi-GitLab CI ngokusekelwe kwitemplate elula .gitlab-ci.yml (umzekelo
PS Ndifuna ukubulela kakhulu kubalingane bam, uSergey Kurbanov kunye noNikolai Yusev, ngoncedo lobugcisa ngokuphunyezwa kombono wokuvavanya umthwalo njengenkonzo kwinkampani yethu.
umbhali:
umthombo: www.habr.com