API slodzes pārbaude ar Locust

API slodzes pārbaude ar Locust

API slodzes pārbaude ar Locust: ievads

Jūs, iespējams, jau esat bijis šādā situācijā: jūs rakstāt kodu, kas kaut ko dara, piemēram, galapunktu. Jūs pārbaudāt savu galapunktu, izmantojot Postman vai Insomnia, un viss darbojas labi. Jūs nododat galapunktu klienta puses izstrādātājam, kurš pēc tam patērē API un izvieto lietojumprogrammu. Bet tad API neizdodas, kad lietotāji izmanto lietotni.

Tā var būt ļoti kaitinoša situācija, nemaz nerunājot par dārgu uzņēmumu. Tāpēc programmatūras izstrādātāji veic dažādus programmatūras sistēmu testus, lai nodrošinātu, ka tās darbojas, kā paredzēts. API neatšķiras. Pirms izvietošanas jums jāveic vismaz veiktspējas testi un drošības testi.

Veiktspējas testus var grupēt funkcionalitātes testos un slodzes testos. Funkcionalitātes testi ir tas, ko parasti izmantojat Postman vai Insomnia. Tie nodrošina, ka jūsu API darbojas, kā jūs gaidāt. No otras puses, slodzes testi ir vairāk saistīti ar to, kā jūsu API darbojas ar reālo lietojumu un maksimālo slodzi, un par to ir šis raksts. Apskatīsim slodzes testus sīkāk.

Kas ir API slodzes pārbaude?

API slodzes testēšana ir testēšanas veids, ko izstrādātāji izmanto, lai modelētu parasto un maksimālo slodzi galapunktos. Šāda veida testēšana ļauj izstrādātājiem novērtēt API veiktspēju reālajā pasaulē pirms tās izvietošanas. Tas palīdz viņiem noteikt sistēmas maksimālo darbības jaudu, vājās vietas, ja tādas ir, un veiktspējas pasliktināšanos. API slodzes testi parasti tiek veikti, izveidojot virtuālos lietotājus un pēc tam izmantojot tos, lai vienlaikus pārbaudītu API funkcionalitāti. 

API slodzes testi mēra tādus rādītājus kā reakcijas laiks, vienlaicīgie lietotāji, caurlaidspēja, resursu izmantošanas līmeņi, vidējais laiks starp kļūmēm (MTBF), vidējais laiks līdz kļūmei (MTTF) un tā tālāk. Visus šos rādītājus var izmantot, lai noteiktu, cik labi API darbojas.

Slodzes pārbaudes veidi

Ir vairāki slodzes testēšanas veidi, katram ir savi lietošanas gadījumi. Apskatīsim dažus no tiem.

Slodzes pārbaude: Šī ir slodzes testa pamata forma. To izmanto, lai novērtētu sistēmas (šajā gadījumā API) veiktspēju normālas slodzes un paredzamās maksimālās slodzes apstākļos.

Stresa testēšana: To izmanto, lai novērtētu sistēmas veiktspēju ļoti lielas slodzes apstākļos. Šī testa mērķis ir noskaidrot, vai sistēma atkopjas pēc kļūmes un cik ilgs laiks nepieciešams, lai to paveiktu. Slodze parasti tiek palielināta lēnām, līdz tā pārsniedz sistēmas iespējas.

Smailes pārbaude: Tas ir nedaudz līdzīgs stresa testēšanai, izņemot to, ka pēkšņi tiek pielietota liela slodze, nevis lēna tās palielināšana. Šāda veida pārbaude parāda, kas notiek, ja jūsu vidējais lietotāju vai apmeklētāju skaits pēkšņi palielinās vai jūsu sistēmai notiek DDOS uzbrukums.

Uzsūkšanās pārbaude: Šis tests atšķiras no citiem iepriekš minētajiem. Tas noslogo jūsu sistēmu zem 80% (vai aptuveni) no normālas slodzes un atstāj to darboties ilgu laiku, piemēram, 12 līdz 14 stundas. Šāda veida pārbaude nosaka, cik uzticama ir sistēma laika gaitā.

Ielādējiet API testēšanu, izmantojot Locust

Izstrādātājiem ir pieejamas dažādas API slodzes pārbaudes iespējas. Daži izplatīti slodzes testēšanas rīki ir Gatling, JMeter un Locust. Šajā rakstā mēs koncentrēsimies uz Locust.

