API koormuse testimine Locustiga

API koormuse testimine Locustiga

API koormuse testimine Locustiga: sissejuhatus

Tõenäoliselt olete selles olukorras varem olnud: kirjutate koodi, mis teeb midagi, näiteks lõpp-punkti. Testite oma lõpp-punkti Postmani või Insomnia abil ja kõik töötab hästi. Edastate lõpp-punkti kliendipoolsele arendajale, kes seejärel kasutab API ja juurutab rakenduse. Kuid siis API ebaõnnestub, kui kasutajad rakendust kasutavad.

See võib olla väga tüütu olukord, rääkimata ettevõttele kulukast. Seetõttu viivad tarkvaraarendajad läbi mitmesuguseid tarkvarasüsteemide teste, et tagada nende ootuspärane toimimine. API-d ei erine. Enne juurutamist peaksite tegema vähemalt jõudlus- ja turvatestid.

Toimivustestid saab rühmitada funktsionaalsustestideks ja koormustestideks. Funktsionaalsustestid on see, mille jaoks kasutate tavaliselt Postmani või Insomniat. Need tagavad, et teie API töötab ootuspäraselt. Koormustestid aga tegelevad rohkem sellega, kuidas teie API toimib reaalse kasutuse ja tippkoormusega ning sellest see artikkel räägibki. Vaatame koormusteste üksikasjalikumalt.

Mis on API koormustestimine?

API koormustestimine on testimise tüüp, mida arendajad kasutavad lõpp-punktide normaalse ja tippkoormuse simuleerimiseks. Selline testimine võimaldab arendajatel hinnata API tegelikku jõudlust enne selle kasutuselevõttu. See aitab neil tuvastada süsteemi maksimaalse töövõime, kitsaskohad, kui neid on, ja jõudluse halvenemist. API koormustestid tehakse tavaliselt virtuaalsete kasutajate loomisega ja seejärel nende samaaegse API funktsionaalsuse testimisega. 

API koormustestid mõõdavad selliseid mõõdikuid nagu reageerimisaeg, samaaegsed kasutajad, läbilaskevõime, ressursside kasutustasemed, keskmine riketevaheline aeg (MTBF), keskmine tõrkeaeg (MTTF) ja nii edasi. Kõiki neid mõõdikuid saab kasutada API toimimise määramiseks.

Koormustestide tüübid

Koormusteste on mitut tüüpi, millest igaühel on oma kasutusjuhud. Vaatame mõnda neist.

Koormuse testimine: See on koormustesti põhivorm. Seda kasutatakse süsteemi (antud juhul API) jõudluse hindamiseks normaalse koormuse ja eeldatava tippkoormuse korral.

Stressitestimine: Seda kasutatakse süsteemi jõudluse hindamiseks väga suure koormuse korral. Selle testi eesmärk on näha, kas süsteem taastub pärast riket ja kui kaua see aega võtab. Koormust tõstetakse tavaliselt aeglaselt, kuni see ületab süsteemi võimalused.

Spike testimine: See sarnaneb pisut stressitestiga, välja arvatud see, et äkiliselt rakendatakse tugevat koormust, mitte aga seda, kui seda aeglaselt üles tõsta. Selline test näitab, mis juhtub siis, kui teie keskmine kasutajate või külastajate arv tõuseb järsult või kui teie süsteemile toimub DDOS-rünnak.

Leotamise testimine: See test erineb teistest ülaltoodud testidest. See koormab teie süsteemi alla 80% (või umbes) ja jätab selle tööle pikemaks ajaks, näiteks 12–14 tunniks. Selline test määrab, kui usaldusväärne süsteem aja jooksul on.

Laadige oma API-de testimine Locustiga

Arendajatel on juurdepääs erinevatele võimalustele oma API-de koormustestimiseks. Mõned levinumad koormuse testimise tööriistad on Gatling, JMeter ja Locust. Keskendume selles artiklis Locustile.

Locust on pythonil põhinev avatud lähtekoodiga koormuse testimise tööriist, mida kasutavad oma API-de testimiseks tippettevõtted, nagu Google, Microsoft ja Riot Games. Selles artiklis näitame, kuidas laadida API-testi. 

Selle õpetuse jaoks loon Flaskiga lihtsa API. Võite minuga kaasas käia või lihtsalt luua oma API Node'i või mis tahes raamistikuga, mis teile sobib.

Nõuded

Python 3

Seadistamine ja installimine

Esiteks tuleb arvutis seadistada virtuaalne keskkond, et sa globaalset Pythoni keskkonda sassi ei ajaks. Selleks käivitage järgmised käsud. Pange tähele, et need käsud kehtivad Windowsi terminali kohta.

$ mkdir projekt

$ cd /d tee\projekti

$ python -m venv venv

$ venv\Scripts\activate

 

Esiteks lõime a projekt kataloog. Seejärel muutsime oma praeguse kataloogi uueks projekt. Seejärel lõime ja aktiveerisime selles kataloogis Pythoni jaoks virtuaalse keskkonna. 

Nüüd jätkame installimisega Kolb(kasutame seda koormustestitavate lõpp-punktide loomiseks) ja rändrohutirts ise. 

 

Flaski installimiseks käivitage. Veenduge, et olete selles projekt kus lõite virtuaalse keskkonna.

$ pip paigalduskolb

 

Locusti installimiseks käivitage

$ pip install jaaniuss

 

Kui see on tehtud, tippige välja järgmised käsud. Veenduge, et olete oma projekt kataloogi, kui seda teete.

$ copy nul __init__.py

$ mkdir rakendus

$ kopeeri null app\app.py

$ kopeeri null app\__init__.py

 

