APIaren karga-probak Locust-ekin

APIaren karga-probak Locust-ekin

Locust-ekin APIaren karga-probak: sarrera

Ziurrenik egoera honetan egon zara aurretik: zerbait egiten duen kodea idazten duzu, amaierako puntu bat adibidez. Postman edo Insomnia erabiliz probatzen duzu amaierako puntua, eta dena ondo funtzionatzen du. Amaiera-puntua bezeroaren alboko garatzaileari pasatzen diozu, eta hark kontsumitzen du API eta aplikazioa zabaltzen du. Baina gero, APIak huts egiten du erabiltzaileek aplikazioa erabiltzen dutenean.

Egoera oso gogaikarria izan daiteke, negozio batentzat garestia izan gabe. Horregatik software-garatzaileek hainbat proba egiten dituzte software-sistemetan, espero bezala funtzionatzen dutela ziurtatzeko. APIak ez dira desberdinak. Inplementatu aurretik, gutxienez errendimendu-probak eta segurtasun-probak egin beharko dituzu.

Errendimendu-probak funtzionalitate-probetan eta karga-probetan multzoka daitezke. Funtzionalitate-probak Postman edo Insomnia erabiltzen dituzunak dira. Zure APIak espero duzun moduan funtzionatzen duela ziurtatzen dute. Karga-probak, berriz, gehiago arduratzen dira zure APIak mundu errealeko erabilerarekin eta karga gorenarekin nola funtzionatzen duen, eta horri buruzkoa da artikulu hau. Ikus ditzagun karga-probak xehetasun gehiagorekin.

Zer da API Load Testing?

API karga-probak garatzaileek erabiltzen duten proba mota bat da, amaierako puntuetan karga normala eta gailurra simulatzeko. Proba mota honi esker, garatzaileek API baten mundu errealeko errendimendua ebaluatzen dute zabaldu aurretik. Sistema baten funtzionamendu-ahalmen maximoa, botila-lepoak egonez gero eta errendimenduaren degradazioa identifikatzen laguntzen die. APIaren karga-probak erabiltzaile birtualak sortuz eta gero APIaren funtzionaltasuna aldi berean probatzeko erabiliz egiten dira. 

API karga probek neurriak neurtzen dituzte, besteak beste, erantzun-denbora, aldibereko erabiltzaileak, errendimendu-tasak, baliabideen erabilera-mailak, hutsegiteen arteko batez besteko denbora (MTBF), hutsegitearen batez besteko denbora (MTTF) eta abar. Neurri hauek guztiak erabil daitezke APIa zein ondo dagoen zehazteko.

Karga-proba motak

Hainbat karga proba mota daude, bakoitza bere erabilera kasuekin. Ikus ditzagun horietako batzuk.

Karga-probak: Hau da karga-probaren oinarrizko forma. Sistema baten (kasu honetan, API bat) errendimendua ebaluatzeko erabiltzen da karga arruntean eta espero den karga gailurrean.

Estres probak: Hau oso karga astun baten azpian sistema baten errendimendua ebaluatzeko erabiltzen da. Proba honen helburua porrotaren ondoren sistema bat berreskuratzen den eta zenbat denbora behar duen ikusteko da. Karga normalean poliki-poliki igotzen da sistemaren gaitasunak gainditzen dituen arte.

Spike Proba: Estresaren probaren apur bat antzekoa da, karga astuna bat-batean aplikatzen den izan ezik, poliki-poliki gora egitearen aurka. Proba mota honek zure batez besteko erabiltzaile edo bisitari kopuruan bat-bateko gorakada bat dagoenean edo zure sisteman DDOS eraso bat dagoenean gertatzen dena adierazten du.

Bertze proba: Proba hau goiko besteekin ez bezalakoa da. Zure sistema karga normalaren % 80 (edo gutxi gorabehera) azpian jartzen du eta martxan uzten du denbora luzez, esate baterako, 12 eta 14 ordu bitartean. Proba mota honek sistema bat denboran zehar zein fidagarria den zehazten du.

Kargatu zure APIak probatzen Locust-ekin

Garatzaileek beren APIak kargatzeko probak egiteko hainbat aukeratarako sarbidea dute. Karga probak egiteko tresna arrunt batzuk Gatling, JMeter eta Locust dira. Artikulu honetan Locust-en zentratuko gara.