Locust ir uz python balstīts atvērtā pirmkoda slodzes testēšanas rīks, ko izmanto tādi vadošie uzņēmumi kā Google, Microsoft un Riot Games, lai pārbaudītu savas API. Šajā rakstā mēs parādīsim, kā ielādēt testa API. 

Šai apmācībai es izveidošu vienkāršu API ar Flask. Varat sekot līdzi man vai vienkārši izveidot savu API, izmantojot Node vai jebkuru jums piemērotu sistēmu.

Prasības

Python 3

Iestatīšana un instalēšana

Pirmkārt, datorā ir jāiestata virtuālā vide, lai nesajauktu globālo Python vidi. Lai to izdarītu, palaidiet šādas komandas. Ņemiet vērā, ka šīs komandas attiecas uz Windows termināli.

$ mkdir projekts

$ cd /d ceļš\uz\projektu

$ python -m venv venv

$ venv\Scripts\activate

 

Pirmkārt, mēs izveidojām a projekts direktoriju. Pēc tam mēs mainījām savu pašreizējo direktoriju uz projekts. Pēc tam šajā direktorijā izveidojām un aktivizējām Python virtuālo vidi. 

Tagad mēs pāriesim pie instalēšanas Kolba(mēs to izmantosim, lai izveidotu galapunktus, kas jāpārbauda slodzei) un sisenis pati. 

 

Lai instalētu Flask, palaidiet. Pārliecinieties, vai atrodaties projekts kur izveidojāt virtuālo vidi.

$ pip instalēšanas kolba

 

Lai instalētu Locust, palaidiet

$ pip instalēt ceratoniju

 

Kad tas ir izdarīts, ierakstiet šādas komandas. Pārliecinieties, ka esat savā projekts direktorijā, kad to darāt.

$ copy nul __init__.py

$ mkdir lietotne

$ kopēt nul app\app.py

$ kopēt nul app\__init__.py

 

Šīs komandas izveido dažus failus, kurus izmantosim, lai izveidotu galapunktus, izmantojot Flask. Varat arī izveidot šos failus, izmantojot savu failu pārlūku. Bet kas tur jautrs? Kad tas ir izdarīts, kopējiet tālāk norādīto kodu app.py

no kolbas importēt Kolba, jsonify, pieprasījums

lietotne = Kolba (__name__)

car_models = [

  { 'zīmols': 'Tesla', 'modelis': 'Model S' }

]

 

plane_models = [

  { 'zīmols': 'Boeing', 'modelis': '747' }

]

 

@app.route('/cars')

def get_cars ():

  return jsonify(car_models)

@app.route('/planes')

def get_planes():

  return jsonify(plane_models)

if __name__ == '__main__':

    app.run(debug=True)  

 

Iepriekš minētais kods satur metodi get_cars izmanto, lai iegūtu automašīnu zīmolu un to modeļu sarakstu, un get_planes izmanto, lai iegūtu lidmašīnu zīmolu un to modeļu sarakstu. Lai mēs varētu ielādēt šo galapunktu, mums ir jāpalaiž app.py. Lai to izdarītu, palaidiet tālāk norādīto komandu.

$ python ceļš\to\app.py

Kad to palaižat, jums vajadzētu redzēt kaut ko līdzīgu šim:

API slodzes pārbaude 1

Ja nokopējat URL no termināļa un ierakstāt automašīnas or lidmašīnas pēc /, jums vajadzētu būt iespējai skatīt tur esošos datus. Tomēr mūsu mērķis ir pārbaudīt galapunktu ar siseņu, nevis pārlūkprogrammu. Tātad darīsim tā. Savas saknē izpildiet šo komandu projekts katalogs.

 

$ copy nul locust_test.py

 

Tādējādi jūsu saknē tiek izveidots fails locust_test.py projekts direktoriju. Kad tas ir izdarīts, atveriet failu un ielīmējiet tālāk norādīto kodu. Mēs to drīzumā paskaidrosim.

 

importa laiks

no siseņu importa HttpUser, uzdevums, starp

 

