Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Ọkan ninu awọn iṣoro ti awọn olutaja sọfitiwia ọja-ọja lọpọlọpọ nigbagbogbo dojuko ni ṣiṣiṣẹpọ ti awọn agbara ti awọn onimọ-ẹrọ - awọn olupilẹṣẹ, awọn oludanwo, ati awọn alabojuto amayederun - lori fere gbogbo ẹgbẹ. Eyi tun kan awọn onimọ-ẹrọ gbowolori - awọn alamọja ni aaye ti idanwo fifuye.

Dipo ṣiṣe awọn iṣẹ taara wọn ati lilo iriri alailẹgbẹ wọn lati kọ ilana idanwo fifuye kan, yan ilana kan, awọn metiriki ti o dara julọ ati kọ awọn adaṣe adaṣe ni ibamu pẹlu awọn profaili fifuye, awọn onimọ-ẹrọ nigbagbogbo ni lati ran awọn amayederun idanwo lati ibere, tunto awọn irinṣẹ fifuye, ati fi sii wọn. ara wọn ni CI awọn ọna šiše, ṣeto soke monitoring ati atejade ti awọn iroyin.

O le wa awọn solusan si diẹ ninu awọn iṣoro eleto ni idanwo ti a lo ni Awọn Imọ-ẹrọ Rere ni miiran article. Ati ninu ọkan yii, Emi yoo sọrọ nipa iṣeeṣe ti iṣakojọpọ awọn idanwo fifuye sinu opo gigun ti epo CI ti o wọpọ nipa lilo ero ti “idanwo fifuye bi iṣẹ kan” (idanwo fifuye bi iṣẹ kan). Iwọ yoo kọ ẹkọ bii ati iru awọn aworan docker ti awọn orisun fifuye le ṣee lo ninu opo gigun ti epo CI; Bii o ṣe le sopọ awọn orisun fifuye si iṣẹ akanṣe CI rẹ nipa lilo awoṣe kikọ; kini opo gigun ti demo dabi fun ṣiṣe awọn idanwo fifuye ati titẹjade awọn abajade. Nkan naa le wulo fun awọn onimọ-ẹrọ idanwo sọfitiwia ati awọn onimọ-ẹrọ adaṣe ni CI ti wọn n ronu nipa faaji ti eto fifuye wọn.

Awọn lodi ti awọn Erongba

Imọye ti idanwo fifuye bi iṣẹ kan tumọ si agbara lati ṣepọ awọn irinṣẹ fifuye Apache JMeter, Yandex.Tank ati awọn ilana tirẹ sinu eto isọdọkan lemọlemọfún lainidii. demo naa yoo jẹ fun GitLab CI, ṣugbọn awọn ipilẹ jẹ wọpọ si gbogbo awọn eto CI.

Idanwo fifuye bi iṣẹ jẹ iṣẹ aarin fun idanwo fifuye. Awọn idanwo fifuye ni a ṣiṣẹ ni awọn adagun-itumọ aṣoju, awọn abajade ni a tẹjade laifọwọyi ni Awọn oju-iwe GitLab, Influx DB ati Grafana tabi ni awọn eto ijabọ idanwo (TestRail, ReportPortal, bbl). Adáṣiṣẹ ati igbelosoke jẹ imuse ni irọrun bi o ti ṣee ṣe - nipa fifi kun ati parameterizing awoṣe gitlab-ci.yml deede ninu iṣẹ akanṣe GitLab CI.

Anfani ti ọna yii ni pe gbogbo awọn amayederun CI, awọn aṣoju fifuye, awọn aworan docker ti awọn orisun fifuye, awọn opo gigun ti idanwo, ati awọn ijabọ atẹjade jẹ itọju nipasẹ ẹka adaṣe ti aarin (awọn onimọ-ẹrọ DevOps), lakoko ti awọn onimọ-ẹrọ idanwo fifuye le dojukọ awọn akitiyan wọn lori idagbasoke idanwo. ati igbekale ti won esi, lai awọn olugbagbọ pẹlu amayederun awon oran.

