Testkirina Barkirina API-ê Bi Locust re

Testkirina Barkirina API-ê Bi Locust re

Testkirina Barkirina API-ê Bi Locust: Destpêk

Dibe ku hûn berê jî di vê rewşê de bûn: hûn kodek ku tiştek dike, mînakek xalek dawî dinivîsin. Hûn xala dawiya xwe bi karanîna Postman an Bêxewî ceribandine, û her tişt baş dixebite. Hûn xala paşîn digihînin pêşdebirê aliyê xerîdar, yê ku dûv re wê dixwe API û sepanê bi cih dike. Lê dûv re, dema ku bikarhêner serîlêdanê bikar tînin API têk diçe.

Ev dikare bibe rewşek pir acizker ku tê de be, ji bo karsaziyek biha nebêje. Ji ber vê yekê pêşdebirên nermalavê li ser pergalên nermalavê ceribandinên cûrbecûr pêk tînin da ku pê ewle bibin ku ew wekî ku tê xwestin pêk tînin. API ne cûda ne. Berî bicîhkirinê, divê hûn herî kêm ceribandinên performansê û ceribandinên ewlehiyê bikin.

Testên performansê dikarin di ceribandinên fonksiyonê û ceribandinên barkirinê de bêne kom kirin. Testên fonksiyoneliyê ew e ku hûn bi gelemperî ji bo Postman an Bêxewî bikar tînin. Ew piştrast dikin ku API-ya we wekî ku hûn hêvî dikin kar dike. Testên barkirinê, ji hêla din ve, bêtir têkildar in ka API-ya we çawa bi karanîna cîhana rastîn û barkirina pezê re dike, û ya ku ev gotar li ser e. Ka em bi hûrgulî li ceribandinên barkirinê binêrin.

Testkirina Barkirina API-ê çi ye?

Testkirina barkirina API celebek ceribandinê ye ku pêşdebiran bikar tînin da ku barkirina normal û pezê li ser xalên dawiyê simul bikin. Ev celeb ceribandin dihêle pêşdebiran performansa cîhana rastîn a API-ê berî ku were bicîh kirin binirxînin. Ew ji wan re dibe alîkar ku kapasîteya xebitandinê ya herî zêde ya pergalê, kêşan heke hebe, û hilweşîna performansê nas bikin. Testên barkirina API-ê bi gelemperî ji hêla afirandina bikarhênerên virtual ve têne çêkirin û dûv re wan bikar tînin da ku fonksiyona API-ê bi hev re ceribandin. 

Testên barkirina API-ê metrîkên mîna dema bersivê, bikarhênerên hevdem, rêjeyên karûbarê, astên karanîna çavkaniyê, Mean Dema Di Navbera Têkçûniyê (MTBF), Mean Time To Failure (MTTF), û hwd. Hemî van metrîkan dikarin werin bikar anîn da ku diyar bikin ka API çiqas baş dike.

Cureyên Testkirina Barkirinê

Gelek celeb ceribandina barkirinê hene, her yek bi rewşên karanîna xwe re. Ka em hinek ji wan binerin.

Testkirina Barkirinê: Ev forma bingehîn a testa barkirinê ye. Ew ji bo nirxandina performansa pergalek (di vê rewşê de, API) di bin barkirina normal û barkirina lûtkeya çaverêkirî de tê bikar anîn.

Testkirina Stresê: Ev ji bo nirxandina performansa pergalê di bin barek pir giran de tê bikar anîn. Armanca vê ceribandinê ev e ku meriv bibîne ka pergalek piştî têkçûnê xelas dibe, û ew çend dem digire ku wiya bike. Bar bi gelemperî hêdî hêdî zêde dibe heya ku ew ji kapasîteyên pergalê derbas dibe.

Testkirina Spike: Ev hinekî dişibihe ceribandina stresê, ji bilî ku barê giran ji nişkê ve tê sepandin, berevajî ku hêdî hêdî wê bilind dike. Bi vî rengî ceribandinê destnîşan dike ku çi diqewime dema ku di hejmara navînî ya bikarhêner an serdêrên we de ji nişka ve zêdebûnek çêbibe, an dema ku êrîşek DDOS li ser pergala we hebe.

Testkirina Sok: Ev test ne mîna yên din ên li jor e. Ew pergala we dixe binê 80% (an jî li ser) barkirina normal û dihêle ku ew ji bo demek dirêj bixebite, bêje 12 heta 14 demjimêran. Ev celeb ceribandin diyar dike ku pergalek bi demê re çiqas pêbawer e.

Bi Locust re API-yên xwe ceribandin

