API álagsprófun með Locust

API álagsprófun með Locust

API álagsprófun með Locust: Intro

Þú hefur líklega verið í þessari stöðu áður: þú skrifar kóða sem gerir eitthvað, endapunkt til dæmis. Þú prófar endapunktinn þinn með Postman eða Insomnia og allt virkar vel. Þú sendir endapunktinn áfram til þróunaraðila viðskiptavinar, sem síðan notar API og setur forritið í notkun. En svo mistekst API þegar notendur nota appið.

Þetta getur verið mjög pirrandi staða að vera í, svo ekki sé minnst á kostnaðarsamt fyrir fyrirtæki. Það er ástæðan fyrir því að hugbúnaðarframleiðendur framkvæma margvíslegar prófanir á hugbúnaðarkerfum til að tryggja að þau standi sig eins og til er ætlast. API eru ekkert öðruvísi. Fyrir dreifingu ættir þú að gera að minnsta kosti árangurspróf og öryggispróf.

Hægt er að flokka frammistöðupróf í virknipróf og álagspróf. Virknipróf eru það sem þú notar venjulega Postman eða Insomnia fyrir. Þeir tryggja að API þitt virki eins og þú býst við. Hleðslupróf hafa aftur á móti meiri áhyggjur af því hvernig API þitt virkar við raunverulega notkun og hámarksálag, og það er það sem þessi grein fjallar um. Við skulum skoða álagspróf nánar.

Hvað er API álagsprófun?

API álagsprófun er tegund prófunar sem þróunaraðilar nota til að líkja eftir eðlilegu og hámarksálagi á endapunktum. Þessi tegund af prófunum gerir forriturum kleift að meta raunverulegan árangur API áður en það er notað. Það hjálpar þeim að bera kennsl á hámarks rekstrargetu kerfis, flöskuhálsa ef einhver er og skerðing á afköstum. API hleðslupróf eru venjulega gerð með því að búa til sýndarnotendur og nota þá til að prófa virkni API samtímis. 

API hleðslupróf mæla mælikvarða eins og viðbragðstíma, samhliða notendur, afköst, auðlindanýtingu, meðaltíma milli bilunar (MTBF), meðaltíma til bilunar (MTTF) og svo framvegis. Allar þessar mælingar er hægt að nota til að ákvarða hversu vel API gengur.

Tegundir álagsprófa

Það eru nokkrar gerðir af álagsprófum, hver með sínum notkunartilfellum. Við skulum skoða nokkrar þeirra.

Hleðslupróf: Þetta er grunnform álagsprófs. Það er notað til að meta frammistöðu kerfis (í þessu tilfelli API) við venjulegt álag og væntanlegt hámarksálag.

Álagspróf: Þetta er notað til að meta frammistöðu kerfis undir mjög miklu álagi. Markmið þessarar prófunar er að sjá hvort kerfi batnar eftir bilun og hversu langan tíma það tekur að gera það. Álagið er venjulega hækkað hægt þar til það fer yfir getu kerfisins.

Gaddapróf: Þetta er svolítið svipað og álagspróf, nema mikið álag er skyndilega beitt, öfugt við að auka það hægt. Þessi tegund af prófun táknar hvað gerist þegar það er skyndilegur hækkun á meðalfjölda notenda eða gesta, eða þegar DDOS árás er á kerfið þitt.

Soak próf: Þetta próf er ólíkt hinum að ofan. Það setur kerfið þitt undir 80% (eða um það bil) af venjulegu álagi og lætur það ganga í langan tíma, segjum 12 til 14 klukkustundir. Svona próf ákvarðar hversu áreiðanlegt kerfi er með tímanum.

Hlaða prófun API með Locust

Hönnuðir hafa aðgang að ýmsum valkostum til að prófa álagsprófanir API. Sum algeng álagsprófunartæki eru Gatling, JMeter og Locust. Við munum einbeita okkur að Locust í þessari grein.

