Kuyesa kwa API Katundu Ndi Dzombe

Kuyesa kwa API Katundu Ndi Dzombe

Kuyesa kwa API Katundu Ndi Dzombe: Intro

Mwinamwake mudakhalapo kale izi: mumalemba kachidindo kamene kamachita chinachake, mapeto mwachitsanzo. Mumayesa mapeto anu pogwiritsa ntchito Postman kapena Insomnia, ndipo zonse zimayenda bwino. Mumadutsa kumapeto kwa kasitomala-mbali wopanga, yemwe ndiye amadya API ndikutumiza application. Koma ndiye, API imalephera pamene ogwiritsa ntchito pulogalamuyi.

Izi zitha kukhala zokwiyitsa kwambiri kukhalamo, osatchulapo zodula pabizinesi. Ichi ndichifukwa chake opanga mapulogalamu amayesa mayeso osiyanasiyana pamakina apulogalamu kuti awonetsetse kuti azichita momwe amayembekezera. Ma API sali osiyana. Musanatumizidwe, muyenera kuchita mayeso ocheperako komanso kuyesa chitetezo.

Mayesero a kagwiridwe ka ntchito atha kugawidwa m'magulu a mayeso a magwiridwe antchito ndi mayeso a katundu. Kuyesa magwiridwe antchito ndizomwe mumagwiritsa ntchito Postman kapena Insomnia. Amawonetsetsa kuti API yanu imagwira ntchito momwe mukuyembekezera. Mayesero a katundu, kumbali ina, akukhudzidwa kwambiri ndi momwe API yanu imagwirira ntchito ndi kugwiritsidwa ntchito kwenikweni kwa dziko lapansi ndi kulemera kwakukulu, ndipo ndizomwe nkhaniyi ikunena. Tiyeni tiwone zoyezetsa katundu mwatsatanetsatane.

Kodi API Load Testing ndi chiyani?

Kuyesa katundu wa API ndi mtundu wa oyesa kuyesa omwe amagwiritsa ntchito kuti ayesere bwino komanso nsonga zapamwamba pamapeto. Kuyesa kotereku kumalola opanga kuwunika momwe API ikugwirira ntchito isanatumizidwe. Zimawathandiza kuzindikira kuchuluka kwa magwiridwe antchito a dongosolo, zopinga ngati zilipo, komanso kuwonongeka kwa magwiridwe antchito. Mayeso a API nthawi zambiri amapangidwa popanga ogwiritsa ntchito ndikuwagwiritsa ntchito kuyesa magwiridwe antchito a API nthawi imodzi. 

Mayeso a API amayezera ma metric monga nthawi yoyankhira, ogwiritsa ntchito nthawi imodzi, kuchuluka kwa zowerengera, magawo ogwiritsira ntchito, Mean Time Between Failure(MTBF), Mean Time To Failure(MTTF), ndi zina zotero. Ma metric onsewa atha kugwiritsidwa ntchito kudziwa momwe API ikuchitira.

Mitundu Yakuyesa Katundu

Pali mitundu ingapo ya kuyezetsa katundu, iliyonse ili ndi zochitika zake. Tiyeni tione zina mwa izo.

Kuyesa Katundu: Uwu ndiye mtundu woyambira woyeserera katundu. Imagwiritsidwa ntchito kuwunika momwe kachitidwe kachitidwe (panthawiyi, API) ili pansi pa katundu wamba komanso kuchuluka kwakukulu komwe kukuyembekezeka.

Kuyesa Kupsinjika: Izi zimagwiritsidwa ntchito poyesa momwe dongosololi likugwirira ntchito pansi pa katundu wolemera kwambiri. Cholinga cha mayesowa ndikuwona ngati dongosolo limachira pambuyo polephera, komanso kuti limatenga nthawi yayitali bwanji kuti litero. Katunduyo nthawi zambiri amawunikidwa pang'onopang'ono mpaka kupitilira mphamvu zadongosolo.

Kuyesa kwa Spike: Izi ndizofanana pang'ono ndi kuyezetsa kupsinjika, kupatula katundu wolemetsa agwiritsidwa ntchito mwadzidzidzi, mosiyana ndi kukweza pang'onopang'ono. Mayesero amtunduwu amayimira zomwe zimachitika pakakhala kuchuluka kwadzidzidzi pakati pa ogwiritsa ntchito ambiri kapena alendo, kapena pakakhala kuwukira kwa DDOS pamakina anu.

Kuyesa kwa Soak: Mayesowa ndi osiyana ndi ena omwe ali pamwambapa. Imayika makina anu pansi pa 80% (kapena pamenepo) ya katundu wabwinobwino ndikusiya kuti igwire ntchito kwa nthawi yayitali, nenani maola 12 mpaka 14. Mayesero amtunduwu amatsimikizira momwe dongosolo limakhalira lodalirika pakapita nthawi.