See käsk loob mõned failid, mida kasutame Flaski abil lõpp-punktide loomiseks. Muide, saate neid faile luua ka failiuurija abil. Aga mis selles lõbusat on? Kui olete seda teinud, kopeerige allolev kood app.py

kolvist import Kolb, jsonify, päring

rakendus = Kolb (__nimi__)

auto_mudelid = [

  { 'bränd': 'Tesla', 'mudel': 'Model S' }

]

 

plane_models = [

  { 'bränd': 'Boeing', 'mudel': '747' }

]

 

@app.route('/cars')

def get_cars():

  return jsonify(auto_mudelid)

@app.route('/lennukid')

def get_planes():

  return jsonify(lennuki_mudelid)

if __name__ == '__main__':

    app.run(debug=True)  

 

Ülaltoodud kood sisaldab meetodit hanki_autod kasutatakse automarkide ja nende mudelite nimekirja saamiseks ning hanki_lennukid kasutatakse lennukibrändide ja nende mudelite loendi saamiseks. Selle lõpp-punkti laadimiseks testimiseks peame käivitama rakenduse app.py. Selleks käivitage allolev käsk.

$ pythoni tee\to\app.py

Kui olete selle käivitanud, peaksite nägema midagi sellist:

API koormuse testimine 1

Kui kopeerite URL-i terminalist ja tippige autod or lennukid pärast /, peaksite seal olevaid andmeid nägema. Meie eesmärk on aga testida lõpp-punkti jaanileivaga, mitte brauseriga. Nii et teeme seda. Käivitage oma juurtes järgmine käsk projekt kataloog.

 

$ copy nul locust_test.py

 

See loob teie juure faili locust_test.py projekt kataloog. Kui olete seda teinud, avage fail ja kleepige allolev kood. Selgitame seda lähiajal.

 

impordiaeg

jaaniussi import HttpUser, ülesanne, vahel

 

klassi kasutaja käitumine (HttpUser):

    ooteaeg = vahemikus (5, 10)

 

    @ülesanne

    def get_cars (self):

        self.client.get('/cars')

    

    @ülesanne

    def get_planes(self):

        self.client.get('/planes')

 

See on põhinäide Locusti kasutamisest API laadimise testimiseks. Esiteks loome klassi Kasutaja käitumine, millele võib anda mis tahes sobiva nime, kuid mis peab laienema HttpKasutaja. HttpKasutaja on klass, mis hoolitseb mitme virtuaalse kasutaja käivitamise eest, et täita ülesandeid, mille me määrame Kasutaja käitumine klass. 

Ülesanne määratakse meetodi kaunistamisega @ülesanne dekoraator. Meil on ka funktsioon nimega vahel () mis võimaldab meil määrata sekundite vahemiku, mida oodata enne järgmise ülesande täitmist. Näete, et määrasime oma koodis selleks vahemiku 5–10 sekundit. 

Koodi käivitamiseks veenduge, et olete endiselt oma virtuaalses keskkonnas. Kui API-d teenindav server kasutab teie loodud terminali, avage uus terminal ja muutke oma kataloog projekt kataloogi ja aktiveerige loodud virtuaalne keskkond. Virtuaalse keskkonna aktiveerimise käsu leiate ülalt. Nüüd sisestage oma terminali allolev käsk.

 

$ locust -f locust_test.py

 

Peaksite nägema midagi sellist:

API koormuse testimine 2

Vaikimisi asub jaaniussi veebiliides aadressil http://localhost/8089. Kui külastate veebisaiti, peaksite nägema sellist liidest:

API koormuse testimine 3

Liidesest saame määrata kasutajate arvu, kudemissageduse (kasutajad loodud sekundis) ja hosti. Oma hosti aadressi leiate, kui kontrollite terminali, kus server töötab. Meie puhul on see pordis 5000. Kui klõpsate nuppu Hakka sülemlema, teile kuvatakse allolev liides.

API koormuse testimine 4

See näitab mitmesuguseid kasulikke mõõdikuid, nagu ebaõnnestunud taotluste arv, päringu keskmine aeg, päringu minimaalne aeg, päringud sekundis jne. Kui olete nähtuga rahul, võite klõpsata stopp-nupul. 


Lisaks Statistika vahekaardil on a Äritegevus vahekaart, mis näitab rohkem info graafiku kujul, nagu alloleval pildil.

On taotluste koguarv sekundis, reageerimisaja graafik, ja kasutajate arvu graafik, kõik kavandatud aja vastu. Graafikuid kasutades saate määrata, kui palju kasutajaid on fikseeritud reageerimisaja jaoks vastuvõetavad, või jälgida oma diagramme konstantse reageerimisaja jaoks, hoolimata kasutajate arvu suurenemisest, ja muid sarnaseid teadmisi. Kui soovite neid jagada stats koos kellegi teisega saate aruande alla laadida saidilt Andmete allalaadimine Tab.

Kokkuvõtteks...

API koormustestimine on teie arendusprotsessis ülioluline tegevus, seega veenduge, et see oleks teie disainitsüklisse kaasatud. Muide, saate teha ka muid koormustestitüüpe, muutes kasutajate arvu ja kudemissageduse väärtusi. 

Kui soovite teha hüpete testi, määrake kasutajate arvu jaoks suur väärtus (näiteks 2000) ja seejärel sama suur väärtus oma kudemissagedusele (näiteks 500). See tähendab, et 4 sekundiga on teil kõik 2000 kasutajat loodud ja teie lõpp-punktidele juurdepääsetav. Koormustest on sarnane, kuid kudemissageduse väärtus on palju väiksem. Et teada saada, mida saate teha, vaadake Locusti dokumentatsioon