Locust er python-undirstaða opinn hleðsluprófunartól notað af helstu fyrirtækjum eins og Google, Microsoft og Riot Games til að prófa API. Í þessari grein munum við sýna hvernig á að hlaða prófunarforriti. 

Fyrir þessa kennslu mun ég búa til einfalt API með Flask. Þú getur fylgst með mér eða bara búið til API með Node, eða hvaða ramma sem þú ert sátt við.

kröfur

Python 3

Uppsetning og uppsetning

Fyrst þarftu að setja upp sýndarumhverfi á tölvunni þinni svo að þú klúðrar ekki alþjóðlegu Python umhverfinu þínu. Til að gera það skaltu keyra eftirfarandi skipanir. Athugaðu að þessar skipanir eiga við um Windows flugstöð.

$ mkdir verkefni

$ cd /d slóð\til\verkefni

$ python -m venv venv

$ venv\Scripts\virkja

 

Í fyrsta lagi bjuggum við til a verkefni Skrá. Síðan breyttum við núverandi skrá okkar í verkefni. Við bjuggum síðan til og virkum sýndarumhverfi fyrir Python inni í þeirri möppu. 

Nú munum við halda áfram að setja upp Flaskan(við munum nota það til að búa til endapunktana sem á að prófa) og Locust sjálft. 

 

Til að setja upp Flask skaltu keyra. Gakktu úr skugga um að þú sért í verkefni þar sem þú bjóst til sýndarumhverfi.

$ pip uppsetningarflösku

 

Til að setja upp Locust skaltu keyra

$ pip setja engisprettu

 

Þegar því er lokið skaltu slá inn eftirfarandi skipanir. Gakktu úr skugga um að þú sért í þínum verkefni möppu þegar þú gerir þetta.

$ copy nul __init__.py

$ mkdir app

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Þessar skipanir búa til nokkrar skrár sem við munum nota til að búa til endapunkta okkar með Flask. Þú getur líka búið til þessar skrár með því að nota skráarkönnuðinn þinn. En hvað er skemmtilegt við það? Þegar þú hefur gert það skaltu afrita kóðann hér að neðan í app.py

frá flöskuinnflutningi Flaska, jsonify, beiðni

app = Flaska(__nafn__)

bílamódel = [

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

]

 

flugvélarlíkön = [

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

]

 

@app.route('/bílar')

def get_cars():

  skila jsonify(bílalíkönum)

@app.route('/flugvélar')

def get_planes():

  skila jsonify(plane_models)

ef __name__ == '__ main__':

    app.run(debug=True)  

 

Kóðinn hér að ofan inniheldur aðferð fá_bíla notað til að fá lista yfir bílamerki og gerðir þeirra, og fá_flugvélar notað til að fá lista yfir flugvélamerki og gerðir þeirra. Til að við getum hlaðið prófun á þessum endapunkti þurfum við að keyra app.py. Til að gera það skaltu keyra skipunina hér að neðan.

$ python slóð\to\app.py

Þegar þú hefur keyrt það ættirðu að sjá eitthvað á þessa leið:

API álagsprófun 1

Ef þú afritar slóðina frá flugstöðinni og slærð inn bílar or flugvélar eftir / ættirðu að geta séð gögnin þar. Hins vegar er markmið okkar að prófa endapunktinn með engisprettu, ekki með vafranum. Svo við skulum gera það. Keyrðu eftirfarandi skipun í rót þinni verkefni skrá.

 

$ copy nul locust_test.py

 

Þetta býr til 'locust_test.py' skrá í rót þinni verkefni Skrá. Þegar þú hefur gert það skaltu opna skrána og líma inn kóðann hér að neðan. Við munum útskýra það fljótlega.

 

innflutningstími

frá engisprettu innflutningi HttpUser, verkefni, á milli

 

flokkur notendahegðun(HttpNotandi):

    biðtími = milli(5, 10)

 

    @verkefni

    def get_cars(sjálf):

        self.client.get('/bílar')

    

    @verkefni

    def get_planes(sjálf):

        self.client.get('/planes')

 