Pêşdebiran ji bo ceribandina barkirina API-yên xwe gihîştina cûrbecûr vebijarkan hene. Hin amûrên ceribandina barkirinê yên hevpar Gatling, JMeter, û Locust in. Em ê di vê gotarê de li ser Locust bisekinin.

Locust amûrek ceribandina barkirina çavkaniya vekirî-based python e ku ji hêla pargîdaniyên top ên wekî Google, Microsoft, û Riot Games ve tê bikar anîn da ku API-yên xwe ceribandin. Di vê gotarê de, em ê destnîşan bikin ka meriv çawa ceribandinek API-ê bar dike. 

Ji bo vê tutoriyê, ez ê bi Flask re API-yek hêsan biafirînim. Hûn dikarin bi min re bişopînin an tenê API-ya xwe bi Node-yê, an çi çarçoweya ku hûn pê rehet in biafirînin.

pêwîstiyên

python 3

Sazkirin & Sazkirin

Pêşîn, hûn hewce ne ku li ser PC-ya xwe jîngehek virtual saz bikin da ku hûn hawîrdora Python-a xweya gerdûnî tevlihev nekin. Ji bo vê yekê, emrên jêrîn bimeşînin. Bala xwe bidinê ku van fermanan li termînalek Windows-ê bicîh dikin.

Projeya $ mkdir

$ cd /d rê \ ber\proje

$ python -m venv venv

$ venv\Scripts\aktîf bike

 

Pêşî, me afirand a rêvename directory. Dûv re me pelrêça xweya heyî guhert rêvename. Dûv re me di hundurê wê pelrêçê de ji bo Python jîngehek virtual çêkir û çalak kir. 

Naha, em ê derbasî sazkirinê bibin Flask(em ê wê bikar bînin da ku xalên dawî yên ku werin ceribandin biafirînin) û Kêşan bi xwe. 

 

Ji bo sazkirina Flask, bixebitin. Bawer bikin ku hûn di nav de ne rêvename ku we hawîrdorek virtual çêkir.

$ pip pelika sazkirinê

 

Ji bo sazkirina Locust, bixebitin

$ pip locust saz bike

 

Piştî ku ew hat kirin, emrên jêrîn binivîsin. Bawer bikin ku hûn di nav xwe de ne rêvename pelrêça gava ku hûn vê yekê dikin.

$ kopî nul __init__.py

sepana $ mkdir

$ kopî nul app\app.py

$ nul app\__init__.py kopî bike

 

Ev ferman hin pelan diafirîne ku em ê bikar bînin da ku xalên xwe yên dawî bi karanîna Flask biafirînin. Her weha hûn dikarin van pelan bi karanîna geroka pelê xwe bi rê ve biafirînin. Lê kêfa wê çi ye? Piştî ku we wiya kir, koda jêrîn li hundurê kopî bikin app.py

ji flask import Flask, jsonify, daxwaz

app = Flask (__name__)

car_models = [

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

]

 

modelên_ balafirê = [

  {'brand': 'Boeing', 'model': '747' }

]

 

@app.route('/cars')

def get_cars():

  vegere jsonify(car_models)

@app.route('/planes')

def get_planes():

  vegere jsonify(plane_models)

heke __name__ =='__sereke__':

    app.run(debug=True)  

 

Koda jorîn rêbazek dihewîne get_cars tê bikaranîn ji bo bidestxistina lîsteya markayên car û modelên wan, û get_planes ji bo bidestxistina navnîşek markayên balafiran û modelên wan tê bikar anîn. Ji bo ku em vê xala dawîn ceribandinê bar bikin, divê em app.py bimeşînin. Ji bo vê yekê emrê jêrîn bicîh bikin.

$ python rê\to\app.py

Dema ku hûn wê dimeşînin, divê hûn tiştek mîna vê bibînin:

Testkirina Barkirina API 1

Ger hûn URL-ê ji termînalê kopî bikin û binivîsin cars or balafirên piştî /, divê hûn li wir daneyan bibînin. Lêbelê, mebesta me ew e ku em xala dawiyê bi kulînê ceribandin, ne bi gerokê. Îcar em wiya bikin. Fermana jêrîn di koka xwe de bicîh bikin rêvename Peldanka

 

$ kopî nul locust_test.py

 

Ev pelek 'locust_test.py' di koka we de çêdike rêvename directory. Piştî ku we wiya kir, pelê vekin û koda jêrîn bişopînin. Em ê di demek kurt de rave bikin.

 

dema îthalê

ji kulm import HttpUser, erk, di navbera

 

class Behaviour Bikarhêner (HttpBikarhêner):

    dema_bendê = di navbera (5, 10)

 

    @karî

    def get_cars(xwe):

        self.client.get('/cars')

    

    @karî

    def get_planes(xwe):

        self.client.get('/planes')

 