Locust python-en oinarritutako kode irekiko karga probatzeko tresna bat da Google, Microsoft eta Riot Games bezalako enpresek erabiltzen duten APIak probatzeko. Artikulu honetan, API bat proba nola kargatu erakutsiko dugu. 

Tutorial honetarako, API sinple bat sortuko dut Flask-ekin. Nirekin jarraitu dezakezu edo zure APIa sortu dezakezu Node-rekin, edo eroso zauden edozein esparrurekin.

Baldintzak

Python 3

Konfigurazioa eta instalazioa

Lehenik eta behin, zure ordenagailuan ingurune birtual bat konfiguratu behar duzu zure Python ingurune globala nahastu ez dezazun. Horretarako, exekutatu komando hauek. Kontuan izan komando hauek Windows terminal bati aplikatzen zaizkiola.

$ mkdir proiektua

$ cd /d bidea\proiektura

$ python -m venv venv

$ venv\Scripts\aktibatu

 

Lehenik eta behin, bat sortu genuen proiektua direktorioa. Ondoren, gure uneko direktorioa aldatu genuen proiektua. Ondoren, direktorio horren barruan Pythonentzako ingurune birtual bat sortu eta aktibatu genuen. 

Orain, instalatzera pasatuko gara Matrazea(karga probatu beharreko amaierako puntuak sortzeko erabiliko dugu) eta Locust bera. 

 

Flask instalatzeko, exekutatu. Ziurtatu barruan zaudela proiektua non ingurune birtual bat sortu zenuen.

$ pip instalatzeko matrazea

 

Locust instalatzeko, exekutatu

$ pip install locust

 

Hori eginda, idatzi komando hauek. Ziurtatu zure barruan zaudela proiektua direktorioa hau egiten duzunean.

$ copy nul __init__.py

$ mkdir aplikazioa

$ copy nul app\app.py

$ kopiatu nul aplikazioa\__init__.py

 

Komando honek Flask erabiliz gure amaierako puntuak sortzeko erabiliko ditugun fitxategi batzuk sortzen ditu. Fitxategi hauek zure fitxategi-esploratzailea erabiliz ere sor ditzakezu bide batez. Baina zer dibertigarria da horretan? Hori egin ondoren, kopiatu beheko kodea aplikazioa.py

flask import from Flask, jsonify, request

aplikazioa = Flasko (__izena__)

auto_modeloak = [

  { 'marka': 'Tesla', 'model': 'S eredua'}

]

 

plano_ereduak = [

  { 'marka': 'Boeing', 'eredua': '747'}

]

 

@app.route('/autoak')

def get_cars():

  itzuli jsonify(auto_modeloak)

@app.route('/planes')

def get_planes():

  itzuli jsonify(plane_models)

__izena__ == '__ nagusia__' bada:

    app.run(araztea=Egia)  

 

Goiko kodeak metodo bat dauka lortu_kotxeak auto-marken eta haien modeloen zerrenda lortzeko erabiltzen da, eta lortu_hegazkinak hegazkin-marken eta haien modeloen zerrenda lortzeko erabiltzen da. Amaierako puntu hau proba kargatzeko, app.py exekutatu behar dugu. Horretarako, exekutatu beheko komandoa.

$ python bidea\to\app.py

Hori exekutatzen duzunean, honelako zerbait ikusi beharko zenuke:

APIaren karga-proba 1

Terminaletik URLa kopiatzen baduzu eta idatzi autoak or planoak / ondoren, datuak bertan ikusteko aukera izan beharko zenuke. Hala ere, gure helburua amaiera puntua locust-ekin probatzea da, ez arakatzailearekin. Beraz, egin dezagun hori. Exekutatu hurrengo komandoa zure erroan proiektua direktorioa.

 

$ copy nul locust_test.py

 

Honek 'locust_test.py' fitxategi bat sortzen du zure erroan proiektua direktorioa. Hori egin ondoren, ireki fitxategia eta itsatsi beheko kodea. Laster azalduko dugu.

 

inportatzeko denbora

locust import HttpUser, zeregina, artean

 

