Igbeyewo fifuye API Pẹlu Eṣú

Igbeyewo fifuye API Pẹlu Eṣú

Idanwo Iwoye API Pẹlu Eṣú: Intoro

O ṣee ṣe pe o ti wa ni ipo yii tẹlẹ: o kọ koodu ti o ṣe nkan, aaye ipari fun apẹẹrẹ. O ṣe idanwo aaye ipari rẹ nipa lilo Postman tabi Insomnia, ati pe ohun gbogbo ṣiṣẹ daradara. O kọja lori aaye ipari si olupilẹṣẹ ẹgbẹ-ẹgbẹ, ti o jẹ lẹhinna API ati ki o ran awọn ohun elo. Ṣugbọn lẹhinna, API kuna nigbati awọn olumulo lo app naa.

Eyi le jẹ ipo didanubi nla lati wa, kii ṣe mẹnuba idiyele fun iṣowo kan. O jẹ idi ti awọn olupilẹṣẹ sọfitiwia ṣe ọpọlọpọ awọn idanwo lori awọn eto sọfitiwia lati rii daju pe wọn ṣe bi o ti ṣe yẹ. Awọn API ko yatọ. Ṣaaju imuṣiṣẹ, o yẹ ki o ṣe o kere ju awọn idanwo iṣẹ ati awọn idanwo aabo.

Awọn idanwo iṣẹ le ṣe akojọpọ si awọn idanwo iṣẹ ṣiṣe ati awọn idanwo fifuye. Awọn idanwo iṣẹ ṣiṣe jẹ ohun ti o maa n lo Postman tabi Insomnia fun. Wọn rii daju pe awọn iṣẹ API rẹ bi o ti nireti. Awọn idanwo fifuye, ni ida keji, ṣe aniyan diẹ sii pẹlu bii API rẹ ṣe n ṣiṣẹ pẹlu lilo gidi-aye ati fifuye tente oke, ati pe iyẹn ni nkan ti nkan yii jẹ nipa. Jẹ ki a wo awọn idanwo fifuye ni awọn alaye diẹ sii.

Kini Igbeyewo Fifuye API?

Idanwo fifuye API jẹ iru awọn olupilẹṣẹ idanwo ti o lo lati ṣe adaṣe deede ati fifuye tente oke lori awọn aaye ipari. Iru idanwo yii jẹ ki awọn olupilẹṣẹ ṣe iṣiro iṣẹ ṣiṣe gidi-aye ti API ṣaaju ki o to ran lọ. O ṣe iranlọwọ fun wọn lati ṣe idanimọ agbara iṣẹ ṣiṣe ti o pọju ti eto kan, awọn igo ti eyikeyi, ati ibajẹ iṣẹ. Awọn idanwo fifuye API nigbagbogbo ni ṣiṣe nipasẹ ṣiṣẹda awọn olumulo foju ati lẹhinna lilo wọn lati ṣe idanwo iṣẹ ṣiṣe API ni igbakanna. 

Awọn idanwo fifuye API ṣe iwọn awọn metiriki bii akoko idahun, awọn olumulo nigbakan, awọn oṣuwọn igbejade, awọn ipele iṣamulo awọn orisun, Akoko Itumọ Laarin Ikuna(MTBF), Akoko Itumọ Lati Ikuna (MTTF), ati bẹbẹ lọ. Gbogbo awọn metiriki wọnyi le ṣee lo lati pinnu bi API ṣe n ṣe daradara.

Orisi ti fifuye Igbeyewo

Ọpọlọpọ awọn oriṣi ti idanwo fifuye, ọkọọkan pẹlu awọn ọran lilo rẹ. Jẹ ki a wo diẹ ninu wọn.

Igbeyewo fifuye: Eyi ni fọọmu ipilẹ ti idanwo fifuye kan. O nlo lati ṣe iṣiro iṣẹ ṣiṣe ti eto kan (ninu ọran yii, API) labẹ ẹru deede ati fifuye tente oke ti a reti.