Fun ayedero ti apejuwe, a yoo ro pe ohun elo ibi-afẹde tabi olupin labẹ idanwo ti tẹlẹ ti gbejade ati tunto ni ilosiwaju (awọn iwe afọwọkọ adaṣe ni Python, SaltStack, Ansible, bbl le ṣee lo fun eyi). Lẹhinna gbogbo ero ti idanwo fifuye bi iṣẹ kan ni ibamu si awọn ipele mẹta: igbaradi, igbeyewo, atejade iroyin. Awọn alaye diẹ sii lori aworan atọka (gbogbo awọn aworan jẹ titẹ):

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Awọn imọran ipilẹ ati awọn asọye ni idanwo fifuye

Nigbati o ba n ṣe awọn idanwo fifuye, a gbiyanju lati faramọ ISTQB awọn ajohunše ati ilana, lo awọn ọrọ-ọrọ ti o yẹ ati awọn metiriki ti a ṣeduro. Emi yoo fun atokọ kukuru ti awọn imọran akọkọ ati awọn asọye ni idanwo fifuye.

Aṣoju fifuye - ẹrọ foju kan lori eyiti ohun elo naa yoo ṣe ifilọlẹ - orisun fifuye (Apache JMeter, Yandex.Tank tabi module fifuye kikọ ti ara ẹni).

Ibi-afẹde idanwo (afojusun) - olupin tabi ohun elo ti a fi sori ẹrọ ti yoo jẹ koko ọrọ si fifuye.

Oju iṣẹlẹ idanwo (ọran idanwo) - Eto awọn igbesẹ parameterized: awọn iṣe olumulo ati awọn aati ti a nireti si awọn iṣe wọnyi, pẹlu awọn ibeere nẹtiwọọki ti o wa titi ati awọn idahun, da lori awọn aye ti a sọ.

Profaili tabi ero fifuye (profaili) - ninu Ilana ISTQB (Abala 4.2.4, p. 43) awọn profaili fifuye n ṣalaye awọn metiriki ti o ṣe pataki fun idanwo kan pato ati awọn aṣayan fun yiyipada awọn iwọn fifuye lakoko idanwo naa. O le wo awọn apẹẹrẹ ti awọn profaili ninu eeya naa.

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Idanwo - iwe afọwọkọ pẹlu eto ti a ti pinnu tẹlẹ.

Eto idanwo (eto-igbeyewo) - ṣeto awọn idanwo ati profaili fifuye kan.

Testran (igbeyewo) - Aṣetunṣe kan ti ṣiṣe idanwo kan pẹlu oju iṣẹlẹ fifuye ti o ṣiṣẹ ni kikun ati ijabọ ti o gba.

Ìbéèrè nẹtiwọki (ìbéèrè) - Ibeere HTTP ti a firanṣẹ lati ọdọ oluranlowo si ibi-afẹde kan.

Idahun nẹtiwọki (idahun) - Idahun HTTP ti a firanṣẹ lati ibi-afẹde si aṣoju.
Koodu esi HTTP (ipo awọn idahun HTTP) - koodu esi boṣewa lati olupin ohun elo.
Idunadura kan jẹ ipari-idahun ibeere pipe. Iṣowo kan ni a ka lati ibẹrẹ ti fifiranṣẹ ibeere (ibeere) si ipari ti gbigba esi (idahun).

Ipo iṣowo - boya o ṣee ṣe lati pari ipari-idahun ibeere. Ti aṣiṣe eyikeyi ba wa ninu ọmọ yii, lẹhinna gbogbo idunadura naa ni a ka pe ko ni aṣeyọri.

Àkókò ìdáhùn (láìsí) - akoko lati opin fifiranṣẹ ibeere kan (ibeere) si ibẹrẹ ti gbigba esi (idahun).

Awọn metiriki fifuye - awọn abuda ti iṣẹ ti kojọpọ ati aṣoju fifuye ti a pinnu ninu ilana idanwo fifuye.

Awọn metiriki ipilẹ fun wiwọn awọn aye fifuye

Diẹ ninu awọn lilo ti o wọpọ julọ ati iṣeduro ni ilana ISTQB (P. 36, 52) awọn metiriki ti han ninu tabili ni isalẹ. Awọn metiriki ti o jọra fun aṣoju ati ibi-afẹde ni a ṣe akojọ lori laini kanna.

Metiriki fun awọn fifuye oluranlowo
Awọn wiwọn ti eto ibi-afẹde tabi ohun elo ni idanwo labẹ ẹru