Ev mînakek bingehîn a karanîna Locust-ê ye ku ceribandinek API-ê bar bike. Pêşîn, em çînek ava dikin Bikarhêner Behaviour, ku dikare her navekî guncan lê were dayîn lê divê were dirêj kirin HttpUser. HttpUser çîna e ku balê dikişîne ser destnîşankirina gelek bikarhênerên virtual da ku karên ku em di nav de destnîşan dikin bi cih bînin Bikarhêner Behaviour sinif. 

Karek bi xemilandina rêbazek bi ya tê diyar kirin @karî decorator. Her weha fonksiyonek me heye ku jê re tê gotin navber() ku destûrê dide me ku em rêzek saniyeyan diyar bikin ku em li bendê bimînin berî ku em karê din bikin. Hûn dikarin bibînin ku me ji bo wê di koda xwe de rêzek ji 5 heta 10 saniyeyan veqetandiye. 

Ji bo xebitandina kodê, pê ewle bine ku hûn hîn jî di hawîrdora xweya virtual de ne. Ger ya ku we afirandiye ji hêla servera ku ji API-ê re xizmet dike tê bikar anîn, termînalek nû vekin, pelrêça xwe biguherînin rêvename pelrêça, û jîngeha virtual ku we çêkiriye çalak bikin. Hûn dikarin fermana çalakkirina jîngehek virtual li jor bibînin. Naha, emrê jêrîn di termînala xwe de têkevin.

 

$ locust -f locust_test.py

 

Divê hûn tiştek wusa bibînin:

Testkirina Barkirina API 2

Ji hêla xwerû, navgîniya webê ya locust li http://localhost/8089-ê ye. Ger hûn serdana malperê bikin, divê hûn pêwendiyek weha bibînin:

Testkirina Barkirina API 3

Ji navrûyê, em dikarin hejmara bikarhêneran, rêjeya spawnê (bikarhênerên ku di çirkeyê de hatine afirandin) û Host diyar bikin. Hûn dikarin navnîşana mêvandarê xwe bi kontrolkirina termînala ku server lê dixebite bistînin. Di rewşa me de, ew li portê ye 5000. Dema ku hûn li ser bitikînin Dest bi rijandinê bike, hûn ê bi navgîniya jêrîn re werin pêşkêş kirin.

Testkirina Barkirina API 4

Ev metrîkên cihêreng ên kêrhatî yên wekî hejmara daxwazên têkçûyî, dema navînî ji bo daxwazek, dema herî hindik ji bo daxwazek, daxwaziyên her çirkeyê, û hwd nîşanî we dide. Dema ku hûn ji tiştê ku hûn dibînin razî bibin, hûn dikarin li ser bişkoja rawestandinê bikirtînin. 


Ji bilî Jimare tab, heye charts tabloya ku bêtir nîşan dide agahî di forma grafîkê de, mîna wêneya jêrîn.

Li wir e daxwazên giştî per graph duyemîn, grafika dema bersivdayînê, û grafika hejmara bikarhêneran, hemû li dijî demê plan kirin. Bi karanîna grafiyan, hûn dikarin diyar bikin ka çend bikarhêner ji bo demek bersivê ya sabît têne qebûl kirin, an hûn dikarin nexşeyên xwe ji bo demek bersivê ya domdar tevî hejmareke zêde ya bikarhêneran, û têgihiştinên din ên mîna wî bişopînin. Heke hûn dixwazin van parve bikin stats bi kesekî din re, hûn dikarin raporek ji ser dakêşînin Daxistin tablo

Ji bo encamdana ...

Barkirina ceribandina API-ya we di pêvajoya pêşkeftina we de çalakiyek girîng e, ji ber vê yekê pê ewle bin ku ew di çerxa sêwirana we de tête navandin. Bi awayê, hûn dikarin celebên ceribandina barkirinê yên din jî bi guheztina nirxan ji bo hejmara bikarhêneran û rêjeya hilavêtinê pêk bînin. 

Heke hûn dixwazin ceribandinek spikek bikin, ji bo hejmara bikarhêneran nirxek mezin diyar bikin (bibêjin 2000), û dûv re jî ji bo rêjeya xweya paşîn nirxek wekhev mezin diyar bikin (mînakek 500). Ev tê wê wateyê ku di 4 çirkeyan de, hûn ê hemî 2000 bikarhêneran biafirînin û bigihîjin xalên xwe yên dawî. Testek stresê dê mîna hev be, lê bi nirxek pir kêmtir ji bo rêjeya spawn. Ji bo ku hûn her tiştê ku hûn dikarin bikin, bibînin Locust belge