API Kuyedzwa Kwemutoro Nemhashu

API Kuyedzwa Kwemutoro Nemhashu

API Kuyedzwa Kwemutoro Nemhashu: Intro

Iwe wakambove uri mumamiriro ezvinhu aya kare: iwe unonyora kodhi inoita chimwe chinhu, yekupedzisira semuenzaniso. Iwe unoedza yako yekupedzisira uchishandisa Postman kana Insomnia, uye zvese zvinoshanda zvakanaka. Iwe unopfuudza pamagumo kune mutengi-parutivi mugadziri, uyo anobva adya iyo API uye inotumira application. Asi ipapo, iyo API inotadza kana vashandisi vachishandisa iyo app.

Iyi inogona kuve yakanyanya kutsamwisa mamiriro ekuve mairi, tisingataure inodhura kune bhizinesi. Ndosaka vagadziri vesoftware vachiita bvunzo dzakasiyana-siyana pamasoftware masisitimu kuti vaone kuti vanoita sezvaitarisirwa. MaAPI haana kusiyana. Usati watumirwa, iwe unofanirwa kuita kanenge bvunzo dzekuita uye bvunzo dzekuchengetedza.

Maonero ekuita anogona kuiswa mumiedzo yekushanda uye bvunzo dzekutakura. Kushanda bvunzo ndizvo zvaunowanzo shandisa Postman kana Insomnia. Vanoona kuti API yako inoshanda sezvaunotarisira. Miedzo yekutakura, kune rumwe rutivi, inonyanya kunetseka nemabatiro anoita API yako nekushandiswa kwepasirese uye peak mutoro, uye ndizvo zvinorehwa nechinyorwa ichi. Ngatitarisei bvunzo dzekutakura mune zvakadzama.

Chii chinonzi API Load Testing?

API mutoro wekuyedza imhando yevagadziri vekuyedza kutevedzera zvakajairwa uye peak mutoro pamagumo. Rudzi urwu rwekuyedza runoita kuti vanogadzira vaongorore mashandiro epasirese eAPI isati yaiswa. Iyo inovabatsira kuona iyo yakanyanya kushanda simba rehurongwa, mabhodhoro kana aripo, uye kuderera kwekuita. API mutoro bvunzo dzinowanzoitwa nekugadzira chaiwo vashandisi vobva vavashandisa kuyedza mashandiro eAPI panguva imwe chete. 

API mutoro bvunzo inoyera metrics senge nguva yekupindura, vashandisi venguva imwe chete, mareti ekupinda, mazinga ekushandisa zviwanikwa, Mean Time Pakati Kukundikana(MTBF), Mean Time To Failure(MTTF), zvichingodaro. Ese metrics aya anogona kushandiswa kuona kuti API iri kuita sei.

Types Of Load Testing

Kune akati wandei marudzi ekuyedzwa kwemutoro, imwe neimwe iine makesi ekushandisa. Ngatimboonai mamwe acho.

Kuedzwa Kwekutakura: Iyi ndiyo nzira yekutanga yekuyedzwa kwemutoro. Inoshandiswa kuongorora mashandiro ehurongwa (mune iyi kesi, API) pasi peyakajairika mutoro uye inotarisirwa mutoro wepamusoro.

Stress Testing: Izvi zvinoshandiswa kuongorora kushanda kwehurongwa pasi pemutoro unorema zvikuru. Chinangwa chemuedzo uyu ndechekuona kana hurongwa huchidzoka mushure mekukundikana, uye kuti zvinotora nguva yakareba sei kuzviita. Mutoro unowanzo kukwidzwa zvishoma nezvishoma kusvika wapfuura kugona kweiyo system.

Spike Testing: Izvi zvakangofanana nekuyedzwa kwekushushikana, kunze kwekunge mutoro unorema waiswa kamwe kamwe, kupesana nekukwidza zvishoma nezvishoma kumusoro. Iyi mhando yebvunzo inomiririra zvinoitika kana paine kamwe kamwe spike muavhareji nhamba yevashandisi kana vashanyi, kana kana paine kurwiswa kweDDOS pane yako system.

Soak Testing: Muedzo uyu hauna kusiyana nemimwe iri pamusoro. Inoisa system yako pasi pe80% (kana ipapo) yemutoro wakajairwa uye inoisiya ichimhanya kwenguva yakareba, iti maawa gumi nemaviri kusvika gumi nemana. Rudzi urwu rwekuyedza runoona kuti yakavimbika sei system nekufamba kwenguva.