Nọmba ti  vCPU ati iranti Ramu,
disk - "irin" abuda kan ti fifuye oluranlowo
Sipiyu, Iranti, Disk lilo - dainamiki ti Sipiyu, iranti ati disk ikojọpọ
ninu ilana idanwo. Nigbagbogbo wọn bi ogorun kan ti
o pọju wa iye

nẹtiwọki losi (lori fifuye oluranlowo) - losi
wiwo nẹtiwọki lori olupin,
ibi ti awọn fifuye oluranlowo ti fi sori ẹrọ.
Nigbagbogbo wọn wọn ni awọn baiti fun iṣẹju kan (bps)
nẹtiwọki losi(lori afojusun) - bandiwidi ni wiwo nẹtiwọki
lori olupin afojusun. Nigbagbogbo wọn wọn ni awọn baiti fun iṣẹju kan (bps)

Awọn olumulo foju- nọmba awọn olumulo foju,
imuse fifuye awọn oju iṣẹlẹ ati
fara wé gidi olumulo išë
Ipo awọn olumulo foju, Ti kọja / kuna / Lapapọ - nọmba ti aṣeyọri ati
awọn ipo ti ko ni aṣeyọri ti awọn olumulo foju
fun awọn oju iṣẹlẹ fifuye, bakanna bi nọmba lapapọ wọn.

O ti wa ni gbogbo o ti ṣe yẹ wipe gbogbo awọn olumulo wà anfani lati pari
gbogbo awọn iṣẹ-ṣiṣe rẹ pato ninu profaili fifuye.
Eyikeyi aṣiṣe yoo tumọ si pe olumulo gidi kii yoo ni anfani lati
yanju isoro rẹ nigba ṣiṣẹ pẹlu awọn eto

Awọn ibeere fun iṣẹju-aaya (iṣẹju)- nọmba awọn ibeere nẹtiwọọki fun iṣẹju kan (tabi iṣẹju).

Ẹya pataki ti aṣoju fifuye ni iye awọn ibeere ti o le ṣe ipilẹṣẹ.
Ni otitọ, eyi jẹ apẹẹrẹ ti iraye si ohun elo nipasẹ awọn olumulo foju
Awọn idahun fun iṣẹju-aaya (iṣẹju)
- nọmba awọn idahun nẹtiwọki fun iṣẹju kan (tabi iṣẹju).

Ẹya pataki ti iṣẹ ibi-afẹde: melo
ṣe ina ati firanṣẹ awọn idahun si awọn ibeere pẹlu
ikojọpọ oluranlowo

HTTP esi ipo- nọmba ti o yatọ si esi koodu
lati olupin ohun elo ti o gba nipasẹ aṣoju fifuye.
Fun apẹẹrẹ, 200 OK tumọ si ipe aṣeyọri,
ati 404 - pe a ko ri orisun naa

lairi (akoko idahun) - akoko lati opin
fifiranṣẹ ibeere (ibeere) ṣaaju ki o to bẹrẹ lati gba esi (idahun).
Nigbagbogbo wọn wọn ni milliseconds (ms)

Idunadura esi akoko- akoko ti iṣowo ni kikun,
ipari ti ibeere-idahun ọmọ.
Eyi ni akoko lati ibẹrẹ ti fifiranṣẹ ibeere (ibeere)
titi ipari ti gbigba esi (idahun).

Akoko iṣowo le ṣe iwọn ni iṣẹju-aaya (tabi iṣẹju)
ni awọn ọna pupọ: ro o kere julọ,
o pọju, apapọ ati, fun apẹẹrẹ, awọn 90th ogorun.
Awọn kika ti o kere julọ ati ti o pọju jẹ iwọn
ipo iṣẹ eto.
Ìpín ọgọ́rùn-ún mẹ́sàn-án ni èyí tí a sábà máa ń lò,
bi o ti fihan julọ ti awọn olumulo,
ni itunu ti n ṣiṣẹ ni ala ti iṣẹ ṣiṣe eto

Awọn iṣowo ni iṣẹju-aaya (iṣẹju) - awọn nọmba ti pipe
awọn iṣowo fun iṣẹju-aaya (iṣẹju),
ti o ni, bi o Elo awọn ohun elo je anfani lati gba ati
ilana ibeere ati oro ti şe.
Ni otitọ, eyi ni igbasilẹ ti eto naa