Kwezani Kuyesa Ma API Anu Ndi Dzombe

Madivelopa ali ndi mwayi wosankha njira zingapo zoyesera ma API awo. Zida zina zoyezera katundu ndi Gatling, JMeter, ndi Locust. Tikambirana za dzombe m'nkhaniyi.

Locust ndi chida choyezera katundu chomwe chili ndi python chomwe chimagwiritsidwa ntchito ndi makampani apamwamba monga Google, Microsoft, ndi Riot Games kuyesa ma API awo. M'nkhaniyi, tikuwonetsani momwe mungayikitsire mayeso a API. 

Paphunziroli, ndipanga API yosavuta yokhala ndi Flask. Mutha kutsata nane kapena kungopanga API yanu ndi Node, kapena chilichonse chomwe mungakhale nacho.

zofunika

Python 3

Kukhazikitsa & Kuyika

Choyamba, muyenera kukhazikitsa malo enieni pa PC yanu kuti musasokoneze chilengedwe chanu cha Python. Kuti muchite izi, yendetsani malamulo otsatirawa. Dziwani kuti malamulowa amagwira ntchito pa Windows terminal.

$ mkdir polojekiti

$ cd / d njira \ ku \ polojekiti

$ python -m venv venv

$ venv\Scripts\activate

 

Choyamba, tinapanga a polojekiti directory. Kenako tinasintha chikwatu chathu chapano kukhala polojekiti. Kenako tidapanga ndikuyambitsa malo enieni a Python mkati mwa bukhulo. 

Tsopano, tipitilira kukhazikitsa Botolo(tidzagwiritsa ntchito kupanga ma endpoints kuti ayesedwe) ndi Dzombe yokha. 

 

Kuti muyike Flask, thamangani. Onetsetsani kuti muli mu polojekiti komwe mudapanga malo enieni.

$ pip install botolo

 

Kuti muyike Locust, thamangani

$ pip kukhazikitsa dzombe

 

Izi zikachitika, lembani malamulo otsatirawa. Onetsetsani kuti muli m'manja mwanu polojekiti directory mukachita izi.

$kopera __init__.py

$ mkdir app

$kopera nul app\app.py

$kopera nul app\__init__.py

 

Malamulowa amapanga mafayilo ena omwe tidzagwiritse ntchito popanga mapeto athu pogwiritsa ntchito Flask. Mutha kupanganso mafayilowa pogwiritsa ntchito fayilo yanu yofufuza mwa njira. Koma chosangalatsa ndi chiyani pamenepo? Mukachita izi, lembani kachidindo pansipa pulogalamu.py

kuchokera ku flask import Flask, jsonify, pempho

app = Botolo (__name__)

magalimoto_models = [

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

]

 

ndege_models = [

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

]

 

@app.route('/cars')

def get_cars():

  kubwerera jsonify(car_models)

@app.route('/planes')

def get_planes():

  return jsonify(plane_models)

ngati __name__ == '__ main__':

    app.run(debug=Zowona)  

 

Khodi yomwe ili pamwambapa ili ndi njira kupeza_magalimoto ankakonda kupeza mndandanda wa mtundu wa magalimoto ndi zitsanzo zawo, ndi pezani_ndege ankakonda kupeza mndandanda wa mitundu ya ndege ndi zitsanzo zawo. Kuti tithe kuyika mayeso kumapeto, tiyenera kuyendetsa app.py. Kuti muchite izi yesani lamulo ili pansipa.

$ python njira\to\app.py

Mukamaliza kuchita izi, muyenera kuwona chinthu chonga ichi:

Kuyesa kwa API Load 1

Ngati mukopera ulalo kuchokera ku terminal ndikulemba magalimoto or ndege pambuyo pa /, muyenera kuwona zomwe zili pamenepo. Komabe, cholinga chathu ndikuyesa mapeto ndi dzombe, osati ndi msakatuli. Ndiye tiyeni tichite zimenezo. Thamangani lamulo lotsatira muzu wanu polojekiti lowongolera.

 

$kopera nul locust_test.py

 

Izi zimapanga fayilo ya 'locust_test.py' muzu wanu polojekiti directory. Mukamaliza kuchita izi, tsegulani fayiloyo ndikuyika pama code pansipa. Tifotokoza posachedwa.

 

nthawi yoitanitsa

kuchokera kwa dzombe lolowera HttpUser, ntchito, pakati

 

