API záťažové testovanie s Locustom

API záťažové testovanie s Locustom

Testovanie zaťaženia API s Locustom: Úvod

Pravdepodobne ste už boli v tejto situácii: píšete kód, ktorý niečo robí, napríklad koncový bod. Svoj koncový bod otestujete pomocou Postman alebo Insomnia a všetko funguje dobre. Koncový bod odovzdáte vývojárovi na strane klienta, ktorý potom spotrebuje API a nasadí aplikáciu. Potom však rozhranie API zlyhá, keď používatelia používajú aplikáciu.

To môže byť veľmi nepríjemná situácia, nehovoriac o nákladnej situácii pre podnikanie. To je dôvod, prečo vývojári softvéru vykonávajú rôzne testy na softvérových systémoch, aby sa uistili, že fungujú podľa očakávania. Rozhrania API nie sú iné. Pred nasadením by ste mali vykonať aspoň testy výkonu a bezpečnostné testy.

Výkonnostné testy možno zoskupiť do testov funkčnosti a záťažových testov. Testy funkčnosti sú to, na čo zvyčajne používate Postman alebo Insomnia. Zabezpečujú, že vaše API funguje tak, ako očakávate. Na druhej strane záťažové testy sa viac zaoberajú tým, ako vaše API funguje pri používaní v reálnom svete a špičkovom zaťažení, a o tom je tento článok. Pozrime sa na záťažové testy podrobnejšie.

Čo je testovanie zaťaženia API?

Testovanie zaťaženia API je typ testovania, ktorý vývojári používajú na simuláciu normálneho a špičkového zaťaženia koncových bodov. Tento druh testovania umožňuje vývojárom vyhodnotiť skutočný výkon rozhrania API pred jeho nasadením. Pomáha im identifikovať maximálnu prevádzkovú kapacitu systému, prípadné prekážky a zníženie výkonu. Testy zaťaženia API sa zvyčajne vykonávajú vytvorením virtuálnych používateľov a ich následným použitím na súbežné testovanie funkčnosti API. 

Testy zaťaženia API merajú metriky ako čas odozvy, súbežní používatelia, priepustnosť, úrovne využitia zdrojov, stredný čas medzi poruchami (MTBF), stredný čas do zlyhania (MTTF) atď. Všetky tieto metriky možno použiť na určenie toho, ako dobre si API vedie.

Typy záťažových testov

Existuje niekoľko typov záťažového testovania, pričom každý má svoje prípady použitia. Poďme sa na niektoré z nich pozrieť.

Záťažové testovanie: Toto je základná forma záťažového testu. Používa sa na vyhodnotenie výkonu systému (v tomto prípade API) pri normálnom zaťažení a očakávanom špičkovom zaťažení.

Záťažové testovanie: Používa sa na vyhodnotenie výkonu systému pri veľmi veľkom zaťažení. Cieľom tohto testu je zistiť, či sa systém po zlyhaní zotavuje a ako dlho to trvá. Zaťaženie sa zvyčajne pomaly zvyšuje, až kým nepresiahne možnosti systému.

Špičkový test: Je to trochu podobné záťažovému testovaniu, s výnimkou toho, že veľké zaťaženie sa aplikuje náhle, na rozdiel od pomalého zvyšovania. Tento druh testu predstavuje, čo sa stane, keď dôjde k náhlemu zvýšeniu priemerného počtu používateľov alebo návštevníkov, alebo keď dôjde k útoku DDOS na váš systém.

Test namočenia: Tento test je na rozdiel od ostatných vyššie uvedených. Váš systém dostane pod 80 % (alebo asi tak) normálneho zaťaženia a nechá ho bežať dlhší čas, povedzme 12 až 14 hodín. Tento druh testu určuje, ako spoľahlivý je systém v priebehu času.

Záťažové testovanie vašich API s Locustom

Vývojári majú prístup k rôznym možnostiam testovania záťaže ich API. Niektoré bežné nástroje na testovanie záťaže sú Gatling, JMeter a Locust. V tomto článku sa zameriame na Locust.

Locust je nástroj na testovanie záťaže s otvoreným zdrojom založený na pythone, ktorý používajú špičkové spoločnosti ako Google, Microsoft a Riot Games na testovanie svojich rozhraní API. V tomto článku si ukážeme, ako testovať zaťaženie API. 

Pre tento tutoriál vytvorím jednoduché API s Flask. Môžete ma nasledovať alebo si jednoducho vytvoriť svoje API pomocou Node alebo akéhokoľvek rámca, ktorý vám vyhovuje.

požiadavky

Python 3

Inštalácia a inštalácia

Najprv si musíte na svojom PC nastaviť virtuálne prostredie, aby ste si nepokazili globálne prostredie Pythonu. Ak to chcete urobiť, spustite nasledujúce príkazy. Všimnite si, že tieto príkazy platia pre terminál Windows.

$ mkdir projekt

$ cd /d cesta\k\projektu

$ python -m venv venv

$ venv\Scripts\activate

 

Najprv sme vytvorili a projekt adresár. Potom sme zmenili náš aktuálny adresár na projekt. Potom sme v tomto adresári vytvorili a aktivovali virtuálne prostredie pre Python. 

Teraz prejdeme k inštalácii Banka(použijeme ho na vytvorenie koncových bodov na testovanie záťaže) a kobylka Samo o sebe. 

 

Ak chcete nainštalovať Flask, spustite. Uistite sa, že ste v projekt kde ste vytvorili virtuálne prostredie.

$ pip inštalačná banka

 

Ak chcete nainštalovať Locust, spustite

$ pip nainštalovať kobylku

 

Keď to urobíte, zadajte nasledujúce príkazy. Uistite sa, že ste vo svojom projekt adresár, keď to urobíte.

