Profi Llwyth API Gyda Locust

Profi Llwyth API Gyda Locust

Profi Llwyth API Gyda Locust: Cyflwyniad

Mae'n debyg eich bod chi wedi bod yn y sefyllfa hon o'r blaen: rydych chi'n ysgrifennu cod sy'n gwneud rhywbeth, pwynt terfyn er enghraifft. Rydych chi'n profi eich diweddbwynt gan ddefnyddio Postman neu Insomnia, ac mae popeth yn gweithio'n iawn. Rydych chi'n trosglwyddo'r diweddbwynt i'r datblygwr ochr y cleient, sydd wedyn yn defnyddio'r API ac yn defnyddio'r cais. Ond wedyn, mae'r API yn methu pan fydd y defnyddwyr yn defnyddio'r app.

Gall hon fod yn sefyllfa hynod annifyr i fod ynddi, heb sôn am gostus i fusnes. Dyna pam mae datblygwyr meddalwedd yn cynnal amrywiaeth o brofion ar systemau meddalwedd i sicrhau eu bod yn perfformio yn ôl y disgwyl. Nid yw APIs yn wahanol. Cyn lleoli, dylech wneud o leiaf profion perfformiad a phrofion diogelwch.

Gellir grwpio profion perfformiad yn brofion ymarferoldeb a phrofion llwyth. Profion ymarferoldeb yw'r hyn rydych chi'n defnyddio Postman neu Insomnia ar ei gyfer fel arfer. Maent yn sicrhau bod eich API yn gweithredu fel y disgwyliwch. Mae profion llwyth, ar y llaw arall, yn ymwneud yn fwy â sut mae'ch API yn perfformio gyda defnydd y byd go iawn a llwyth brig, a dyna hanfod yr erthygl hon. Gadewch i ni edrych ar brofion llwyth yn fwy manwl.

Beth Yw Profi Llwyth API?

Mae profi llwyth API yn fath o brofi y mae datblygwyr yn ei ddefnyddio i efelychu llwyth arferol ac uchafbwynt ar bwyntiau terfyn. Mae'r math hwn o brofion yn caniatáu i ddatblygwyr werthuso perfformiad byd go iawn API cyn iddo gael ei ddefnyddio. Mae'n eu helpu i nodi uchafswm cynhwysedd gweithredu system, tagfeydd os o gwbl, a dirywiad perfformiad. Fel arfer cynhelir profion llwyth API trwy greu defnyddwyr rhithwir ac yna eu defnyddio i brofi ymarferoldeb yr API ar yr un pryd. 

Mae profion llwyth API yn mesur metrigau fel amser ymateb, defnyddwyr cydamserol, cyfraddau trwybwn, lefelau defnyddio adnoddau, Amser Cymedrig Rhwng Methiant (MTBF), Amser Cymedrig i Fethu (MTTF), ac ati. Gellir defnyddio'r holl fetrigau hyn i bennu pa mor dda y mae'r API yn ei wneud.

Mathau o Brofi Llwyth

Mae yna sawl math o brofion llwyth, pob un â'i achosion defnydd. Gadewch i ni edrych ar rai ohonyn nhw.

Profi Llwyth: Dyma ffurf sylfaenol prawf llwyth. Fe'i defnyddir i werthuso perfformiad system (yn yr achos hwn, API) o dan lwyth arferol a llwyth brig disgwyliedig.

Prawf Straen: Defnyddir hwn i werthuso perfformiad system o dan lwyth trwm iawn. Nod y prawf hwn yw gweld a yw system yn gwella ar ôl methu, a pha mor hir y mae'n ei gymryd i wneud hynny. Fel arfer caiff y llwyth ei gynyddu'n araf nes ei fod yn fwy na galluoedd y system.

Prawf pigyn: Mae hyn ychydig yn debyg i brofi straen, ac eithrio llwyth trwm yn cael ei gymhwyso'n sydyn, yn hytrach na'i rampio'n araf. Mae'r math hwn o brawf yn cynrychioli'r hyn sy'n digwydd pan fydd cynnydd sydyn yn eich nifer cyfartalog o ddefnyddwyr neu ymwelwyr, neu pan fydd ymosodiad DDOS ar eich system.

Profi socian: Mae'r prawf hwn yn wahanol i'r lleill uchod. Mae'n rhoi eich system o dan 80% (neu tua) o lwyth arferol ac yn ei gadael yn rhedeg am gyfnod hir, dyweder 12 i 14 awr. Mae'r math hwn o brawf yn pennu pa mor ddibynadwy yw system dros amser.

Llwytho Profi Eich APIs Gyda Locust

Mae gan ddatblygwyr fynediad at amrywiaeth o opsiynau ar gyfer profi llwyth eu APIs. Rhai offer profi llwyth cyffredin yw Gatling, JMeter, a Locust. Byddwn yn canolbwyntio ar Locust yn yr erthygl hon.