Idanwo Wahala: Eyi ni a lo lati ṣe iṣiro iṣẹ ṣiṣe ti eto labẹ ẹru iwuwo pupọ. Ibi-afẹde ti idanwo yii ni lati rii boya eto kan ba pada lẹhin ikuna, ati bi o ṣe pẹ to lati ṣe bẹ. Awọn fifuye ti wa ni maa ramped soke laiyara titi ti o koja awọn agbara ti awọn eto.

Idanwo Spike: Eyi jẹ diẹ ti o jọra si idanwo aapọn, ayafi ti ẹru iwuwo ti lo lojiji, ni idakeji si gbigbera laiyara. Iru idanwo yii jẹ aṣoju ohun ti o ṣẹlẹ nigbati iwasoke lojiji ba wa ni apapọ nọmba awọn olumulo tabi awọn alejo, tabi nigbati ikọlu DDOS wa lori ẹrọ rẹ.

Idanwo Rirọ: Idanwo yii ko dabi awọn miiran loke. O fi eto rẹ labẹ 80% (tabi nibe) ti ẹru deede ati fi silẹ ni ṣiṣe fun akoko gigun, sọ awọn wakati 12 si 14. Iru idanwo yii pinnu bi eto kan ṣe gbẹkẹle lori akoko.

Ṣe idanwo Awọn API Rẹ Pẹlu Eṣú

Awọn olupilẹṣẹ ni iraye si ọpọlọpọ awọn aṣayan fun idanwo fifuye awọn API wọn. Diẹ ninu awọn irinṣẹ idanwo fifuye ti o wọpọ jẹ Gatling, JMeter, ati Eṣú. A yoo dojukọ Eṣú ni nkan yii.

Eṣú jẹ irinṣẹ idanwo fifuye orisun orisun-orisun Python ti awọn ile-iṣẹ giga bii Google, Microsoft, ati Awọn ere Riot lo lati ṣe idanwo awọn API wọn. Ninu nkan yii, a yoo ṣe afihan bi o ṣe le ṣe idanwo idanwo API kan. 

Fun ikẹkọ yii, Emi yoo ṣẹda API ti o rọrun pẹlu Flask. O le tẹle pẹlu mi tabi kan ṣẹda API rẹ pẹlu Node, tabi eyikeyi ilana ti o ni itunu pẹlu.

awọn ibeere

Python 3

Eto ati fifi sori ẹrọ

Ni akọkọ, o nilo lati ṣeto agbegbe foju kan lori PC rẹ ki o ko ba dabaru agbegbe Python agbaye rẹ. Lati ṣe bẹ, ṣiṣe awọn aṣẹ wọnyi. Ṣe akiyesi pe awọn aṣẹ wọnyi kan si ebute Windows kan.

$ mkdir ise agbese

$ cd / d ọna \ si \ ise agbese

$ Python -m venv venv

$ venv\ Awọn iwe afọwọkọ\ mu ṣiṣẹ

 

Ni akọkọ, a ṣẹda a ise agbese liana. Lẹhinna a yipada itọsọna wa lọwọlọwọ si ise agbese. Lẹhinna a ṣẹda ati mu ṣiṣẹ agbegbe foju kan fun Python inu itọsọna yẹn. 

Bayi, a yoo lọ si fifi sori ẹrọ Flask(a yoo lo o lati ṣẹda awọn endpoints lati wa ni fifuye idanwo) ati Ewúrẹ ara rẹ. 

 

Lati fi Flask sori ẹrọ, ṣiṣẹ. Rii daju pe o wa ninu ise agbese ibi ti o ṣẹda a foju ayika.

$ pip fi sori ẹrọ filasi

 

Lati fi Eṣú sori ẹrọ, ṣiṣe

$ pip fi eṣú sori ẹrọ

 

Ni kete ti iyẹn ti ṣe, tẹ awọn aṣẹ wọnyi jade. Rii daju pe o wa ninu rẹ ise agbese liana nigba ti o ba ṣe eyi.

$ daakọ nul __init__.py

$ mkdir app

$ daakọ nul app \ app.py

$ daakọ nul app \ __init__.py

 