Ipo iṣowo , Ti kọja / kuna / Lapapọ - nọmba
aseyori, yanju ati awọn lapapọ nọmba ti lẹkọ.

Fun awọn olumulo gidi ko ni aṣeyọri
idunadura naa yoo tumọ si gangan
ailagbara lati ṣiṣẹ pẹlu awọn eto labẹ fifuye

Fifuye Idanwo Sikematiki aworan atọka

Imọye ti idanwo fifuye jẹ rọrun pupọ ati pe o ni awọn ipele akọkọ mẹta, eyiti Mo ti mẹnuba tẹlẹ: Mura-Igbeyewo-Iroyin, iyẹn ni, ngbaradi awọn ibi-afẹde idanwo ati ṣeto awọn ipilẹ fun awọn orisun fifuye, lẹhinna ṣiṣe awọn idanwo fifuye ati, ni ipari, ti ipilẹṣẹ ati titẹjade ijabọ idanwo kan.

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Awọn akọsilẹ eto:

  • QA.Tester jẹ amoye ni idanwo fifuye,
  • Àfojúsùn jẹ ohun elo ibi-afẹde fun eyiti o fẹ lati mọ ihuwasi rẹ labẹ ẹru.

Classifier ti awọn nkan, awọn ipele ati awọn igbesẹ ninu aworan atọka

Awọn ipele ati awọn igbesẹ
Kilo n ṣẹlẹ
Kini ni ẹnu-ọna
Kini abajade

Mura: ipele igbaradi fun idanwo

LoadParameters
Eto ati ibẹrẹ
olumulo
awọn paramita fifuye,
wun ti metiriki ati
igbaradi ètò igbeyewo
(profaili fifuye)
Awọn aṣayan aṣa fun
ibẹrẹ oluranlowo fifuye
Eto idanwo
Idi ti igbeyewo

VM
Awọsanma imuṣiṣẹ
foju ẹrọ pẹlu
ti a beere abuda
VM eto fun fifuye oluranlowo
Awọn iwe afọwọkọ adaṣe fun
VM ẹda
VM tunto ni
awọsanma

Firanṣẹ
OS setup ati igbaradi
ayika fun
fifuye oluranlowo iṣẹ
Awọn eto ayika fun
fifuye oluranlowo
Awọn iwe afọwọkọ adaṣe fun
awọn eto ayika
Ayika ti a ti pese sile:
OS, awọn iṣẹ ati awọn ohun elo,
pataki fun iṣẹ
fifuye oluranlowo

LoadAgents
Fifi sori, iṣeto ni ati parameterization
ikojọpọ oluranlowo.
Tabi gbigba aworan docker lati
orisun fifuye ti a ti ṣeto tẹlẹ
Fifuye orisun docker aworan
(YAT, JM tabi ilana ti ara ẹni)
Ètò
fifuye oluranlowo
Ṣeto ati setan
lati sise fifuye oluranlowo

Idanwo: ipele ti ipaniyan ti awọn idanwo fifuye. Awọn orisun jẹ awọn aṣoju fifuye ti a fi ranṣẹ si awọn adagun-itumọ ti iyasọtọ fun GitLab CI

fifuye
Bibẹrẹ Aṣoju fifuye
pẹlu ti a ti yan igbeyewo ètò
ati fifuye sile
Awọn aṣayan olumulo
fun ibẹrẹ
fifuye oluranlowo
Eto idanwo
Idi ti igbeyewo
Awọn akọọlẹ ipaniyan
fifuye igbeyewo
Awọn akọọlẹ eto
Yiyi ti awọn ayipada ninu awọn metiriki ibi-afẹde ati aṣoju fifuye

Ṣiṣe Awọn Aṣoju
Ipaniyan Aṣoju
èyà ti igbeyewo iwe afọwọkọ
ni ibamu pẹlu
fifuye profaili
Fifuye Agent Ibaṣepọ
fun idi ti igbeyewo
Eto idanwo
Idi ti igbeyewo

àkọọlẹ
Gbigba ti "aise" àkọọlẹ
lakoko idanwo fifuye:
awọn igbasilẹ iṣẹ aṣoju fifuye,
ipinle ti afojusun igbeyewo
ati VM nṣiṣẹ oluranlowo