Offeryn profi llwyth ffynhonnell agored sy'n seiliedig ar python yw Locust a ddefnyddir gan gwmnïau gorau fel Google, Microsoft, a Riot Games i brofi eu APIs. Yn yr erthygl hon, byddwn yn dangos sut i lwytho prawf API. 

Ar gyfer y tiwtorial hwn, byddaf yn creu API syml gyda Fflasg. Gallwch chi ddilyn gyda mi neu greu eich API gyda Node, neu ba bynnag fframwaith rydych chi'n gyfforddus ag ef.

Gofynion

Python 3

Gosod a Gosod

Yn gyntaf, mae angen i chi sefydlu amgylchedd rhithwir ar eich cyfrifiadur personol fel nad ydych chi'n gwneud llanast o'ch amgylchedd Python byd-eang. I wneud hynny, rhedeg y gorchmynion canlynol. Sylwch fod y gorchmynion hyn yn berthnasol i derfynell Windows.

$mkdir prosiect

$cd/d llwybr\i\prosiect

$ python -m venv venv

$ venv\Sgriptiau\gweithredu

 

Yn gyntaf, fe wnaethon ni greu a prosiect cyfeiriadur. Yna fe wnaethom newid ein cyfeiriadur presennol i prosiect. Yna fe wnaethon ni greu a gweithredu amgylchedd rhithwir ar gyfer Python y tu mewn i'r cyfeiriadur hwnnw. 

Nawr, byddwn yn symud ymlaen i osod Fflasg(byddwn yn ei ddefnyddio i greu'r pwyntiau terfyn i'w profi llwyth) a Locust ei hun. 

 

I osod Fflasg, rhedeg. Gwnewch yn siŵr eich bod yn y prosiect lle gwnaethoch chi greu amgylchedd rhithwir.

$pip gosod fflasg

 

I osod Locust, rhedeg

$pip gosod locust

 

Ar ôl gwneud hynny, teipiwch y gorchmynion canlynol. Gwnewch yn siŵr eich bod chi yn eich prosiect cyfeiriadur pan fyddwch yn gwneud hyn.

$ copi nul __init__.py

$ mkdir ap

$copi nul ap\app.py

$ copi nul ap\__init__.py

 

Mae'r gorchymyn hwn yn creu rhai ffeiliau y byddwn yn eu defnyddio i greu ein pwyntiau terfyn gan ddefnyddio Fflasg. Gallwch hefyd greu'r ffeiliau hyn gan ddefnyddio'ch archwiliwr ffeiliau gyda llaw. Ond beth yw'r hwyl yn hynny? Unwaith y byddwch wedi gwneud hynny, copïwch y cod isod i mewn app.py.

o fflasg mewnforio Fflasg, jsonify, cais

ap = fflasg (__enw__)

car_models = [

  { 'brand': 'Tesla', 'model': 'Model S' }

]

 

plane_models = [

  { 'brand': 'Boeing', 'model': '747' }

]

 

@app.route ('/ ceir')

def get_cars():

  dychwelyd jsonify(car_modelau)

@app.route ('/planes')

def get_planes():

  dychwelyd jsonify(model_plane)

os yw __name__ == '__main__':

    app.run(debug=Gwir)  

 

Mae'r cod uchod yn cynnwys dull cael_ceir defnyddio i gael rhestr o frandiau ceir a'u modelau, a cael_planes defnyddio i gael rhestr o frandiau awyren a'u modelau. Er mwyn i ni lwytho prawf hwn endpoint, mae angen inni redeg app.py. I wneud hynny rhedeg y gorchymyn isod.

$ llwybr python\i\app.py

Unwaith y byddwch chi'n rhedeg hynny, dylech chi weld rhywbeth fel hyn:

Profi Llwyth API 1

Os ydych chi'n copïo'r URL o'r derfynell a theipiwch ceir or awyrennau ar ôl y /, dylech allu gweld y data yno. Fodd bynnag, ein nod yw profi'r diweddbwynt gyda locust, nid gyda'r porwr. Felly gadewch i ni wneud hynny. Rhedeg y gorchymyn canlynol yng ngwraidd eich prosiect cyfeiriadur.

 

$ copi nul locust_test.py

 

Mae hyn yn creu ffeil 'locust_test.py' yng ngwraidd eich prosiect cyfeiriadur. Unwaith y byddwch wedi gwneud hynny, agorwch y ffeil a gludwch y cod isod. Byddwn yn ei esbonio yn fuan.

 

amser mewnforio

o locust mewnforio HttpUser, tasg, rhwng

 

Class UserBehaviour(HttpUser):

    amser aros = rhwng (5, 10)

 

    @tasg

    def get_cars(hunan):

        hunan.cleient.cael ('/ceir')

    

    @tasg

    def get_planes(hunan):

        hunan.cleient.get('/planes')

 