$ copy nul __init__.py

aplikácia $ mkdir

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Tento príkaz vytvorí niekoľko súborov, ktoré použijeme na vytvorenie našich koncových bodov pomocou Flask. Mimochodom, tieto súbory môžete vytvoriť aj pomocou prieskumníka súborov. Ale čo je na tom zábavné? Keď to urobíte, skopírujte nižšie uvedený kód do app.py

z banky import Flask, jsonify, request

app = Flask(__name__)

modely_aut = [

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

]

 

modely lietadiel = [

  { 'brand': 'Boeing', 'model': '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)  

 

Vyššie uvedený kód obsahuje metódu get_cars slúži na získanie zoznamu značiek automobilov a ich modelov a get_planes slúži na získanie zoznamu značiek lietadiel a ich modelov. Aby sme mohli načítať test tohto koncového bodu, musíme spustiť app.py. Ak to chcete urobiť, spustite príkaz uvedený nižšie.

$ python path\to\app.py

Keď to spustíte, mali by ste vidieť niečo takéto:

Záťažové testovanie API 1

Ak skopírujete URL z terminálu a napíšete autá or lietadla za /, mali by ste tam vidieť údaje. Naším cieľom je však testovať koncový bod s kobylkou, nie s prehliadačom. Tak poďme na to. Spustite nasledujúci príkaz v koreňovom adresári vášho projekt adresára.

 

$ copy nul locust_test.py

 

Tým sa vytvorí súbor 'locust_test.py' v koreňovom adresári vášho projekt adresár. Keď to urobíte, otvorte súbor a vložte nižšie uvedený kód. Čoskoro si to vysvetlíme.

 

čas importu

z kobylky importovať HttpUser, task, between

 

class UserBehaviour(HttpUser):

    čakacia doba = medzi(5, 10)

 

    @úloha

    def get_cars(self):

        self.client.get('/cars')

    

    @úloha

    def get_planes(self):

        self.client.get('/lietadlá')

 

Toto je základný príklad použitia Locustu na testovanie API. Najprv vytvoríme triedu Používateľské správanie, ktorý môže dostať akýkoľvek vhodný názov, ale musí sa rozšíriť HttpUser. HttpUser je trieda, ktorá sa stará o vytvorenie inštancie viacerých virtuálnych používateľov na vykonávanie úloh, ktoré špecifikujeme v Používateľské správanie trieda. 

Úloha je špecifikovaná zdobením metódy pomocou @úloha dekoratér. Máme aj funkciu tzv medzi () čo nám umožňuje špecifikovať rozsah sekúnd čakania pred vykonaním ďalšej úlohy. Môžete vidieť, že v našom kóde sme tomu priradili rozsah 5 až 10 sekúnd. 

Ak chcete spustiť kód, uistite sa, že ste stále vo svojom virtuálnom prostredí. Ak ten, ktorý ste vytvorili, používa server obsluhujúci API, otvorte nový terminál, zmeňte svoj adresár na svoj projekt a aktivujte virtuálne prostredie, ktoré ste vytvorili. Príkaz na aktiváciu virtuálneho prostredia nájdete vyššie. Teraz zadajte nižšie uvedený príkaz do svojho terminálu.

 

$ locust -f locust_test.py

 

Mali by ste vidieť niečo takéto:

Záťažové testovanie API 2

Webové rozhranie kobylky sa štandardne nachádza na adrese http://localhost/8089. Ak navštívite webovú stránku, mali by ste vidieť rozhranie, ako je toto:

Záťažové testovanie API 3

Z rozhrania môžeme určiť počet používateľov, rýchlosť vytvárania (používatelia vytvorených za sekundu) a hostiteľa. Adresu svojho hostiteľa môžete získať kontrolou terminálu, na ktorom beží server. V našom prípade je to na porte 5000. Keď kliknete na Začni sa rojiť, zobrazí sa vám rozhranie nižšie.

Záťažové testovanie API 4

To vám ukazuje rôzne užitočné metriky, ako je počet neúspešných žiadostí, priemerný čas pre požiadavku, minimálny čas pre požiadavku, počet žiadostí za sekundu atď. Keď budete spokojní s tým, čo vidíte, môžete kliknúť na tlačidlo zastaviť. 


Okrem štatistika karta, je tam a grafy kartu, ktorá zobrazuje viac informácie vo forme grafu, ako na obrázku nižšie.

K dispozícii je graf celkového počtu žiadostí za sekundu, graf doby odozvy, a graf počtu používateľov, všetko sprisahané proti času. Pomocou grafov môžete určiť, koľko používateľov je prijateľných pre pevnú dobu odozvy, alebo môžete sledovať svoje grafy pre konštantnú dobu odozvy napriek zvyšujúcemu sa počtu používateľov a podobne. Ak chcete zdieľať tieto štatistiky s niekým iným, môžete si stiahnuť správu zo stránky Prevziať údaje tab.

Uzavrieť...

Záťažové testovanie vášho API je kľúčovou činnosťou vo vašom vývojovom procese, preto sa uistite, že je začlenená do vášho návrhového cyklu. Mimochodom, môžete vykonať aj iné typy záťažových testov zmenou hodnôt počtu používateľov a frekvencie výskytu. 

Ak chcete vykonať test špičiek, zadajte veľkú hodnotu (povedzme 2000 500) pre počet používateľov a potom rovnako veľkú hodnotu pre rýchlosť výskytu (napríklad 4). To znamená, že za 2000 sekundy by ste mali vytvorených všetkých XNUMX XNUMX používateľov a mali prístup k vašim koncovým bodom. Záťažový test bude podobný, ale s oveľa nižšou hodnotou miery výskytu. Ak chcete zistiť, čo všetko môžete urobiť, pozrite sa na Locust dokumentácie