API-kuormitustestaus Locustin kanssa

API-kuormitustestaus Locustin kanssa

API-kuormitustestaus Locustin kanssa: Johdanto

Olet todennäköisesti ollut tässä tilanteessa ennenkin: kirjoitat koodia, joka tekee jotain, esimerkiksi päätepisteen. Testaat päätepisteesi Postmanilla tai Insomnialla, ja kaikki toimii hyvin. Välität päätepisteen asiakaspuolen kehittäjälle, joka sitten käyttää API ja ottaa sovelluksen käyttöön. Mutta sitten API epäonnistuu, kun käyttäjät käyttävät sovellusta.

Tämä voi olla erittäin ärsyttävä tilanne, puhumattakaan kallista yritykselle. Tästä syystä ohjelmistokehittäjät tekevät erilaisia ​​testejä ohjelmistojärjestelmille varmistaakseen, että ne toimivat odotetulla tavalla. API:t eivät eroa toisistaan. Ennen käyttöönottoa sinun tulee tehdä vähintään suorituskykytestit ja tietoturvatestit.

Suorituskykytestit voidaan ryhmitellä toiminnallisuustesteiksi ja kuormitustesteiksi. Toimivuustestejä käytetään yleensä Postmania tai Insomniaa varten. Ne varmistavat, että API toimii odotetulla tavalla. Toisaalta kuormitustestit liittyvät enemmän siihen, kuinka API toimii todellisessa käytössä ja huippukuormituksessa, ja siitä tässä artikkelissa on kyse. Katsotaanpa kuormitustestejä tarkemmin.

Mikä on API-kuormitustestaus?

API-kuormitustestaus on testauksen tyyppi, jota kehittäjät käyttävät päätepisteiden normaalin ja huippukuormituksen simulointiin. Tällaisen testauksen avulla kehittäjät voivat arvioida API:n todellisen suorituskyvyn ennen sen käyttöönottoa. Se auttaa heitä tunnistamaan järjestelmän suurimman toimintakapasiteetin, mahdolliset pullonkaulat ja suorituskyvyn heikkenemisen. API-kuormitustestit tehdään yleensä luomalla virtuaalisia käyttäjiä ja käyttämällä niitä sitten API:n toimivuuden testaamiseen samanaikaisesti. 

API-kuormitustestit mittaavat mittareita, kuten vasteaikaa, samanaikaisia ​​käyttäjiä, suoritusnopeutta, resurssien käyttöastetta, keskimääräistä epäonnistumisaikaa (MTBF), keskimääräistä epäonnistumisaikaa (MTTF) ja niin edelleen. Kaikkia näitä mittareita voidaan käyttää määrittämään, kuinka hyvin API toimii.

Kuormitustestaustyypit

Kuormitustestauksia on useita tyyppejä, joista jokaisella on käyttötapansa. Katsotaanpa joitain niistä.

Kuormitustestaus: Tämä on kuormitustestin perusmuoto. Sitä käytetään arvioimaan järjestelmän (tässä tapauksessa API) suorituskykyä normaalissa kuormituksessa ja odotetussa huippukuormituksessa.

Stressitesti: Tätä käytetään arvioimaan järjestelmän suorituskykyä erittäin raskaassa kuormituksessa. Tämän testin tavoitteena on nähdä, palautuuko järjestelmä vian jälkeen ja kuinka kauan se kestää. Kuormaa nostetaan yleensä hitaasti, kunnes se ylittää järjestelmän kyvyt.

Piikkitestaus: Tämä on vähän samanlainen kuin stressitestaus, paitsi että raskas kuormitus kohdistetaan äkillisesti sen sijaan, että sitä nostetaan hitaasti. Tällainen testi edustaa, mitä tapahtuu, kun keskimääräisessä käyttäjien tai vierailijoiden määrässä on äkillinen piikki tai kun järjestelmääsi kohdistuu DDOS-hyökkäys.

Liotustesti: Tämä testi on toisin kuin muut yllä olevat testit. Se asettaa järjestelmän alle 80 % (tai noin) normaalista kuormituksesta ja jättää sen toimimaan pitkäksi aikaa, esimerkiksi 12–14 tunniksi. Tällainen testi määrittää, kuinka luotettava järjestelmä on ajan mittaan.