Þetta er grundvallardæmi um notkun Locust til að hlaða prófunarforritaskilum. Fyrst búum við til bekk Notendahegðun, sem hægt er að gefa hvaða nafni sem er en verður að framlengja HttpNotandi. HttpNotandi er flokkurinn sem sér um að finna marga sýndarnotendur til að framkvæma þau verkefni sem við tilgreinum í Notendahegðun bekknum. 

Verkefni er tilgreint með því að skreyta aðferð með @verkefni skreytingamaður. Við höfum líka fall sem kallast milli() sem gerir okkur kleift að tilgreina sekúndusvið til að bíða eftir áður en næsta verkefni er framkvæmt. Þú getur séð að við höfum úthlutað bilinu 5 til 10 sekúndur fyrir það í kóðanum okkar. 

Til að keyra kóðann skaltu ganga úr skugga um að þú sért enn í sýndarumhverfinu þínu. Ef það sem þú bjóst til er notað af þjóninum sem þjónar API, opnaðu nýja flugstöð, breyttu skránni þinni í þinn verkefni möppu og virkjaðu sýndarumhverfið sem þú bjóst til. Þú getur fundið skipunina til að virkja sýndarumhverfi hér að ofan. Nú skaltu slá inn skipunina hér að neðan í flugstöðinni þinni.

 

$ engisprettur -f engisprettur.py

 

Þú ættir að sjá eitthvað svona:

API álagsprófun 2

Sjálfgefið er að vefviðmót Locust er staðsett á http://localhost/8089. Ef þú heimsækir vefsíðuna ættirðu að sjá viðmót eins og þetta:

API álagsprófun 3

Frá viðmótinu getum við tilgreint fjölda notenda, hrognahraða (notendur búnir til á sekúndu) og Host. Þú getur fengið heimilisfang gestgjafans þíns með því að athuga flugstöðina þar sem þjónninn er í gangi. Í okkar tilviki er það á port 5000. Þegar þú smellir á Byrjaðu að sveima, þér verður kynnt viðmótið hér að neðan.

API álagsprófun 4

Þetta sýnir þér ýmsar gagnlegar mælikvarða eins og fjölda misheppnaðra beiðna, meðaltíma fyrir beiðni, lágmarkstíma fyrir beiðni, beiðnir á sekúndu, og svo framvegis. Þegar þú ert ánægður með það sem þú sérð geturðu smellt á stöðvunarhnappinn. 


Auk Tölfræði flipi, það er a Myndir flipi sem sýnir meira upplýsingar í formi línurits, eins og myndin hér að neðan.

Það er heildarbeiðnir á sekúndu línuriti, svartíma línurit, og fjölda notenda línurit, allt samsæri við tímann. Með því að nota línuritin geturðu ákvarðað hversu margir notendur eru ásættanlegir fyrir fastan viðbragðstíma, eða þú getur fylgst með töflunum þínum fyrir stöðugan viðbragðstíma þrátt fyrir aukinn fjölda notenda, og aðra slíka innsýn. Ef þú vilt deila þessum ástand með einhverjum öðrum geturðu hlaðið niður skýrslu frá Sækja gögn Flipi.

Að álykta...

Hleðsluprófun API er mikilvæg aðgerð í þróunarferlinu þínu, svo vertu viss um að það sé fellt inn í hönnunarferilinn þinn. Við the vegur, þú getur líka framkvæmt aðrar álagsprófunargerðir með því að breyta gildunum fyrir fjölda notenda og hrognahraða. 

Ef þú vilt gera topppróf skaltu tilgreina stórt gildi (segjum 2000) fyrir fjölda notenda og síðan jafn mikið gildi fyrir spawn hlutfallið þitt (td 500). Þetta þýðir að á 4 sekúndum myndirðu búa til alla 2000 notendur og fá aðgang að endapunktum þínum. Álagspróf verður svipað, en með mun lægra gildi fyrir hrognatíðni. Til að finna út allt sem þú getur gert skaltu skoða Locust gögn