Awọn aṣẹ yii ṣẹda diẹ ninu awọn faili eyiti a yoo lo lati ṣẹda awọn aaye ipari wa nipa lilo Flask. O tun le ṣẹda awọn faili wọnyi nipa lilo aṣawakiri faili rẹ nipasẹ ọna. Ṣugbọn kini igbadun ninu iyẹn? Ni kete ti o ti ṣe iyẹn, daakọ koodu isalẹ sinu ohun elo.py

lati agbewọle flask Flask, jsonify, ìbéèrè

app = Flask (__name__)

awọn awoṣe_ọkọ ayọkẹlẹ = [

  {'brand': 'Tesla', 'awoṣe': 'Awoṣe S'}

]

 

ofurufu_models = [

  {'brand': 'Boeing', 'awoṣe': '747'}

]

 

@app.route('/ọkọ ayọkẹlẹ')

def get_cars():

  pada jsonify(car_models)

@app.route('/ofurufu')

def get_planes():

  pada jsonify(plane_models)

ti __name__ == '__akọkọ__':

    app.run(debug=Otitọ)  

 

Awọn loke koodu ni a ọna gba_ọkọ ayọkẹlẹ lo lati gba akojọ kan ti ọkọ ayọkẹlẹ burandi ati awọn won si dede, ati gba_ofurufu lo lati gba akojọ kan ti ofurufu burandi ati awọn awoṣe wọn. Fun a fifuye igbeyewo yi endpoint, a nilo a run app.py. Lati ṣe eyi ṣiṣe aṣẹ ni isalẹ.

$ Python ona \ si \ app.py

Ni kete ti o ba ṣiṣẹ yẹn, o yẹ ki o wo nkan bii eyi:

Idanwo fifuye API 1

Ti o ba da URL naa lati ebute naa ki o tẹ paati or awọn ọkọ ofurufu lẹhin ti /, o yẹ ki o ni anfani lati wo awọn data nibẹ. Sibẹsibẹ, ibi-afẹde wa ni lati ṣe idanwo aaye ipari pẹlu eṣú, kii ṣe pẹlu ẹrọ aṣawakiri. Nitorinaa jẹ ki a ṣe iyẹn. Ṣiṣe aṣẹ atẹle ni gbongbo rẹ ise agbese liana.

 

$ daakọ nul locust_test.py

 

Eyi ṣẹda faili 'locust_test.py' ninu gbongbo rẹ ise agbese liana. Ni kete ti o ti ṣe iyẹn, ṣii faili naa ki o lẹẹmọ ni koodu isalẹ. A yoo ṣe alaye rẹ laipẹ.

 

gbe wọle akoko

lati agbewọle eṣú HttpUser, iṣẹ-ṣiṣe, laarin

 

ihuwasi Olumulo kilasi(HttpUser):

    wait_time = laarin (5, 10)

 

    @iṣẹ-ṣiṣe

    def get_cars(ara):

        self.client.get ('/ paati')

    

    @iṣẹ-ṣiṣe

    def get_planes(ara):

        self.client.get ('/ofurufu')

 

Eyi jẹ apẹẹrẹ ipilẹ ti lilo Eṣú lati ṣe idanwo API kan. Ni akọkọ, a ṣẹda kilasi kan Iwa olumulo, eyiti o le fun ni eyikeyi orukọ ti o yẹ ṣugbọn o gbọdọ fa siwaju HttpUser. HttpUser ni kilasi ti o gba itoju ti instantiating ọpọ foju awọn olumulo lati gbe jade awọn iṣẹ-ṣiṣe ti a pato ninu awọn Iwa olumulo kilasi. 

A-ṣiṣe kan pato nipa iseona ọna kan pẹlu awọn @iṣẹ-ṣiṣe ohun ọṣọ. A tun ni iṣẹ ti a npe ni laarin() ti o gba wa laaye lati pato kan ibiti o ti aaya lati duro fun ṣaaju ṣiṣe awọn tókàn-ṣiṣe. O le rii pe a yan iwọn ti 5 si awọn aaya 10 fun iyẹn ninu koodu wa. 