klases lietotāja uzvedība (HttpUser):

    gaidīšanas_laiks = starp(5, 10)

 

    @uzdevums

    def get_cars (self):

        self.client.get('/cars')

    

    @uzdevums

    def get_planes(self):

        self.client.get('/planes')

 

Šis ir pamata piemērs Locust izmantošanai API ielādes pārbaudes veikšanai. Pirmkārt, mēs izveidojam klasi Lietotāja uzvedība, kuram var piešķirt jebkuru piemērotu nosaukumu, bet tas ir jāpaplašina HttpUser. HttpUser ir klase, kas rūpējas par vairāku virtuālo lietotāju instantiāciju, lai veiktu uzdevumus, kurus mēs norādām Lietotāja uzvedība klasē. 

Uzdevums tiek norādīts, dekorējot metodi ar @uzdevums dekorators. Mums ir arī funkcija, ko sauc starp() kas ļauj mums norādīt sekunžu diapazonu, kas jāgaida pirms nākamā uzdevuma izpildes. Varat redzēt, ka savā kodā mēs tam piešķīrām diapazonu no 5 līdz 10 sekundēm. 

Lai palaistu kodu, pārliecinieties, vai joprojām atrodaties savā virtuālajā vidē. Ja serveris, kas apkalpo API izmanto jūsu izveidoto, atveriet jaunu termināli, mainiet savu direktoriju uz savu projekts direktorijā un aktivizējiet izveidoto virtuālo vidi. Iepriekš varat atrast komandu virtuālās vides aktivizēšanai. Tagad terminālī ievadiet tālāk norādīto komandu.

 

$ locust -f locust_test.py

 

Jums vajadzētu redzēt kaut ko līdzīgu:

API slodzes pārbaude 2

Pēc noklusējuma siseņu tīmekļa saskarne atrodas vietnē http://localhost/8089. Ja apmeklējat vietni, jums vajadzētu redzēt šādu saskarni:

API slodzes pārbaude 3

No saskarnes mēs varam norādīt lietotāju skaitu, nārsta ātrumu (lietotāji izveidoti sekundē) un resursdatoru. Sava saimniekdatora adresi varat iegūt, pārbaudot termināli, kurā darbojas serveris. Mūsu gadījumā tas atrodas portā 5000. Noklikšķinot uz Sāc spietot, jums tiks parādīta tālāk redzamā saskarne.

API slodzes pārbaude 4

Tas parāda dažādus noderīgus rādītājus, piemēram, neveiksmīgo pieprasījumu skaitu, vidējo pieprasījuma izpildes laiku, minimālo pieprasījuma izpildes laiku, pieprasījumus sekundē un tā tālāk. Kad esat apmierināts ar redzēto, varat noklikšķināt uz apturēšanas pogas. 


Bez Statistika cilnē ir a charts cilne, kas parāda vairāk informācija diagrammas veidā, piemēram, attēlā zemāk.

Ir kopējais pieprasījumu skaits sekundē, reakcijas laika grafiks, un lietotāju skaita diagramma, viss saplānots pret laiku. Izmantojot diagrammas, varat noteikt, cik lietotāju ir pieņemami fiksētam reakcijas laikam, vai arī varat novērot diagrammas nemainīgu reakcijas laiku, neskatoties uz pieaugošo lietotāju skaitu, un citus līdzīgus ieskatus. Ja vēlies padalīties ar šiem statistika ar kādu citu, varat lejupielādēt pārskatu no vietnes Lejupielādēt datus Tab.

Secināt...

API slodzes pārbaude ir ļoti svarīga darbība jūsu izstrādes procesā, tāpēc pārliecinieties, vai tā ir iekļauta jūsu projektēšanas ciklā. Starp citu, jūs varat veikt arī citus slodzes testu veidus, mainot lietotāju skaita un nārsta ātruma vērtības. 

Ja vēlaties veikt smailes testu, norādiet lielu lietotāju skaita vērtību (piemēram, 2000) un pēc tam tikpat lielu vērtību jūsu parādīšanās ātrumam (piemēram, 500). Tas nozīmē, ka 4 sekunžu laikā visi 2000 lietotāji būs izveidoti un piekļūtu jūsu galapunktiem. Stresa tests būs līdzīgs, taču ar daudz zemāku nārsta ātruma vērtību. Lai uzzinātu visu, ko varat darīt, apskatiet Locust dokumentācija