Dyma enghraifft sylfaenol o ddefnyddio Locust i lwytho profi API. Yn gyntaf, rydyn ni'n creu dosbarth Ymddygiad Defnyddiwr, y gellir rhoi unrhyw enw priodol iddo ond y mae'n rhaid ei ymestyn HttpDefnyddiwr. HttpDefnyddiwr yw'r dosbarth sy'n cymryd gofal o instantiating defnyddwyr rhithwir lluosog i gyflawni'r tasgau rydym yn nodi yn y Ymddygiad Defnyddiwr dosbarth. 

Pennir tasg trwy addurno dull gyda'r @tasg addurnwr. Mae gennym hefyd swyddogaeth o'r enw rhwng () sy'n ein galluogi i nodi ystod o eiliadau i aros amdanynt cyn cyflawni'r dasg nesaf. Gallwch weld ein bod wedi neilltuo ystod o 5 i 10 eiliad ar gyfer hynny yn ein cod. 

I redeg y cod, gwnewch yn siŵr eich bod yn dal yn eich amgylchedd rhithwir. Os yw'r un a grëwyd gennych yn cael ei ddefnyddio gan y gweinydd sy'n gwasanaethu'r API, agorwch derfynell newydd, newidiwch eich cyfeiriadur i'ch cyfeiriadur prosiect cyfeiriadur, ac actifadu'r amgylchedd rhithwir a grëwyd gennych. Gallwch ddod o hyd i'r gorchymyn ar gyfer actifadu amgylchedd rhithwir uchod. Nawr, nodwch y gorchymyn isod yn eich terfynell.

 

$ locust -f locust_test.py

 

Dylech chi weld rhywbeth fel hyn:

Profi Llwyth API 2

Yn ddiofyn, mae rhyngwyneb gwe locust wedi'i leoli yn http://localhost/8089. Os ymwelwch â'r wefan, dylech weld rhyngwyneb fel hyn:

Profi Llwyth API 3

O'r rhyngwyneb, gallwn nodi nifer y defnyddwyr, cyfradd silio (defnyddwyr a grëwyd yr eiliad), a Host. Gallwch gael cyfeiriad eich gwesteiwr trwy wirio'r derfynell lle mae'r gweinydd yn rhedeg. Yn ein hachos ni, mae ym mhorthladd 5000. Pan fyddwch chi'n clicio ar Dechreuwch heidio, byddwch yn cael ei gyflwyno gyda'r rhyngwyneb isod.

Profi Llwyth API 4

Mae hyn yn dangos amrywiol fetrigau defnyddiol i chi megis nifer y ceisiadau a fethwyd, yr amser cyfartalog ar gyfer cais, yr amser lleiaf ar gyfer cais, ceisiadau yr eiliad, ac ati. Unwaith y byddwch chi'n fodlon â'r hyn a welwch, gallwch glicio ar y botwm stopio. 


Heblaw am y Ystadegau tab, mae a Siartiau tab sy'n dangos mwy gwybodaeth ar ffurf graff, fel y ddelwedd isod.

Mae cyfanswm y ceisiadau fesul eiliad graff, graff amser ymateb, ac nifer y defnyddwyr graff, i gyd yn cynllwynio yn erbyn amser. Gan ddefnyddio'r graffiau, gallwch chi benderfynu faint o ddefnyddwyr sy'n dderbyniol ar gyfer amser ymateb sefydlog, neu gallwch chi arsylwi'ch siartiau am amser ymateb cyson er gwaethaf nifer cynyddol o ddefnyddwyr, a mewnwelediadau eraill fel hynny. Os ydych chi eisiau rhannu rhain Ystadegau gyda rhywun arall, gallwch lawrlwytho adroddiad o'r Lawrlwytho Data tab.

I grynhoi...

Mae profi llwyth eich API yn weithgaredd hanfodol yn eich proses ddatblygu, felly gwnewch yn siŵr ei fod wedi'i ymgorffori yn eich cylch dylunio. Gyda llaw, gallwch hefyd gynnal mathau eraill o brawf llwyth trwy amrywio'r gwerthoedd ar gyfer nifer y defnyddwyr a'r gyfradd silio. 

Os ydych chi am wneud prawf pigyn, nodwch werth mawr (dyweder 2000) ar gyfer nifer y defnyddwyr, ac yna gwerth yr un mor fawr ar gyfer eich cyfradd silio (500 er enghraifft). Mae hyn yn golygu, ymhen 4 eiliad, y byddai pob un o'r 2000 o ddefnyddwyr wedi'u creu ac yn cyrchu'ch pwyntiau terfyn. Bydd prawf straen yn debyg, ond gyda gwerth llawer is ar gyfer cyfradd silio. I ddarganfod popeth y gallwch chi ei wneud, edrychwch ar y Locust dogfennaeth