Awọn akọọlẹ ipaniyan
fifuye igbeyewo
Awọn akọọlẹ eto

metiriki
Gbigba awọn metiriki “aise” lakoko idanwo

Yiyi ti awọn ayipada ninu awọn metiriki ibi-afẹde
ati fifuye oluranlowo

Iroyin: ipele igbaradi iroyin igbeyewo

monomono
Ilana ti a gba
ikojọpọ eto ati
eto ibojuwo "aise"
metiriki ati awọn àkọọlẹ
Ibiyi ti a Iroyin ni
eniyan ṣeékà fọọmu
ṣee ṣe pẹlu awọn eroja
atunnkanka
Awọn akọọlẹ ipaniyan
fifuye igbeyewo
Awọn akọọlẹ eto
Awọn iyipada ti awọn metiriki
afojusun ati fifuye oluranlowo
Ilana "aise" àkọọlẹ
ni a kika dara fun
ìrùsókè si ita ipamọ
Iroyin fifuye aimi,
eniyan-ṣeékà

jade
Atejade ti iroyin
nipa fifuye
igbeyewo ni ita
iṣẹ
Ti ṣe ilana "aise"
àkọọlẹ ni a dara kika
fun unloading si ita
awọn ibi ipamọ
Ti fipamọ ni ita
ipamọ iroyin lori
fifuye, dara
fun eda eniyan onínọmbà

Nsopọ awọn orisun fifuye ni awoṣe CI

Jẹ ki a lọ si apakan ti o wulo. Mo fẹ lati fihan bi lori diẹ ninu awọn iṣẹ akanṣe ni ile-iṣẹ naa Awọn Imọ-ẹrọ Rere a ti ṣe imuse imọran ti idanwo fifuye bi iṣẹ kan.

Ni akọkọ, pẹlu iranlọwọ ti awọn onimọ-ẹrọ DevOps wa, a ṣẹda adagun-igbẹhin ti awọn aṣoju ni GitLab CI lati ṣiṣe awọn idanwo fifuye. Ni ibere ki o má ba daamu wọn ni awọn awoṣe pẹlu awọn miiran, gẹgẹbi awọn adagun apejọ, a ṣe afikun awọn afi si awọn aṣoju wọnyi, afi: fifuye. O le lo awọn afi oye miiran. Wọn beere nigba ìforúkọsílẹ GitLab CI asare.

Bii o ṣe le wa agbara ti a beere nipasẹ ohun elo? Awọn abuda ti awọn aṣoju fifuye - nọmba to ti vCPU, Ramu ati Disk - le ṣe iṣiro da lori otitọ pe Docker, Python (fun Yandex.Tank), aṣoju GitLab CI, Java (fun Apache JMeter) yẹ ki o ṣiṣẹ lori aṣoju naa. . Fun Java labẹ JMeter, o tun ṣeduro lati lo o kere ju 512 MB ti Ramu ati, bi opin oke, 80% iranti ti o wa.

Nitorinaa, da lori iriri wa, a ṣeduro lilo o kere ju 4 vCPUs, 4 GB Ramu, 60 GB SSD fun awọn aṣoju fifuye. Imudani ti kaadi nẹtiwọki ti pinnu da lori awọn ibeere ti profaili fifuye.

A lo awọn orisun fifuye meji - Apache JMeter ati awọn aworan docker Yandex.Tank.

Yandex.Tank jẹ ohun elo orisun ṣiṣi lati Yandex fun idanwo fifuye. Itumọ alapọju rẹ da lori iṣẹ ṣiṣe giga ti Phantom asynchronous lilu orisun HTTP olupilẹṣẹ. Ojò naa ni ibojuwo ti a ṣe sinu ti awọn orisun ti olupin labẹ idanwo nipasẹ ilana SSH, le da idanwo duro laifọwọyi labẹ awọn ipo pàtó kan, le ṣafihan awọn abajade mejeeji ni console ati ni irisi awọn aworan, o le sopọ awọn modulu rẹ. si o lati faagun iṣẹ-ṣiṣe. Nipa ọna, a lo Tanki nigbati ko sibẹsibẹ jẹ akọkọ. Ninu nkan naa "Yandex.Tank ati adaṣiṣẹ idanwo fifuye»o le ka itan ti bii a ṣe ṣe idanwo fifuye pẹlu rẹ ni ọdun 2013 Ogiriina ohun elo PT jẹ ọkan ninu awọn ọja ile-iṣẹ wa.