Lati ṣiṣẹ koodu naa, rii daju pe o tun wa ni agbegbe foju rẹ. Ti eyi ti o ṣẹda ba jẹ lilo nipasẹ olupin ti n ṣiṣẹ API, ṣii ebute tuntun kan, yi ilana rẹ pada si rẹ ise agbese liana, ki o si mu awọn foju ayika ti o ṣẹda. O le wa aṣẹ fun mimuuṣiṣẹpọ agbegbe foju kan loke. Bayi, tẹ aṣẹ ti o wa ni isalẹ sinu ebute rẹ.

 

$ eṣú -f locust_test.py

 

O yẹ ki o wo nkan bi eleyi:

Idanwo fifuye API 2

Nipa aiyipada, oju opo wẹẹbu eṣú wa ni http://localhost/8089. Ti o ba ṣabẹwo si oju opo wẹẹbu, o yẹ ki o wo wiwo bi eleyi:

Idanwo fifuye API 3

Lati wiwo, a le pato nọmba awọn olumulo, oṣuwọn spawn (awọn olumulo ti a ṣẹda fun iṣẹju kan), ati Gbalejo. O le gba adirẹsi ti agbalejo rẹ nipa ṣiṣe ayẹwo ebute nibiti olupin n ṣiṣẹ. Ninu ọran wa, o wa ni ibudo 5000. Nigbati o ba tẹ lori Bẹrẹ gbigbo, o yoo wa ni gbekalẹ pẹlu awọn wiwo ni isalẹ.

Idanwo fifuye API 4

Eyi fihan ọ ni ọpọlọpọ awọn metiriki iwulo gẹgẹbi nọmba awọn ibeere ti o kuna, akoko apapọ fun ibeere kan, akoko to kere julọ fun ibeere kan, awọn ibeere fun iṣẹju keji, ati bẹbẹ lọ. Ni kete ti o ba ni itẹlọrun pẹlu ohun ti o rii, o le tẹ bọtini iduro naa. 


Yato si Statistics taabu, nibẹ ni a shatti taabu ti o fihan diẹ sii alaye ni irisi aworan kan, bii aworan ni isalẹ.

Nibẹ ni a lapapọ ibeere fun keji awonya, aworan akoko idahun, ati nọmba ti awọn olumulo awonya, gbogbo gbìmọ lodi si akoko. Lilo awọn aworan naa, o le pinnu iye awọn olumulo ni itẹwọgba fun akoko idahun ti o wa titi, tabi o le ṣe akiyesi awọn shatti rẹ fun akoko idahun igbagbogbo laibikita nọmba awọn olumulo ti n pọ si, ati awọn oye miiran bii iyẹn. Ti o ba fẹ pin awọn wọnyi Awọn iṣiro pẹlu elomiran, o le gba a Iroyin lati awọn Ṣe igbasilẹ data taabu.

Lati pari...

Ṣiṣayẹwo fifuye API rẹ jẹ iṣẹ ṣiṣe to ṣe pataki ninu ilana idagbasoke rẹ, nitorinaa rii daju pe o ti dapọ si eto apẹrẹ rẹ. Nipa ọna, o tun le gbe awọn iru idanwo fifuye miiran nipa yiyipada awọn iye fun nọmba awọn olumulo ati oṣuwọn spawn. 

Ti o ba fẹ ṣe idanwo iwasoke, pato iye nla kan (sọ 2000) fun nọmba awọn olumulo, ati lẹhinna iye ti o tobi deede fun oṣuwọn spawn rẹ (500 fun apẹẹrẹ). Eyi tumọ si pe ni iṣẹju-aaya 4, iwọ yoo ni gbogbo awọn olumulo 2000 ti o ṣẹda ati wọle si awọn aaye ipari rẹ. Idanwo wahala yoo jẹ iru, ṣugbọn pẹlu iye kekere pupọ fun oṣuwọn spawn. Lati wa ohun gbogbo ti o le ṣe, ṣayẹwo Eṣú iwe