Rodha Kuedza MaAPI Ako Nemhashu

Vagadziri vanokwanisa kuwana dzakasiyana siyana sarudzo dzekuyedza mitoro maAPI avo. Mamwe maturusi akajairwa ekuyedza maturusi ndiGatling, JMeter, uye Mhashu. Tichange tichitarisa paMhashu muchinyorwa chino.

Mhashu ipython-based open-source load test tool inoshandiswa nemakambani makuru akadai seGoogle, Microsoft, uye Riot Games kuyedza maAPI avo. Muchikamu chino, ticharatidza maitiro ekurodha bvunzo API. 

Kune iyi dzidziso, ini ndichave ndichigadzira iri nyore API neFlask. Iwe unogona kutevera pamwe neni kana kungogadzira yako API neNode, kana chero chimiro chaunonzwa wakasununguka nacho.

zvinodiwa

Python 3

Kugadzirisa & Kuisa

Kutanga, iwe unofanirwa kumisikidza chaiyo nharaunda paPC yako kuitira kuti usakanganise yako yepasi rose Python nharaunda. Kuti uite izvozvo, shandisa mirairo inotevera. Ziva kuti iyi mirairo inoshanda kune Windows terminal.

$ mkdir chirongwa

$ cd / d nzira \ ku \ chirongwa

$ python -m venv venv

$ venv\Scripts\activate

 

Kutanga, takagadzira a purojekiti directory. Ipapo takachinja dhairekitori redu razvino kuti purojekiti. Isu takazogadzira uye nekumisikidza chaiyo nharaunda yePython mukati meiyo dhairekitori. 

Zvino, isu tichaenderera mberi nekuisa Flask(tichaishandisa kugadzira magumo kuti aedzwe) uye Locust pacharo. 

 

Kuisa Flask, mhanya. Ita shuwa kuti uri mu purojekiti kwawakagadzira nharaunda chaiyo.

$ pip kuisa flask

 

Kuisa Mhashu, mhanya

$ pip isa mhashu

 

Kana zvangoitwa, nyora mirairo inotevera. Iva nechokwadi chokuti uri mukati mako purojekiti directory paunoita izvi.

$ copy nul __init__.py

$ mkdir app

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Iyi mirairo inogadzira mamwe mafaera atichashandisa kugadzira edu ekupedzisira tichishandisa Flask. Iwe unogona zvakare kugadzira mafaera aya uchishandisa yako faira muongorori nenzira. Asi chii chinofadza ipapo? Kana waita izvozvo, kopira iri pazasi kodhi mukati app.py

kubva kune flask import Flask, jsonify, kukumbira

app = Flask(__zita__)

mota_mienzaniso = [

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

]

 

ndege_mienzaniso = [

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

]

 

@app.route('/cars')

def get_cars():

  return jsonify(car_models)

@app.route('/planes')

def get_planes():

  return jsonify(plane_models)

kana __zita__ == '__main__':

    app.run(debug=Chokwadi)  

 

Kodhi iri pamusoro ine nzira tora_mota aimbowana runyorwa rwemhando dzemotokari nemhando dzadzo, uye get_planes aimbowana runyorwa rwemhando dzendege nemhando dzadzo. Kuti isu tiise bvunzo iyi yekupedzisira, isu tinofanirwa kumhanya app.py. Kuti uite izvozvo shandisa murairo uri pasi apa.

$ python nzira\ku\app.py

Paunenge uchimhanya izvo, iwe unofanirwa kuona chimwe chinhu chakadai:

API Load Testing 1

Kana iwe ukakopa iyo URL kubva kune terminal uye nyora motokari or ndege mushure me /, iwe unofanirwa kuona iyo data ipapo. Nekudaro, chinangwa chedu ndechekuyedza iyo yekupedzisira nemhashu, kwete nebrowser. Saka ngatiite izvozvo. Mhanya unotevera kuraira mumudzi we yako purojekiti dhairetori.

 

$ copy nul locust_test.py

 

Izvi zvinogadzira 'locust_test.py' faira mumudzi wako purojekiti directory. Kana wapedza izvozvo, vhura faira uye unamate mune iri pazasi kodhi. Tichazvitsanangura munguva pfupi.

 

nguva yekungenisa

kubva kumhashu kupinza HttpUser, basa, pakati

 