Afun JMeter jẹ irinṣẹ idanwo fifuye orisun ṣiṣi lati Apache. O le ṣee lo ni deede daradara fun idanwo mejeeji aimi ati awọn ohun elo wẹẹbu ti o ni agbara. JMeter ṣe atilẹyin nọmba nla ti awọn ilana ati awọn ọna lati ṣe ajọṣepọ pẹlu awọn ohun elo: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, ati bẹbẹ lọ), Awọn iṣẹ oju opo wẹẹbu Ọṣẹ / REST, FTP, TCP, LDAP, SMTP (S), POP3 S) ) ati IMAP(S), awọn apoti isura infomesonu nipasẹ JDBC, le ṣiṣẹ awọn aṣẹ ikarahun ati ṣiṣẹ pẹlu awọn nkan Java. JMeter ni IDE kan fun ṣiṣẹda, ṣatunṣe ati ṣiṣe awọn ero idanwo. CLI tun wa fun iṣẹ laini aṣẹ lori eyikeyi ẹrọ ibaramu Java (Linux, Windows, Mac OS X). Ọpa naa le ṣe agbejade ijabọ idanwo HTML kan.

Fun irọrun ti lilo laarin ile-iṣẹ wa, fun agbara ti awọn oludanwo funrara wọn lati yipada ati ṣafikun agbegbe, a ṣe awọn itumọ ti awọn aworan docker ti awọn orisun fifuye lori GitLab CI pẹlu atẹjade si inu inu. docker iforukọsilẹ ni Artifctory. Eyi jẹ ki o yara ati rọrun lati sopọ wọn ni awọn opo gigun ti epo fun awọn idanwo fifuye. Bii o ṣe le ṣe titari docker si iforukọsilẹ nipasẹ GitLab CI - wo awọn ilana.

A mu faili docker ipilẹ yii fun Yandex.Tank:

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

Ati fun Apache JMeter eyi:

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

O le ka bii eto isọpọ igbagbogbo wa ṣe n ṣiṣẹ ninu nkan naa "Adaṣiṣẹ ti awọn ilana idagbasoke: bawo ni a ṣe ṣe imuse awọn imọran DevOps ni Awọn Imọ-ẹrọ Rere».

Awoṣe ati opo

Apeere ti awoṣe fun ṣiṣe awọn idanwo fifuye wa ninu iṣẹ akanṣe naa demo fifuye. awọn readme faili O le ka awọn ilana fun lilo awoṣe. Ninu awoṣe funrararẹ (faili .gitlab-ci.yml) awọn akọsilẹ wa nipa ohun ti igbesẹ kọọkan jẹ lodidi fun.

Awoṣe naa rọrun pupọ ati ṣafihan awọn ipele mẹta ti idanwo fifuye ti a ṣalaye ninu aworan atọka loke: ngbaradi, idanwo, ati awọn ijabọ titẹjade. Lodidi fun eyi okse: Mura, Idanwo ati Iroyin.

  1. Ipele Mura yẹ ki o lo lati ṣatunto awọn ibi-afẹde idanwo tabi ṣayẹwo wiwa wọn. Ayika fun awọn orisun fifuye ko nilo lati tunto, wọn ti kọ tẹlẹ bi awọn aworan docker ati firanṣẹ ni iforukọsilẹ docker: kan pato ẹya ti o fẹ ni ipele Idanwo. Ṣugbọn o le tun wọn kọ ki o ṣe awọn aworan ti ara rẹ ti a tunṣe.
  2. Ipele igbeyewo ti a lo lati pato orisun fifuye, ṣiṣe awọn idanwo, ati awọn ohun-ini idanwo itaja. O le yan eyikeyi orisun fifuye: Yandex.Tank, Apache JMeter, tirẹ, tabi gbogbo rẹ papọ. Lati mu awọn orisun ti ko wulo, kan sọ asọye tabi paarẹ iṣẹ naa. Awọn aaye titẹsi fun awọn orisun fifuye:

    Akiyesi: Awoṣe iṣeto apejọ ni a lo lati ṣeto ibaraenisepo pẹlu eto CI ati pe ko tumọ si gbigbe kannaa idanwo ninu rẹ. Fun awọn idanwo, aaye titẹsi ti wa ni pato, nibiti iwe afọwọkọ bash iṣakoso wa. Ọna ti ṣiṣe awọn idanwo, awọn ijabọ ti ipilẹṣẹ, ati awọn iwe afọwọkọ idanwo funrararẹ gbọdọ jẹ imuse nipasẹ awọn onimọ-ẹrọ QA. Ninu demo, fun awọn orisun fifuye mejeeji, ibeere oju-iwe akọkọ Yandex ni a lo bi idanwo ti o rọrun julọ. Awọn iwe afọwọkọ ati awọn paramita idanwo wa ninu itọsọna naa ./idanwo.

  3. Ni ipele Iroyin o nilo lati ṣe apejuwe bi o ṣe le ṣe atẹjade awọn abajade idanwo ti o gba ni ipele Idanwo si awọn ibi ipamọ ita, fun apẹẹrẹ, si Awọn oju-iwe GitLab tabi awọn eto ijabọ pataki. Awọn oju-iwe GitLab nbeere ki iwe ilana ./public ko jẹ ofo ati pe o ni o kere ju faili index.html kan lẹhin awọn idanwo ti pari. O le ka nipa awọn nuances ti iṣẹ Awọn oju-iwe GitLab. asopọ.

    Awọn apẹẹrẹ ti bi o ṣe le okeere data:

    Fifiranṣẹ awọn ilana iṣeto:

Ninu apẹẹrẹ demo, opo gigun ti epo pẹlu awọn idanwo fifuye ati awọn orisun fifuye meji (o le mu eyi ti ko wulo) dabi eyi:

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Apache JMeter le ṣe agbekalẹ ijabọ HTML funrararẹ, nitorinaa o ni ere diẹ sii lati fipamọ ni Awọn oju-iwe GitLab nipa lilo awọn irinṣẹ boṣewa. Eyi ni bii ijabọ Apache JMeter ṣe dabi:

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Ninu apẹẹrẹ demo fun Yandex.Tank, iwọ yoo rii nikan iro ọrọ Iroyin ni apakan fun awọn oju-iwe GitLab. Lakoko idanwo, Tanki le ṣafipamọ awọn abajade si ibi ipamọ data InfluxDB, ati lati ibẹ wọn le ṣafihan, fun apẹẹrẹ, ni Grafana (atunto ti ṣe ninu faili naa. ./igbeyewo/apẹẹrẹ-yandextank-test.yml). Eyi ni bii ijabọ Tank ṣe n wo ni Grafana:

Igbeyewo fifuye bi iṣẹ CI fun awọn olupilẹṣẹ

Akopọ

Ninu nkan naa, Mo sọrọ nipa imọran ti “idanwo fifuye bi iṣẹ kan” (idanwo fifuye bi iṣẹ kan). Ero akọkọ ni lati lo awọn amayederun ti awọn adagun ti a ti ṣeto tẹlẹ ti awọn aṣoju fifuye, awọn aworan docker ti awọn orisun fifuye, awọn ọna ṣiṣe iroyin ati opo gigun ti epo ti o dapọ wọn ni GitLab CI ti o da lori awoṣe .gitlab-ci.yml ti o rọrun (apẹẹrẹ). asopọ). Gbogbo eyi ni atilẹyin nipasẹ ẹgbẹ kekere ti awọn onimọ-ẹrọ adaṣe ati tun ṣe ni ibeere ti awọn ẹgbẹ ọja. Mo nireti pe eyi yoo ṣe iranlọwọ fun ọ ni igbaradi ati imuse iru ero kan ni ile-iṣẹ rẹ. O ṣeun fun akiyesi!

PS Mo fẹ lati sọ ọpẹ nla si awọn ẹlẹgbẹ mi, Sergey Kurbanov ati Nikolai Yusev, fun iranlọwọ imọ-ẹrọ pẹlu imuse ti ero ti idanwo fifuye bi iṣẹ ni ile-iṣẹ wa.

onkowe: Timur Gilmullin - Igbakeji Ori ti Imọ-ẹrọ ati Awọn ilana Idagbasoke (DevOps) ni Awọn Imọ-ẹrọ Rere

orisun: www.habr.com

Fi ọrọìwòye kun