class UserBehaviour(HttpUser):

    wait_time = pakati (5, 10)

 

    @ntchito

    def get_cars(self):

        self.client.get('/cars')

    

    @ntchito

    def get_planes(self):

        self.client.get('/planes')

 

Ichi ndi chitsanzo chofunikira chogwiritsa ntchito Locust kutsitsa kuyesa API. Choyamba, timapanga kalasi UserBehaviour, yomwe ingatchulidwe dzina lililonse loyenerera koma iyenera kuwonjezereka HttpUser. HttpUser ndi gulu lomwe limasamalira kulimbikitsa ogwiritsa ntchito angapo kuti agwire ntchito zomwe timafotokozera UserBehaviour m'kalasi. 

Ntchito imatchulidwa ndi kukongoletsa njira ndi @ntchito wokongoletsa. Tilinso ndi ntchito yotchedwa pakati () zomwe zimatilola kutchula masekondi angapo kuti tidikire tisanagwire ntchito yotsatira. Mutha kuwona kuti tidapereka masekondi 5 mpaka 10 pazomwe zili mu code yathu. 

Kuti mugwiritse ntchito code, onetsetsani kuti mudakali m'malo omwe muli. Ngati yomwe mudapanga ikugwiritsidwa ntchito ndi seva yomwe ikugwiritsa ntchito API, tsegulani terminal yatsopano, sinthani chikwatu chanu kukhala chanu polojekiti directory, ndi yambitsani malo enieni omwe mudapanga. Mutha kupeza lamulo loyambitsa chilengedwe chapamwamba pamwambapa. Tsopano, lowetsani lamulo ili pansipa mu terminal yanu.

 

$ dzombe -f dzombe_test.py

 

Muyenera kuwona zinthu monga izi:

Kuyesa kwa API Load 2

Mwachikhazikitso, mawonekedwe a tsamba la dzombe ali pa http://localhost/8089. Mukapita patsambali, muyenera kuwona mawonekedwe ngati awa:

Kuyesa kwa API Load 3

Kuchokera pamawonekedwe, titha kufotokozera kuchuluka kwa ogwiritsa ntchito, kuchuluka kwa spawn (ogwiritsa ntchito sekondi imodzi), ndi Host. Mutha kupeza adilesi ya omwe akukulandirani poyang'ana malo omwe seva ikugwira ntchito. Kwa ife, ili pa doko 5000. Mukadina Yambani kuyamba, mudzaperekedwa ndi mawonekedwe pansipa.

Kuyesa kwa API Load 4

Izi zimakuwonetsani ma metrics osiyanasiyana othandiza monga kuchuluka kwa zopempha zomwe zalephera, nthawi yapakati pa pempho, nthawi yochepa yopempha, zopempha pamphindikati, ndi zina zotero. Mukakhutitsidwa ndi zomwe mukuwona, mutha kudina batani loyimitsa. 


Kuwonjezera pa Statistics tab, pali matchati tabu yomwe ikuwonetsa zambiri mudziwe mu mawonekedwe a graph, monga chithunzi pansipa.

Pali zopempha zonse pa graph yachiwiri, graph nthawi yoyankha, ndi chiwerengero cha ogwiritsa ntchito graph, onse anakonza chiwembu chotsutsana ndi nthawi. Pogwiritsa ntchito ma graph, mutha kudziwa kuchuluka kwa ogwiritsa ntchito omwe amavomerezedwa pakanthawi yokhazikika, kapena mutha kuwona ma chart anu nthawi zonse kuyankha ngakhale kuchuluka kwa ogwiritsa ntchito, ndi zidziwitso zina zotere. Ngati mukufuna kugawana izi ziwerengero ndi munthu wina, mukhoza kukopera lipoti ku Tsitsani deta tabu.

Pomaliza...

Katundu kuyesa API yanu ndi ntchito yofunika kwambiri pakukula kwanu, choncho onetsetsani kuti ikuphatikizidwa pakupanga kwanu. Mwa njira, mutha kuchitanso mitundu ina yoyeserera potengera kuchuluka kwa ogwiritsa ntchito komanso kuchuluka kwa ma spawn. 

Ngati mukufuna kuyesa spike, tchulani mtengo waukulu (nenani 2000) pa kuchuluka kwa ogwiritsa ntchito, ndiyeno mtengo wofananawo pamlingo wanu wobadwa (500 mwachitsanzo). Izi zikutanthauza kuti mumasekondi anayi, mukhala kuti onse ogwiritsa ntchito 4 apanga ndikufikira kumapeto kwanu. Kuyesa kupsinjika kudzakhala kofanana, koma ndi mtengo wotsika kwambiri wa kuchuluka kwa spawn. Kuti mudziwe zonse zomwe mungachite, onani Zombe zolembedwa