Lataa sovellusliittymien testaus Locustilla

Kehittäjät voivat käyttää erilaisia ​​vaihtoehtoja sovellusliittymiensä kuormitustestaukseen. Joitakin yleisiä kuormitustestaustyökaluja ovat Gatling, JMeter ja Locust. Keskitymme tässä artikkelissa Locustiin.

Locust on python-pohjainen avoimen lähdekoodin kuormitustestaustyökalu, jota huippuyritykset, kuten Google, Microsoft ja Riot Games, käyttävät sovellusliittymiensä testaamiseen. Tässä artikkelissa näytämme, kuinka ladata testisovellusliittymä. 

Tätä opetusohjelmaa varten luon yksinkertaisen API:n Flaskilla. Voit seurata kanssani tai vain luoda API:si Nodella tai millä tahansa kehyksellä, johon olet tyytyväinen.

vaatimukset

Python 3

Asennus ja asennus

Ensin sinun on määritettävä virtuaalinen ympäristö tietokoneellesi, jotta et sotke globaalia Python-ympäristöäsi. Voit tehdä sen suorittamalla seuraavat komennot. Huomaa, että nämä komennot koskevat Windows-päätettä.

$ mkdir projekti

$ cd /d polku\projektiin

$ python -m venv venv

$ venv\Scripts\activate

 

Ensin loimme a projekti hakemistosta. Sitten muutimme nykyisen hakemistomme muotoon projekti. Sitten loimme ja aktivoimme virtuaalisen ympäristön Pythonille kyseisessä hakemistossa. 

Nyt siirrymme asennukseen Pullo(käytämme sitä kuormitustestattavien päätepisteiden luomiseen) ja heinäsirkka itse. 

 

Asenna Flask suorittamalla. Varmista, että olet mukana projekti jossa loit virtuaalisen ympäristön.

$ pip asennuspullo

 

Asenna Locust suorittamalla

$ pip asentaa locust

 

Kun tämä on tehty, kirjoita seuraavat komennot. Varmista, että olet omassasi projekti hakemistoon, kun teet tämän.

$ copy nul __init__.py

$ mkdir -sovellus

$ kopioi null app\app.py

$ kopioi nul app\__init__.py

 

Tämä komento luo tiedostoja, joita käytämme päätepisteiden luomiseen Flaskilla. Voit myös luoda nämä tiedostot käyttämällä tiedostojenhallintaa. Mutta mitä hauskaa siinä on? Kun olet tehnyt sen, kopioi alla oleva koodi app.py

pullosta tuonti Pullo, jsonify, request

sovellus = Pullo(__name__)

car_models = [

  { 'brändi': 'Tesla', 'malli': 'Model S' }

]

 

plane_models = [

  { 'brändi': 'Boeing', 'malli': '747' }

]

 

@app.route('/cars')

def get_cars():

  return jsonify(car_models)

@app.route('/lentokoneet')

def get_planes():

  return jsonify(lentokone_mallit)

jos __nimi__ == '__main__':

    app.run(debug=True)  

 

Yllä oleva koodi sisältää menetelmän hanki_autot käytetään saadakseen luettelon automerkeistä ja niiden malleista, ja get_planes käytetään saadakseen luettelon lentokonemerkeistä ja niiden malleista. Jotta voimme ladata tämän päätepisteen, meidän on suoritettava app.py. Voit tehdä sen suorittamalla alla olevan komennon.

$ python polku\to\app.py

Kun suoritat sen, sinun pitäisi nähdä jotain tällaista:

API-kuormitustestaus 1

Jos kopioit URL-osoitteen päätteestä ja kirjoitat autot or lentokoneet /-merkin jälkeen sinun pitäisi voida nähdä tiedot siellä. Tavoitteemme on kuitenkin testata päätepistettä heinäsirkkalla, ei selaimella. Joten tehdään se. Suorita seuraava komento tiedostosi juuressa projekti hakemistoon.

 

$ copy nul locust_test.py

 

Tämä luo locust_test.py-tiedoston juureen projekti hakemistosta. Kun olet tehnyt sen, avaa tiedosto ja liitä alla oleva koodi. Selitämme sen pian.

 

tuontiaika

heinäsirkkatuonti HttpUser, tehtävä, välillä

 

