Rimwe rematambudziko anowanzo sangana nevatengesi vezvigadzirwa zvema software akawanda ndeyekudzokororwa kwehunyanzvi hwemainjiniya - vanogadzira, vanoedza, uye vatariri vezvivakwa - pane chingangoita timu yese. Izvi zvinoshandawo kune anodhura mainjiniya - nyanzvi mumunda wekuongorora mutoro.
Panzvimbo pekuita basa ravo rakananga uye kushandisa ruzivo rwavo rwakasiyana kuvaka maitiro ekuyedza mitoro, sarudza nzira, yakakwana metrics uye nyora otomatiki zvinoenderana nemaprofaili emutoro, mainjiniya anowanzo tumira zvivakwa zvekuyedza kubva pakutanga, gadzirisa maturusi ekutakura, uye nekuanyudza. ivo pachavo muCI masisitimu, kumisikidza kutarisa uye kuburitswa kwemishumo.
Unogona kuwana mhinduro kune mamwe matambudziko esangano mukuyedza atinoshandisa paPositive Technologies mukati
Hunhu hwepfungwa
Pfungwa yekuyera mutoro sesevhisi inoreva kugona kubatanidza maturusi ekutakura Apache JMeter, Yandex.Tank uye neyako masisitimu mune inopokana inoenderera yekubatanidza sisitimu. Iyo demo ichave yeGitLab CI, asi misimboti yakajairika kune ese maCI masisitimu.
Kuyedzwa kwemutoro sesevhisi ibasa repakati rekuyedzwa kwemutoro. Bvunzo dzemutoro dzinoitwa mumadziva evamiriri akazvitsaurira, mhedzisiro inoburitswa otomatiki muGitLab Mapeji, Influx DB uye Grafana kana mumatest reporting system (TestRail, ReportPortal, nezvimwewo). Otomatiki uye kuyera kunoitwa zviri nyore sezvinobvira - nekuwedzera uye parametering yakajairika gitlab-ci.yml template muGitLab CI chirongwa.
Chakanakira nzira iyi ndechekuti iyo yese CI zvivakwa, zvinotakura zvinhu, docker mifananidzo yezvinobvamo, mapombi ekuyedza, uye mishumo yekushambadzira inochengetwa nedhipatimendi repakati otomatiki (DevOps mainjiniya), nepo mainjiniya ekuyedza anogona kutarisa kuedza kwavo pakuvandudza bvunzo. uye kuongorora mhedzisiro yavo, pasina kubata nenyaya dzezvivakwa.
Kuti tsananguro ive nyore, isu tichafunga kuti chinangwa chekushandisa kana sevha iri pasi pekuyedzwa yakatoiswa uye yakagadziriswa pachine nguva (otomatiki zvinyorwa muPython, SaltStack, Ansible, nezvimwe zvinogona kushandiswa pane izvi). Ipapo iyo pfungwa yese yekuyedzwa kwemutoro sevhisi inopinda mumatanho matatu: kugadzirira, kuedza, kubudiswa kwemishumo. Mamwe ruzivo padhiyagiramu (mifananidzo yese inodzvanywa):
Basic concepts uye tsananguro mukuyedzwa kwemutoro
Pakuita bvunzo dzekutakura, tinoedza kutevedzera
Load agent - a virtual muchina iyo application ichatangwa - the load source (Apache JMeter, Yandex.Tank kana self-written load module).
Kuedza chinangwa (chinangwa) - sevha kana application yakaiswa pane sevha inozoiswa pasi pekuremerwa.
Test scenario (test case) - seti yematanho akatemerwa: zviito zvemushandisi uye zvinotarisirwa kuita kune izvi zviito, ine yakagadziriswa network zvikumbiro uye mhinduro, zvichienderana neyakatsanangurwa paramita.
Mbiri kana chirongwa chekutakura (mbiri) - mukati
Test - chiitiko chine yakatarwa seti yemaparamita.
Chirongwa chekuyedza (yedzo-chirongwa) - seti yemiedzo uye nhoroondo yemutoro.
Testran (tesrun) - imwe iteration yekumhanyisa bvunzo imwe ine yakazara yakazara mitoro mamiriro uye mushumo wakagamuchirwa.
Network chikumbiro (chikumbiro) -Chikumbiro cheHTTP chakatumirwa kubva kumumiririri kune chinangwa.
Network mhinduro (mhinduro) - Mhinduro yeHTTP inotumirwa kubva pachinangwa kuenda kumumiririri.
HTTP mhinduro kodhi (HTTP mhinduro mamiriro) - yakajairwa mhinduro kodhi kubva kune application server.
Kutengeserana kutenderera kwakazara kwekukumbira-mhinduro. Kutengeserana kunoverengwa kubva pakutanga kwekutumira chikumbiro (chikumbiro) kusvika pakupera kwekugamuchira mhinduro (mhinduro).
Transaction mamiriro - kana zvaikwanisika kupedzisa kutenderera kwekukumbira-mhinduro. Kana pakange paine chikanganiso mukutenderera uku, saka kutengeserana kwese kunoonekwa sekusina kubudirira.
Nguva yekupindura (latency) - nguva kubva pakupera kwekutumira chikumbiro (chikumbiro) kusvika pakutanga kwekugamuchira mhinduro (mhinduro).
Rodha metrics - hunhu hwebasa rakaremerwa uye mumiriri wemutoro akatemerwa mukuita kwekuyedzwa kwemutoro.
Basic metrics yekuyera mutoro paramita
Zvimwe zvezvinonyanya kushandiswa uye zvinokurudzirwa mune nzira
Metrics yemumiririri wekutakura
Metrics eiyo inotangwa system kana application iri kuedzwa pasi pemutoro
Nhamba ye vCPU uye ndangariro RAM,
dhisiki - "simbi" maitiro emumiririri wemutoro
CPU, Memory, Disk kushandiswa -Masimba eCPU, ndangariro uye dhisiki kurodha
mukuedza. Kazhinji kuyerwa sechikamu che
huwandu huripo hunokosha
network throughput (pane mutoro mumiririri) - throughput
network interface pane server,
uko mumiriri wekutakura akaiswa.
Kazhinji kuyerwa nemabhayithi pasekondi (bps)
network throughput(pane chinangwa) - network interface bandwidth
pane yakanangwa server. Kazhinji kuyerwa mumabhayithi pasekondi (bps)
Vanoshandisa Virtual- nhamba yevashandisi vechokwadi,
kushandisa mitoro mamiriro uye
kutevedzera zviito zvemushandisi chaiwo
Virtual vashandisi mamiriro, Yakapfuura/Yakundikana/Total β nhamba yekubudirira uye
masitadhi asina kubudirira evashandisi vechokwadi
kune mamiriro ekutakura, pamwe nenhamba yavo yese.
Zvinowanzotarisirwa kuti vese vashandisi vakakwanisa kupedzisa
mabasa ako ese akatsanangurwa muprofile yekutakura.
Chero kukanganisa kuchareva kuti mushandisi chaiye haakwanise
gadzirisa dambudziko rako paunenge uchishanda nehurongwa
Zvikumbiro pasekondi (miniti)- nhamba yezvikumbiro zvetiweki pasekondi (kana miniti).
Hunhu hwakakosha hwemumiriri wemutoro ndeyekuti zvingani zvikumbiro zvaanogona kuunza.
Muchokwadi, uku kutevedzera kwekuwana iyo application nevashandisi chaiwo
Mhinduro pasekondi (miniti)
- nhamba yemhinduro dzetiweki pasekondi (kana miniti).
Hunhu hwakakosha hwebasa rinotangwa: yakawanda sei
gadzira uye tumira mhinduro kumibvunzo nayo
loading agent
HTTP mhinduro mamiriro- nhamba yemakodhi emhinduro akasiyana
kubva kuseva yekushandisa yakagamuchirwa nemumiririri wemutoro.
Semuenzaniso, 200 OK zvinoreva kufona kwakabudirira,
uye 404 - kuti sosi haina kuwanikwa
Latency (nguva yekupindura) - nguva kubva kumagumo
kutumira chikumbiro (chikumbiro) usati watanga kugamuchira mhinduro (mhinduro).
Kazhinji kuyerwa mumamilliseconds (ms)
Transaction mhinduro nguva- nguva yekutengeserana kumwe kuzere,
kupera kwechikumbiro-mhinduro kutenderera.
Ino ndiyo nguva kubva pakutanga kwekutumira chikumbiro (chikumbiro)
kusvika pakupera kwekugamuchira mhinduro (mhinduro).
Nguva yekutengeserana inogona kuyerwa mumasekonzi (kana maminetsi)
nenzira dzakawanda: funga zvishoma,
yakawanda, avhareji uye, semuenzaniso, iyo 90th percentile.
Izvo zvishoma uye zvakanyanya kuverenga zvakanyanya
hurongwa hwekuita chimiro.
Iyo makumi mapfumbamwe muzana muzana ndiyo inonyanya kushandiswa,
sezvainoratidza vazhinji vevashandisi,
kushanda zvakanaka pachikumbaridzo chekushanda kwehurongwa
Transactions pasekondi (miniti) - nhamba yakakwana
kutengeserana pasekondi (miniti),
ndiko kuti, yakawanda sei chikumbiro chakakwanisa kugamuchira uye
gadzirisa zvikumbiro uye kupa mhinduro.
Muchokwadi, uku ndiko kubuda kweiyo system
Transaction mamiriro , Yakapfuura / Yakundikana / Zvose - nhamba
zvakabudirira, hazvina kubudirira uye nhamba yese yekutengeserana.
Kune vashandisi chaivo hazvina kubudirira
kutengeserana kuchareva chaizvoizvo
kusakwanisa kushanda nehurongwa huri pasi pemutoro
Rodha Kuedza Schematic Dhiagiramu
Pfungwa yekuyedzwa kwemutoro iri nyore uye ine matanho makuru matatu, andatotaura kare: Gadzirira-Test-Report, ndiko kuti, kugadzirira zvibodzwa zvekuyedza uye kuseta ma paramita ezvitubu zvemitoro, wobva waita bvunzo dzemutoro uye, pakupera, kugadzira uye kuburitsa mushumo webvunzo.
Schematic notes:
- QA.Tester inyanzvi mukuyedza mutoro,
- Target ndiyo chinangwa chekushandisa chaunoda kuziva maitiro ayo ari pasi pemutoro.
Classifier yemasangano, nhanho uye matanho ari mudhayagiramu
Matanho nematanho
Chii chiri kuitika
Chii chiri pamusuwo
Chii chinobuda
Gadzirira: gadziriro yegadziriro yekuedzwa
LoadParameters
Kugadzika uye kutanga
mushandisi
load parameters,
kusarudzwa kwema metrics uye
kugadzirira chirongwa chekuedza
(profile yekutakura)
Tsika sarudzo dze
load agent kutanga
Test plan
Chinangwa chekuedza
VM
Cloud deployment
virtual muchina ne
zvinodiwa maitiro
VM marongero emumiririri wemutoro
Automation zvinyorwa zve
VM kugadzira
VM yakagadziridzwa mukati
gore
Send
OS setup uye kugadzirira
nharaunda ye
load agent basa
Environment settings for
load agent
Automation zvinyorwa zve
zvakatipoteredza zvigadziriso
Yakagadzirirwa nzvimbo:
OS, masevhisi uye maapplication,
zvinodiwa pabasa
load agent
LoadAgents
Kuisa, kugadzirisa uye parameterization
loading agent.
Kana kurodha docker mufananidzo kubva
preconfigured load source
Rodha source docker mufananidzo
(YAT, JM kana kuzvinyora-yako)
Settings
load agent
Gadzirisa uye wakagadzirira
kushanda mutoro agent
Muedzo: nhanho yekuitwa kwekuyedzwa kwemutoro. Zvitubu zvinoremerwa vamiririri vakaiswa mumadziva emumiririri akazvitsaurira eGitLab CI
mutoro
Kutanga Mumiririri Wemutoro
nechirongwa chebvunzo chakasarudzwa
uye load parameters
Mushandisi Sarudzo
yekutanga
load agent
Test plan
Chinangwa chekuedza
Execution logs
mutoro miedzo
System logs
Dynamics yekuchinja mune chinangwa metrics uye mutoro mumiririri
Run Agents
Agent Execution
mizhinji yebvunzo zvinyorwa
zvinoenderana ne
load profile
Load Agent Interaction
nechinangwa chekuedza
Test plan
Chinangwa chekuedza
Logs
Kuunganidzwa kwe "mbishi" matanda
panguva yekuyedzwa kwekutakura:
rekodhi agent chiitiko marekodhi,
mamiriro ebvunzo chinangwa
uye VM inomhanyisa mumiriri
Execution logs
mutoro miedzo
System logs
Metrics
Kuunganidza "mbishi" metrics panguva yekuyedzwa
Dynamics yekuchinja mune chinangwa metrics
uye load agent
Chirevo: nhanho yekugadzirira mushumo
Generator
Kugadziriswa kwaunganidzwa
loading system uye
monitoring system "raw"
metrics uye matanda
Kuumbwa kweshumo mu
chimiro chemunhu chinoverengwa
zvinogoneka nezvinhu
vaongorori
Execution logs
mutoro miedzo
System logs
Dynamics ekuchinja kwemetrics
chinangwa uye mutoro mumiririri
Yakagadzirwa "mbishi" matanda
muchimiro chakakodzera
kurodha kune kunze kwekuchengetedza
Static load report,
zvinoverengwa nevanhu
Publish
Kuburitswa kwemushumo
nezve mutoro
kuedza kunze
sevhisi
Yakagadzirwa "raw"
matanda mufomati yakakodzera
yekuburutsa kuenda kunze
repositories
Kuchengetwa kunze
mishumo yekuchengetedza pa
mutoro, wakakodzera
yekuongorora kwevanhu
Kubatanidza Mitoro Yekutakura muCI Template
Ngatienderere mberi kune chikamu chinoshanda. Ndinoda kuratidza kuti sei pane mamwe mapurojekiti mukambani
Kutanga, nerubatsiro rwevainjiniya vedu veDevOps, takagadzira dziva rakatsaurirwa revamiririri muGitLab CI kuti tiite bvunzo dzemutoro. Kuti tisavavhiringidze mumatemplate nevamwe, senge madziva egungano, takawedzera ma tag kune vamiririri ava,
Nzira yekuziva sei simba rinodiwa nehardware? Hunhu hwevanotakura zvinhu - nhamba yakakwana yevCPU, RAM uye Disk - inogona kuverengerwa zvichienderana nekuti Docker, Python (yeYandex.Tank), GitLab CI mumiriri, Java (yeApache JMeter) inofanirwa kunge ichimhanya pamumiririri. . YeJava pasi peJMeter, inokurudzirwawo kushandisa hushoma hwe512 MB ye RAM uye, semuganho wepamusoro,
Saka, zvichibva pane zvakaitika kwatiri, tinokurudzira kushandisa kanenge 4 vCPUs, 4 GB RAM, 60 GB SSD yevanotakura zvinhu. Kubuda kwekadhi retiweki kunotemerwa zvichienderana nezvinodiwa zveprofile yekutakura.
Isu tinonyanya kushandisa maviri ekutakura zvinyorwa - Apache JMeter uye Yandex.Tank docker mifananidzo.
Kuti zvive nyore kushandisa mukati mekambani yedu, kuitira kugona kwevayedzi ivo pachavo kuchinja uye kuwedzera nharaunda, isu takagadzira madhizaini emifananidzo yezvinyorwa zvinotakura paGitLab CI nekudhindwa kune yemukati.
Takatora iyi yakakosha docker faira yeYandex.Tank:
Dockerfile
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]
Uye yeApache JMeter iyi:
Dockerfile
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]
Unogona kuverenga kuti yedu inoenderera yekubatanidza system inoshanda sei muchinyorwa "
Template uye pipeline
Muenzaniso wetemplate yekuitisa bvunzo dzemutoro unowanikwa mupurojekiti
Iyo template iri nyore kwazvo uye inoratidza matanho matatu ekuedzwa kwemutoro anotsanangurwa mudhayagiramu iri pamusoro: kugadzirira, kuyedza, uye kuburitsa mishumo. Zvikonzero izvi
- Chikamu
Gadzirira inofanira kushandiswa kufanogadzirira bvunzo zvinangwa kana kutarisa kuwanikwa kwadzo. Iyo nharaunda yezvitubu zvemitoro haidi kugadziridzwa, inofanovakwa semifananidzo yedocker uye yakatumirwa mune docker registry: ingo tsanangura yaunoda vhezheni padanho reMuedzo. Asi iwe unogona kuvavaka patsva uye kugadzira yako yakagadziridzwa mifananidzo. - Chikamu
bvunzo rinoshandiswa kutsanangura kwainotakura, mhanyisa bvunzo, uye chitoro chekuyedza artifacts. Unogona kusarudza chero sosi yekutakura: Yandex.Tank, Apache JMeter, yako, kana zvese pamwe chete. Kudzima zvisina basa masosi, ingo taura kana kudzima basa racho. Mapoinzi ekupinda kune zvinotakura zvinhu:- Tanga parameters yeYandex.Tank inotsanangurwa mu.
/tess/yandextank.sh , - Apache JMeter yekutanga paramita inotsanangurwa mufaira
./tests/jmeter.sh .
Ongorora: Iyo dhizaini yekumisikidza template inoshandiswa kumisikidza kudyidzana neCI system uye haireve kuiswa kwebvunzo logic mairi. Kune bvunzo, nzvimbo yekupinda inotsanangurwa, panowanikwa control bash script. Nzira yekumhanyisa bvunzo, kugadzira mishumo, uye zvinyorwa zvebvunzo pachazvo zvinofanirwa kuitwa nemainjiniya eQA. Mudemo, kune ese ari maviri ekutakura masosi, iyo Yandex main peji chikumbiro inoshandiswa seyeyedzo yakapusa. Zvinyorwa uye test parameters zviri mudhairekitori
./tests . - Tanga parameters yeYandex.Tank inotsanangurwa mu.
- Padariro
ripoti iwe unofanirwa kutsanangura nzira yekushambadza mibairo yebvunzo yakawanikwa padanho reMuedzo kune ekunze storages, semuenzaniso, kuGitLab Mapeji kana akakosha ekubika masisitimu. GitLab Mapeji inoda kuti ./public dhairekitori rive risina chinhu uye rive neinenge index.html faira mushure mekunge bvunzo dzapera. Iwe unogona kuverenga nezve nuances yeGitLab Mapeji sevhisi.batanidzo .Mienzaniso yekutumira kunze data:
- kubva kuJMeter kuenda
GitLab Mapeji , - kubva kuYandex.Tank kuenda
InfluxDB uye Grafana .
Kuisa mirairo yekumisikidza:
- HTML statics mukati
GitLab Mapeji , - kuInfluxDB uyezve to
grafana .
- kubva kuJMeter kuenda
Mumuenzaniso wedemo, pombi ine miyedzo yemutoro uye maviri emutoro masosi (unogona kudzima iyo isingakoshi) inoita seizvi:
Apache JMeter inogona kugadzira HTML report pachayo, saka zvine pundutso kuichengeta muGitLab Mapeji uchishandisa zvakajairwa maturusi. Aya ndiwo maitiro eApache JMeter chirevo chinotaridzika senge:
Mumuenzaniso wedemo weYandex.Tank, iwe uchaona chete
Summary
Muchinyorwa chacho, ndakataura nezve pfungwa ye "kuyedzwa kwemutoro sevhisi" (kuyedzwa kwemutoro sevhisi). Pfungwa huru ndeyekushandisa magadzirirwo emadziva akagadzirirwa kare evamiririri vekutakura zvinhu, docker mifananidzo yezvinotakura zvinhu, masisitimu ekuzivisa uye pombi inozvibatanidza muGitLab CI zvichibva pane nyore .gitlab-ci.yml template (muenzaniso
PS Ndinoda kutaura kuvonga kukuru kune vandinoshanda navo, Sergey Kurbanov naNikolai Yusev, nerubatsiro rwehunyanzvi nekushandiswa kweiyo pfungwa yekuyera mitoro sebasa mukambani yedu.
Munyori:
Source: www.habr.com