Erabiltzaileen portaera klasea (HttpUser):

    itxaron_denbora = artean (5, 10)

 

    @zeregin

    def get_cars(auto):

        self.client.get('/autoak')

    

    @zeregin

    def get_planes(auto):

        self.client.get('/planes')

 

Hau Locust erabiltzearen oinarrizko adibidea da API bat probatzeko. Lehenik eta behin, klase bat sortuko dugu Erabiltzaileen portaera, edozein izen egoki eman daitekeena baina luzatu behar duena HttpUser. HttpUser atalean zehazten ditugun zereginak burutzeko hainbat erabiltzaile birtual instantziatzeaz arduratzen den klasea da Erabiltzaileen portaera klasea. 

Zeregin bat metodo bat apainduz zehazten da @zeregin dekoratzailea. izeneko funtzio bat ere badugu artean() horri esker, hurrengo zeregina exekutatu aurretik itxaron beharreko segundo tarte bat zehaztea ahalbidetzen digu. Gure kodean horretarako 5 eta 10 segundo bitarteko tartea esleitu geniola ikus dezakezu. 

Kodea exekutatzeko, ziurtatu zure ingurune birtualean zaudela oraindik. Sortu duzuna APIa zerbitzatzen duen zerbitzariak erabiltzen badu, ireki terminal berri bat, aldatu zure direktorioa zure proiektua direktorioa eta aktibatu zuk sortutako ingurune birtuala. Goian ingurune birtual bat aktibatzeko komandoa aurki dezakezu. Orain, sartu beheko komandoa zure terminalean.

 

$ locust -f locust_test.py

 

Hau bezalako zerbait ikusi beharko zenuke:

APIaren karga-proba 2

Lehenespenez, locust-en web interfazea http://localhost/8089 helbidean dago. Webgunea bisitatzen baduzu, honelako interfaze bat ikusi beharko zenuke:

APIaren karga-proba 3

Interfazetik, erabiltzaile kopurua, sorkuntza-tasa (segundoko sortutako erabiltzaileak) eta ostalaria zehaztu ditzakegu. Zure ostalariaren helbidea lor dezakezu zerbitzaria exekutatzen ari den terminala egiaztatuz. Gure kasuan, 5000 atakan dago. Sakatzen duzunean Hasi biraka, beheko interfazea aurkeztuko zaizu.

APIaren karga-proba 4

Honek hainbat neurketa erabilgarria erakusten dizkizu, hala nola, huts egindako eskaera kopurua, eskaera baten batez besteko denbora, eskaera baten gutxieneko denbora, segundoko eskaerak, etab. Ikusten duzunarekin pozik zaudenean, gelditu botoian klik egin dezakezu. 


Gainera Estatistikak fitxa, bat dago Charts gehiago erakusten duen fitxa informazio grafiko moduan, beheko irudian bezala.

Ez dago segundo bakoitzeko eskaerak guztira, erantzun denbora grafikoa, erabiltzaile kopurua grafikoa, denak denboraren aurka eginak. Grafikoak erabiliz, erantzun-denbora finko baterako zenbat erabiltzaile onar daitezkeen zehaztu dezakezu, edo zure grafikoak erantzun-denbora etengabean beha ditzakezu erabiltzaile-kopurua gero eta gehiago izan arren, eta horrelako beste informazio batzuk. Hauek partekatu nahi badituzu stats beste norbaitekin, txosten bat deskarga dezakezu Deskargatu datuak fitxa.

Amaitzeko...

Zure APIa kargatzea probatzea funtsezko jarduera da zure garapen-prozesuan, beraz, ziurtatu zure diseinu-zikloan sartuta dagoela. Bide batez, beste karga-proba mota batzuk ere egin ditzakezu erabiltzaile kopuruaren eta sorkuntza-tasaren balioak aldatuz. 

Spike test bat egin nahi baduzu, zehaztu balio handi bat (esaterako 2000) erabiltzaile-kopuruarentzat, eta gero balio berdin handi bat zure sorkuntza-tasa (500 adibidez). Horrek esan nahi du 4 segundotan 2000 erabiltzaile guztiak sortuko dituzula eta zure amaierako puntuetara atzituko dituzula. Estres proba antzekoa izango da, baina sortze-tasa askoz balio txikiagoarekin. Egin dezakezun guztia jakiteko, begiratu Locust dokumentazioa