luokan käyttäjän käyttäytyminen (HttpUser):

    odotusaika = välillä(5, 10)

 

    @tehtävä

    def get_cars(itse):

        self.client.get('/cars')

    

    @tehtävä

    def get_planes(itse):

        self.client.get('/planes')

 

Tämä on perusesimerkki Locustin käyttämisestä API:n lataustestaukseen. Ensin luomme luokan Käyttäjän käyttäytyminen, jolle voidaan antaa mikä tahansa sopiva nimi, mutta sen on laajennettava HttpUser. HttpUser on luokka, joka huolehtii useiden virtuaalisten käyttäjien instantoimisesta suorittamaan määrittämiämme tehtäviä Käyttäjän käyttäytyminen luokka. 

Tehtävä määritetään koristelemalla menetelmällä @tehtävä sisustusarkkitehti. Meillä on myös toiminto nimeltä välillä() jonka avulla voimme määrittää sekuntialueen, jonka odotamme ennen seuraavan tehtävän suorittamista. Näet, että määritimme koodissamme sille 5–10 sekuntia. 

Suorita koodi varmistamalla, että olet edelleen virtuaaliympäristössäsi. Jos luomaasi palvelin käyttää API:a, avaa uusi pääte, vaihda hakemistosi projekti hakemistoon ja aktivoi luomasi virtuaaliympäristö. Löydät virtuaaliympäristön aktivointikomennon yllä. Kirjoita nyt alla oleva komento terminaaliin.

 

$ locust -f locust_test.py

 

Sinun pitäisi nähdä jotain tällaista:

API-kuormitustestaus 2

Oletuksena locustin verkkokäyttöliittymä sijaitsee osoitteessa http://localhost/8089. Jos vierailet verkkosivustolla, sinun pitäisi nähdä seuraavanlainen käyttöliittymä:

API-kuormitustestaus 3

Käyttöliittymästä voimme määrittää käyttäjien määrän, syntymisnopeuden (sekunnissa luotuja käyttäjiä) ja isännän. Voit saada isäntäsi osoitteen tarkistamalla terminaalin, jossa palvelin on käynnissä. Meidän tapauksessamme se on portissa 5000. Kun napsautat Aloita parvi, sinulle näytetään alla oleva käyttöliittymä.

API-kuormitustestaus 4

Tämä näyttää useita hyödyllisiä mittareita, kuten epäonnistuneiden pyyntöjen määrän, pyynnön keskimääräisen keston, pyynnön vähimmäisajan, pyynnöt sekunnissa ja niin edelleen. Kun olet tyytyväinen näkemäänsä, voit napsauttaa pysäytyspainiketta. 


Lisäksi tilastotiedot -välilehdessä on a Kaaviot välilehti, joka näyttää enemmän tiedot kaavion muodossa, kuten alla olevassa kuvassa.

Tuolla on pyyntöjen kokonaismäärä sekunnissa, vasteaikakaavio, ja käyttäjien määrä -kaavio, kaikki on suunniteltu aikaa vastaan. Kaavioiden avulla voit määrittää, kuinka monta käyttäjää on hyväksyttävissä kiinteään vasteaikaan, tai voit tarkkailla kaavioitasi jatkuvalla vasteajalla huolimatta lisääntyvästä käyttäjien määrästä ja muista vastaavista oivalluksista. Jos haluat jakaa nämä tilastot jonkun muun kanssa voit ladata raportin osoitteesta Lataa tiedot Tab.

Lopuksi...

Sovellusliittymän kuormitustestaus on keskeinen toiminto kehitysprosessissasi, joten varmista, että se on sisällytetty suunnittelujaksoosi. Muuten, voit suorittaa myös muita kuormitustestityyppejä vaihtelemalla käyttäjien lukumäärän ja syntymisnopeuden arvoja. 

Jos haluat tehdä piikkitestin, määritä suuri arvo (esim. 2000) käyttäjien määrälle ja sitten yhtä suuri arvo syntymisnopeudelle (esimerkiksi 500). Tämä tarkoittaa, että neljässä sekunnissa sinulla on kaikki 4 käyttäjää luotuja ja pääsevät käyttämään päätepisteitäsi. Stressitesti on samanlainen, mutta paljon pienemmällä syntymisnopeudella. Jos haluat tietää, mitä voit tehdä, tutustu Locustiin dokumentointi