kirasi MushandisiBehaviour(HttpUser):

    wait_time = pakati (5, 10)

 

    @basa

    def get_cars(self):

        self.client.get('/cars')

    

    @basa

    def get_planes(self):

        self.client.get('/planes')

 

Uyu muenzaniso wekutanga wekushandisa Rocust kurodha bvunzo API. Kutanga, tinogadzira kirasi UserBehaviour, iyo inogona kupiwa chero zita rakakodzera asi inofanira kuwedzera HttpUser. HttpUser ndiyo kirasi inotarisira kusimudzira vashandisi vakawanda vechokwadi kuti vaite mabasa atinotsanangura mu UserBehaviour kirasi. 

Basa rinotsanangurwa nekushongedza nzira ne @basa mugadziri. Tinewo basa rinonzi pakati() izvo zvinotitendera kuti titaure huwandu hwemasekonzi ekumirira tisati taita rinotevera basa. Iwe unogona kuona kuti isu takapa huwandu hwe5 kusvika gumi masekonzi kune iyo mukodhi yedu. 

Kuti umhanye kodhi, ita shuwa kuti uchiri munharaunda yako chaiyo. Kana iyo yawakagadzira iri kushandiswa nesevha inoshandira iyo API, vhura terminal nyowani, shandura dhairekitori rako kune rako purojekiti dhairekitori, uye shandisa iyo chaiyo nharaunda yawakagadzira. Iwe unogona kuwana iwo murairo we activating a virtual environment above. Zvino, isa iri pazasi rairo mune yako terminal.

 

$ mhashu -f locust_test.py

 

Iwe unofanirwa kuona chimwe chinhu seichi:

API Load Testing 2

Nekumisikidza, web interface yemhashu inowanikwa pa http://localhost/8089. Kana iwe ukashanyira webhusaiti, iwe unofanirwa kuona iyo interface seizvi:

API Load Testing 3

Kubva pane iyo interface, tinogona kutsanangura huwandu hwevashandisi, spawn rate (vashandisi vakagadzirwa pasekondi), uye Host. Iwe unogona kuwana kero yemugamuchiri wako nekutarisa iyo terminal iri kushanda sevha. Kwedu, iri pachiteshi 5000. Paunodzvanya pa Tanga kutamba, iwe uchaunzwa neiyo interface pazasi.

API Load Testing 4

Izvi zvinokuratidza mametrics akasiyana anobatsira senge nhamba yezvikumbiro zvakundikana, avhareji yenguva yekukumbira, nguva shoma yekukumbira, zvikumbiro pasekondi, zvichingodaro. Kana uchinge wagutsikana nezvaunoona, unogona kudzvanya bhatani rekumisa. 


Kunze kwe Statistics tab, pane a machati tab inoratidza zvimwe ruzivo muchimiro chegirafu, semufananidzo uri pazasi.

Pane zvikumbiro zvakazara pasekondi girafu, girafu yenguva yekupindura, uye nhamba yevashandisi girafu, vose vakarongera nguva. Uchishandisa magirafu, unogona kuona kuti vangani vashandisi vanogamuchirwa kwenguva yakatarwa yekupindura, kana iwe unogona kutarisa machati ako kwenguva isingaperi yekupindura zvisinei nenhamba iri kuwedzera yevashandisi, uye mamwe maonero akadaro. Kana iwe uchida kugovera izvi Stats nemumwe munhu, unogona kudhawunirodha mushumo kubva ku Dhawunorodha data Tab.

Kupedza...

Rodha yekuyedza API yako chinhu chakakosha mukuita kwako budiriro, saka ita shuwa kuti inosanganisirwa mudhizaini yako kutenderera. Nenzira, iwe unogona zvakare kuita mamwe marudzi ekuyedza mitoro nekusiyanisa kukosha kwenhamba yevashandisi uye chiyero che spawn. 

Kana iwe uchida kuita spike bvunzo, tsanangura kukosha kukuru (taura 2000) yehuwandu hwevashandisi, uyezve kukosha kwakakura zvakaenzana kune yako spawn rate (500 semuenzaniso). Izvi zvinoreva kuti mumasekonzi mana, unenge uine vese vashandisi mazana maviri vakagadzirwa uye nekuwana yako yekupedzisira. Muedzo wekushushikana uchave wakafanana, asi uine kukosha kwakaderera kweyero yekubereka. Kuti uwane zvese zvaunogona kuita, tarisa Mhashu mapepa